Skip to main content
Glama

English | 繁體中文(台灣) | 繁體中文(香港) | 简体中文


marsnme.com — Claude.md is for context. MarsNMe is for continuity.

Your AI tools should know you — not start from scratch every time. When Perplexity helps you decide, Claude should remember why. When Cursor ships a feature, Warp should know the context. That's not context sharing. That's continuity.

Most AI memory tools help AI remember you. MarsNMe helps you and your AI remember each other — across sessions, across tools, over time.

An agent-agnostic, LLM-agnostic memory backend for MCP-compatible tools.

curl -fsSL https://marsnme.com/install.sh | bash

MarsNMe on Glama npm version MCP Registry LobeHub npm downloads License GitHub stars

Real user story

I use Cursor to code, Warp to deploy, Perplexity to research, and Claude Code to manage my vault. Before MarsNMe, every tool started blank — I had to re-explain my project, my preferences, my decisions every single session. Now my AI across all four tools knows what we decided yesterday, what we tried last week, and why we chose this architecture over that one. It's not about injecting context. It's about having a relationship that compounds over time.

— Leo, MarsNMe creator (3 months of daily use across 4 AI tools)

Related MCP server: mesh-memory

Available MCP Tools (16)

Tool

Description

insert_memory

Store short-term memory

list_memories

List recent memories

search_memories

Semantic search via Jina embeddings

recall

Long-term chunk recall — ~80-char preview per match

get_summary

Medium excerpt (~300 chars) of a chunk by ID

get_full

Complete text of a long-term chunk by ID

memory_ingest

Ingest long-term insight chunks

dream_ingest

Dream-mode long-term ingestion

session_boot

Start a session with context pre-load

session_close

Close session, summarize, auto-promote expiring memories

health_check

Coverage, expiry, conflict diagnostics

reload_source_registry

Refresh source whitelist at runtime

demote_memory

Demote a memory to lower priority

soft_forget

Soft-delete a memory

explain_memory

Explain a memory's provenance

batch_promote

Promote expiring short-term memories to long-term

What's new in 0.3.0

  • 3-layer recall: recall returns ~80-char previews, then get_summary (~300 chars), then get_full (complete). Avoids token-dumping full chunks on every recall; drill down only when a preview looks relevant.

  • Body-to-body note handoff: session_close(to=<body>, note=...) leaves a note that session_boot(body=<target>) delivers and marks read — one agent can hand context to another.

  • Auto batch_promote on session_close: closing a session automatically promotes soon-expiring short-term memories (48h window, up to 5) to long-term storage — no Hermes or manual promote needed.

  • grok + draft sources: added to the source whitelist so the Grok body and Draft lifecycle hooks can write memories natively.

  • CoCo-only tool surface: PRD tools (save_prd, get_prd, list_prds, score_prd, spawn_to_linear) removed from the Supabase gateway — idea/PRD/task execution now lives in Draft. MarsNMe = CoCo soul memory only.

MarsNMe

Why MarsNMe?

Most AI memory tools help AI remember you. MarsNMe helps you and your AI remember each other.

MarsNMe

Typical memory tool

Philosophy

Mutual continuity — human + AI both grow

AI-side context injection only

Agent support

Any MCP-compatible client

Often client-specific

Memory tiers

Short-term (TTL) + long-term (semantic)

Usually one layer

Profiles

Unlimited isolated profiles via MCP_PROFILE

Single-user only

Data ownership

Your own Supabase — zero vendor lock-in

Vendor-hosted

Search

Jina v3 semantic search (1024-dim pgvector)

Keyword or basic similarity

Self-hostable

✅ Full control

Rarely

When MarsNMe is the right fit

  • You use multiple AI assistants (Claude, Cursor, Perplexity, Warp, custom agents) and want shared memory across all of them

  • You want AI that remembers your projects, preferences, and decisions across sessions without re-explaining

  • You care about data sovereignty — your memories stay in your own Supabase project

  • You're building an AI agent and need a production-ready memory backend with semantic recall

When it might not be the right fit

  • You only need single-session context (just use the system prompt)

  • You want fully managed, zero-config memory with no setup (try a hosted solution)

Runtime packages

Folder

Runtime

Who uses it

marsnme-supabase/

Supabase + Jina gateway (@marsnme/mcp-gateway)

Mars Group dogfood — Proxmox CT101 (CoCo / Toto soul memory)

marsnme-cf/

Cloudflare Workers + D1 + Vectorize

Self-host template; not the Proxmox deploy path

marsnme-supabase/cloudflare-routing-worker/

mcp.marsnme.com routing proxy

Public setup wizard → upstream gateway

Product split (Mars Group): Idea / PRD / task execution → Draft + draft-mcp. MarsNMe Supabase = CoCo soul memory only (recall, session boot/close, ingest, lifecycle). As of @marsnme/mcp-gateway v0.3.0, PRD MCP tools (save_prd, get_prd, list_prds, score_prd, spawn_to_linear) are removed from the Supabase gateway — use Draft for idea/PRD/task workflows.

Proxmox deploy: private MarsNMe-labdeploy/deploy-proxmox-ct101.sh or GitHub cd-selfhosted workflow. Not a single-script deploy like draft-mcp.

Repository Packages

Package

Description

marsnme-supabase/

Core MCP gateway — agent-agnostic memory backend (this package is published to npm as @marsnme/mcp-gateway)

marsnme-supabase/cloudflare-routing-worker/

Cloudflare Worker for mcp.marsnme.com — username-based MCP routing proxy with setup wizard

marsnme-cf/

Self-hosted MCP memory server on Cloudflare Workers + D1 + Vectorize (no Supabase needed)

Quick Setup (no install needed)

Go to mcp.marsnme.com/setup — create your personal MCP URL in 4 steps:

  1. Pick a username

  2. Enter your Supabase credentials (URL + anon key)

  3. Choose preferences

  4. Get your MCP URL: https://mcp.marsnme.com/your-name

Then add it to any MCP client (Claude, Cursor, Perplexity, Warp).

Self-hosted? Deploy marsnme-cf/ to your own Cloudflare account — no Supabase needed, uses D1 + Workers AI + Vectorize.


Before You Start (External Dependencies)

  1. Create a Supabase project (free plan is enough):

  2. Create a Jina API key (free tier available):

Quick Start (15-20 minutes)

For the fastest path, use the one-line installer: curl -fsSL https://marsnme.com/install.sh | bash

The manual path below follows the same tools-first flow as docs/onboarding-a-mcp-zero-to-recall.md and docs/onboarding-b-platform-skill-install.md.

  1. Clone repository:

git clone https://github.com/Marsmanleo/MarsNMe.git
cd MarsNMe
  1. Verify Node.js version (20+ required):

node --version
  1. Copy environment template:

cp .env.example .env
  1. Fill required values in .env:

    • SUPABASE_BASE_URL

    • SUPABASE_SERVICE_ROLE_KEY

    • JINA_API_KEY

  2. Run required Supabase migrations before first start:

    • Option A (recommended, Supabase CLI):

npx supabase db push --db-url "<your-supabase-db-connection-string>"
  • Note: --db-url must be the Postgres database connection string from Project Settings → Database → Connection string.

  • It is not the same as SUPABASE_BASE_URL (https://<project-ref>.supabase.co, REST API URL).

  • Use a role that can execute DDL on your target schemas.

  • On Supabase-hosted Postgres this is typically supabase_admin (not postgres).

  • Option B (Supabase Dashboard SQL Editor):

    1. Open SQL Editor.

    2. Ensure the vector extension is enabled first (Database → Extensions).

    3. Run migration files in filename order from supabase/migrations/:

      • 20260504052744_semantic_vector_dual_profile.sql

      • 20260513213800_memory_lifecycle_tracking.sql

      • 20260513222500_health_check_detect_conflicts_v2.sql

      • 20260517183000_provenance_audit_trail.sql

      • 20260517194000_memory_scope_agent_body_environment.sql

      • 20260517200500_forget_demote_mechanism.sql

      • 20260517223500_usage_cost_telemetry_light.sql

      • 20260517231000_memories_source_constraint_regex.sql

      • 20260517232000_source_registry_table.sql

  1. Start gateway:

    • MCP_PROFILE separates memory by agent or use case.

    • Use any profile name you want (for example: default, my-agent, profile-a).

    • Legacy built-in profile IDs coco and toto are still supported for compatibility.

    • If PORT is omitted, default port is profile-based (coco=18790, toto=18791, other profiles deterministic in 20000-29999).

MCP_PROFILE=profile-a PORT=18790 npx @marsnme/mcp-gateway
  1. Verify health:

curl -sS http://127.0.0.1:18790/health
  1. Connect your MCP client (next section), then run the first round-trip check.

Try In 30 Seconds (Docker, M1)

If you only want a local demo path, use Docker Compose.

One-line install (recommended):

curl -fsSL https://marsnme.com/install.sh | bash

Or manually:

  1. Set only the required key:

cp .env.example .env
# fill JINA_API_KEY in .env
  1. Start local stack:

docker compose up

This starts:

  • PostgreSQL + pgvector

  • SQL migrations from supabase/migrations/

  • PostgREST + rest-proxy

  • MarsNMe gateway (http://127.0.0.1:18790/mcp)

  1. Verify health:

curl -sS http://127.0.0.1:18790/health

M2 Cloudflare Tunnel Profile (Demo)

When you need a temporary public endpoint for remote AI tools:

docker compose --profile tunnel up

Expected output (from tunnel logs):

https://xxxx.trycloudflare.com

Get MCP endpoint:

docker compose --profile tunnel logs tunnel | grep -Eo 'https://[^ ]+trycloudflare.com' | head -n1
# append /mcp

Notes:

  • trycloudflare.com URL is temporary (demo only).

  • Local endpoint remains: http://127.0.0.1:18790/mcp.

  • For production/stable URL, use named tunnel (outside M2 scope).

  • Optional env:

    • MCP_TUNNEL_PROFILE (default coco)

    • MCP_TUNNEL_REQUIRE_BEARER (default false for demo convenience)

MCP Client Connection Guide

Local endpoint:

  • http://127.0.0.1:18790/mcp

If bearer auth is enabled (MCP_REQUIRE_BEARER=true), include:

  • Authorization: Bearer <your-token>

Claude Desktop

  1. Open claude_desktop_config.json (macOS default path: ~/Library/Application Support/Claude/claude_desktop_config.json).

  2. Add/update:

{
  "mcpServers": {
    "marsnme-cf": {
      "url": "http://127.0.0.1:18790/mcp"
    }
  }
}
  1. Restart Claude Desktop.

Cursor

  1. Open Cursor Settings and search for MCP.

  2. Add a new server:

    • Name: marsnme-cf

    • URL: http://127.0.0.1:18790/mcp

    • Headers: optional bearer header if enabled

  3. Reconnect MCP in Cursor.

Warp

  1. Open Settings > Agents > MCP servers.

  2. Add a server pointing to:

    • URL: http://127.0.0.1:18790/mcp

  3. Add optional bearer header if required, then reconnect.

Perplexity

  1. Open a Space in Perplexity and go to Space Settings.

  2. Under MCP servers, add:

    • URL: http://127.0.0.1:18790/mcp

  3. Save and start a new conversation in that Space.

Any MCP client (generic HTTP/SSE)

Use a streamable HTTP/SSE MCP entry:

{
  "marsnme-cf": {
    "url": "http://127.0.0.1:18790/mcp"
  }
}

First Connection Validation (Round Trip)

After client connection, verify this sequence once:

  1. tools/list:

curl -sS http://127.0.0.1:18790/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'
  1. insert_memory:

curl -sS http://127.0.0.1:18790/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"insert_memory","arguments":{"body":"quickstart memory check","source":"warp","session_id":"quickstart-smoke"}}}'
  1. recall:

curl -sS http://127.0.0.1:18790/mcp \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"recall","arguments":{"query":"quickstart memory check","limit":3}}}'

What this repository is

mars-memory-mcp is the core MCP gateway repository behind the public-facing MarsNMe release.
One codebase (marsnme-supabase/server.mjs) serves multiple profile schemas through MCP_PROFILE. This public repository currently keeps two built-in legacy profile IDs (coco, toto) for backward compatibility.

Current capabilities

  • MCP methods: initialize, notifications/initialized, tools/list, tools/call, ping

  • Profiles: configurable profile IDs (legacy built-ins: coco, toto)

  • Memory tools (16):

    • insert_memory (short-term memory)

    • list_memories

    • search_memories (Jina embedding search)

    • recall (~80-char preview) then get_summary (~300-char excerpt) then get_full (complete text)

    • memory_ingest / dream_ingest (long-term chunk ingestion)

    • session_boot / session_close (daily rhythm lifecycle; close auto-promotes expiring memories + supports body-to-body note handoff)

    • health_check (coverage, expiry, conflict diagnostics)

    • reload_source_registry (refresh source whitelist at runtime)

    • demote_memory / soft_forget / explain_memory (memory lifecycle management)

    • batch_promote (promote expiring short-term memories to long-term)

  • Sources: perplexity, cursor, warp, openclaw, hermes, draft, grok

  • OAuth-protected MCP endpoint (configurable by environment variables)

Memory model

  • Short-term memory table: <profile>.memories

  • Long-term memory table: <profile>.marsvault_chunks

  • Recommended usage:

    • Keep daily interaction context in insert_memory

    • Promote durable insights through ingest tools

Repository layout

  • marsnme-supabase/server.mjs — gateway entry point

  • marsnme-supabase/scripts/hermes_digest_runner.py — optional digest runner

  • marsnme-supabase/scripts/dream_runner.py — public self-host dream runner

  • marsnme-supabase/deploy/systemd/ — systemd templates

  • marsnme-supabase/deploy/phase2/ — build/deploy scripts

  • marsnme-supabase/deploy/phase3/smoke_gate.sh — smoke gate script

  • supabase/migrations/ — schema-as-code migrations

Environment setup

  1. Copy .env.example to your local .env (do not commit real secrets).

  2. Fill required values:

    • MCP_PROFILE (your profile identifier; this repo ships with legacy coco/toto)

    • SUPABASE_BASE_URL

    • SUPABASE_SERVICE_ROLE_KEY

    • JINA_API_KEY

  3. Optional security flags:

    • MCP_REQUIRE_BEARER=true

    • MCP_CLIENT_ID

    • MCP_CLIENT_SECRET

Optional Hermes digest runner

Hermes is optional and disabled by default:

  • HERMES_ENABLED=false

  • HERMES_DIGEST_MCP_URL

  • HERMES_DIGEST_MCP_BEARER_TOKEN

  • HERMES_DIGEST_ORIGIN

  • HERMES_DIGEST_SOURCE_DIR

Optional Dream Runner (self-host)

Dream Runner is public-friendly and can run without Hermes private environment:

  • DREAM_ENABLED=true

  • DREAM_MODE=lite|standard|pro

  • DREAM_DIGEST_MCP_URL

  • DREAM_MCP_BEARER_TOKEN (if required)

  • DREAM_ENABLE_ISSUE_SIGNALS, DREAM_ENABLE_REPO_SCAN, DREAM_ENABLE_SOUL_CONTEXT (optional overrides)

Quick start:

DREAM_ENABLED=true DREAM_MODE=lite python3 marsnme-supabase/scripts/dream_runner.py

If you run this repository with bundled defaults and no profile remapping, use coco and toto.

See docs/dream-runner-self-host.md for full configuration.

Onboarding

  • Zero-to-first-recall guide: docs/onboarding-a-mcp-zero-to-recall.md

  • Platform install guide (optional skill layer): docs/onboarding-b-platform-skill-install.md

Skill library

  • Skill index and update workflow: skills/README.md

  • Perplexity template: skills/perplexity/memory-daily-boot/SKILL.md

  • Cursor template: skills/cursor/memory-daily-boot/rule.mdc

  • Warp template: skills/warp/memory-daily-boot/prompt.md

Local run (from cloned repo)

MCP_PROFILE=profile-a npx @marsnme/mcp-gateway
MCP_PROFILE=profile-b npx @marsnme/mcp-gateway

Health endpoints:

  • GET /health

  • POST /mcp

Systemd deployment

Use marsnme-supabase/deploy/systemd/memory-mcp-gateway@.service with instances:

  • memory-mcp-gateway@profile-a.service

  • memory-mcp-gateway@profile-b.service

Recommended env files:

  • /opt/mars-memory-mcp/shared/.env

  • /opt/mars-memory-mcp/shared/.env.profile-a

  • /opt/mars-memory-mcp/shared/.env.profile-b

Release/deploy scripts

  1. Build artifact:

bash marsnme-supabase/deploy/phase2/build_release_artifact.sh
  1. Apply migrations with an explicit DDL-capable role:

npx supabase db push --db-url "<postgres://supabase_admin:<password>@<host>:5432/postgres>"
  1. Run pre-deploy schema gate (must pass before any service restart):

bash marsnme-supabase/deploy/phase2/pre_deploy_schema_gate.sh \
  --db-url "<postgres://supabase_admin:<password>@<host>:5432/postgres>" \
  --profiles coco,toto \
  --expected-role supabase_admin
  1. Run your platform-specific rollout/restart adapter.

    • This repository ships generic artifact + gate scripts; rollout adapters are environment-specific.

    • If schema gate exits non-zero, stop deployment and do not restart services.

  2. Smoke gate:

bash marsnme-supabase/deploy/phase3/smoke_gate.sh --spawn-local
  1. Automated npm + MCP Registry release (tag-driven):

    • Workflow: .github/workflows/publish-release.yml

    • Trigger: push tag v*

    • Gate: tag version must match marsnme-supabase/package.json version

    • Optional local Fish helper:

mrel patch
mrel minor
mrel major
mrel 0.1.2

The helper updates marsnme-supabase/package.json and server.json, commits, tags, and pushes.

Security and version control

  • Never commit .env, runtime tokens, or oauth-clients.json

  • Keep .env.example committed as the only environment template

  • Prefer bearer/OAuth for public exposure

License and policy

  • License: Apache-2.0 (LICENSE)

  • Notice: NOTICE

  • Trademark policy: TRADEMARK.md

  • Contribution guide: CONTRIBUTING.md

  • Contributor agreement: CLA.md

  • Release notes: CHANGELOG.md

Available Tools

16 tools
batch_promoteA

Automatically promote expiring short-term memories from demo.memories to permanent long-term storage (demo.marsvault_chunks). Scans for memories that will expire within the alert window, then chunks and ingests each one with vector embeddings. Use this to prevent valuable context from being lost when short-term memories expire. Supports dry-run mode to preview candidates before committing.

ParametersJSON Schema
NameRequiredDescriptionDefault
originNoOrigin marker tagged on all promoted chunks for traceabilitybatch-promote
dry_runNoWhen true, list candidate memories without actually promoting them. Use to preview before committing.
memory_idsNoExplicit list of short-term memory UUIDs to promote. When provided, auto-detection is skipped and only these IDs are processed.
max_promoteNoMaximum number of memories to promote in a single batch (default 10).
alert_window_hoursNoLook-ahead window in hours. Memories expiring within this window are candidates for promotion (default 48).

TDQS

A3.9/5.0
Behavior3/5

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

Describes the process (scans, chunks, ingests with embeddings) and dry-run mode. But lacks details on side effects (e.g., whether original memories are deleted), idempotency, and authorization requirements. With no annotations, the description should cover more behavioral traits.

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 relatively concise with four sentences, front-loaded with purpose. It covers key points without redundancy, though it could be slightly more 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?

For a tool with 5 parameters and no output schema, the description explains the overall workflow and use case. Lacks details on return format and partial failure behavior, but is reasonably complete for guiding an AI agent.

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 100%, so baseline is 3. Description adds context like 'dry-run mode to preview candidates' but does not significantly expand on parameter meanings beyond the schema. Adequate but not exceptional.

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 'promote' and the resources: from short-term memories (demo.memories) to permanent long-term storage (demo.marsvault_chunks). It distinguishes from siblings like 'demote_memory' by specifying automatic promotion of expiring memories.

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 says 'Use this to prevent valuable context from being lost when short-term memories expire' and mentions dry-run mode for preview. However, it does not explicitly state when not to use it or compare to alternatives like manual insertion.

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

demote_memoryA

Deprecate a long-term memory chunk in demo.marsvault_chunks, marking it as outdated or superseded. The chunk is not deleted — it is flagged so it no longer appears in recall results. Use this when information becomes incorrect, irrelevant, or is replaced by newer knowledge. Optionally link to the replacement chunk for traceability.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the long-term memory chunk to deprecate
deprecated_atNoCustom deprecation timestamp in ISO 8601 format. Defaults to now if omitted.
superseded_byNoUUID of the replacement chunk, if this memory is being superseded by updated content
deprecated_reasonYesWhy this memory is being deprecated (e.g. "superseded by newer architecture decision", "information confirmed incorrect")

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 carries full burden. It clearly states the chunk is not deleted but flagged, and that it no longer appears in recall results. It also mentions optional traceability via 'superseded_by'. However, it does not detail reversibility or side effects on other functions, which would elevate transparency further.

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 three sentences with no filler. First sentence states action and resource, second explains the behavioral effect (flagging vs deletion), third gives usage context and mentions optional linking. Every sentence contributes essential information.

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 there is no output schema and the operation is simple (deprecation with side effect of hiding from recall), the description covers the main behavioral outcome. It could be slightly stronger by explicitly stating the reversal or persistence of the chunk, but it is sufficient for a straightforward 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?

Schema description coverage is 100%, so the schema already provides baseline meaning for each parameter. The description adds value by explaining the purpose of 'superseded_by' ('link to replacement chunk for traceability') and indicating that 'deprecated_at' defaults to now. This contextualizes the optional parameters 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 action ('deprecate'), the resource ('long-term memory chunk in demo.marsvault_chunks'), and distinguishes it from deletion by explaining it flags the chunk instead. This fully differentiates it from sibling tools like soft_forget or delete 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 provides explicit context for when to use this tool ('when information becomes incorrect, irrelevant, or is replaced by newer knowledge') and explains the core behavioral difference (not deleted, flagged). It lacks explicit 'when not to use' or alternative tool names, 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.

dream_ingestA

Ingest a Hermes digest (periodic summary report) into demo.marsvault_chunks long-term memory. The content is automatically chunked into semantically meaningful segments and stored with vector embeddings for future recall. Use this for scheduled reports, daily digests, or any structured summary content that should be permanently available.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoTarget persona profile for storagedemo
dateNoDate for this digest in YYYY-MM-DD format. Defaults to today if omitted.
tagsNoTags for categorization (e.g. ["digest", "daily", "report"])
typeNoChunk type labeldigest
originNoOrigin marker identifying where this content came fromhermes-coco-digest
contentYesThe full text content of the digest to ingest. Will be automatically split into semantically coherent chunks.
sectionNoOptional section label prefix to tag all resulting chunks
visibilityNoAccess level: "private" = owner only, "shared" = cross-profile, "global" = system-wideprivate
source_fileNoLogical file path or identifier for the source of this digest (e.g. "hermes/daily/2026-06-10")
max_chunk_charsNoMaximum character length per chunk (default 1200). Larger values = fewer, longer chunks.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description carries full behavioral burden. It discloses automatic chunking, vector embeddings, and permanent storage, but does not mention side effects, permissions, or idempotency. 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?

Two sentences: first declares core action, second provides usage context. No filler, 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?

With 10 parameters and no output schema or annotations, description covers main purpose and chunking behavior. It could elaborate on chunk size or storage interaction, but schema handles param details. Adequate for the complexity.

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?

Input schema has 100% parameter coverage, so description adds context about chunking behavior (e.g., 'automatically split into semantically coherent chunks'). This complements the schema but does not deeply explain all parameters. Baseline 3 due to high schema coverage.

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?

Description clearly states it ingests a Hermes digest into long-term memory with chunking and embeddings. It provides usage examples like scheduled reports and daily digests, but does not explicitly distinguish from sibling tools like memory_ingest or insert_memory.

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 offers usage context ('scheduled reports, daily digests, or any structured summary content'), but lacks guidance on when not to use or alternatives. No explicit when-to-use vs. when-not-to-use.

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

explain_memoryA

Trace the full provenance of a long-term memory chunk in demo.marsvault_chunks — where it came from, how it was created, and what source material it was derived from. Returns the original source memory, session, tool, and timeline information. Use this to understand why a piece of knowledge exists or to verify its reliability.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the long-term memory chunk to explain

TDQS

A4.5/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 explains that the tool returns provenance information (original source memory, session, tool, timeline) and implies a read-only operation. 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?

The description is two sentences long, front-loads the main action, and every sentence provides value without redundancy. It is concise and structured effectively.

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 one parameter and no output schema, the description fully covers its purpose, usage, and return values. It is complete for an AI agent to understand selection and invocation.

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 description coverage is 100% for the single parameter 'id', which is described as a UUID. The description elaborates on how this parameter relates to the tool's purpose, adding context 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 'trace' and clearly identifies the resource 'long-term memory chunk' and its provenance. It distinguishes from sibling tools which handle creation, deletion, 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 Guidelines4/5

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

The description explicitly states when to use the tool: 'to understand why a piece of knowledge exists or to verify its reliability.' It does not provide explicit exclusions or alternatives, but the context of siblings implies when not to use.

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

get_fullA

Fetch the complete text of a long-term memory chunk by ID. Use sparingly after recall/get_summary when you need the full institutional memory entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the marsvault_chunks row

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided; description implies it's a heavy operation ('use sparingly') but doesn't explicitly state read-only, auth needs, 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 concise sentences with no extraneous information; front-loaded with purpose and usage guidance.

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?

Adequately covers purpose, usage, and parameter for a simple fetch tool; lacks return format but no output schema 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?

Schema fully describes the required 'id' parameter as UUID of the row, so description adds little beyond that.

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 fetches complete text of a long-term memory chunk by ID, distinguishing itself from siblings like recall or get_summary.

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 advises to use sparingly and only after recall/get_summary when full entry is needed, indicating appropriate context.

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

get_summaryA

Fetch a medium-length excerpt (~300 chars) of a long-term memory chunk by ID. Use after recall when a preview match looks relevant. For complete text, call get_full.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUUID of the marsvault_chunks row

TDQS

A4.5/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 the return size (~300 chars) and implies a safe, side-effect-free read operation. However, it doesn't explicitly state that it's read-only or other behavioral 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?

Two concise sentences with no wasted words. The first sentence defines the purpose, and the second provides usage guidance. Perfectly front-loaded.

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?

The tool is simple with one parameter, no output schema, and the description provides approximate output length and usage context. It references a sibling for complete text, making it complete for its low complexity.

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 100%, with the 'id' parameter described as 'UUID of the marsvault_chunks row' in the schema. The tool description adds no additional meaning beyond 'by ID', so it meets the baseline for high 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 it fetches a medium-length excerpt (~300 chars) of a long-term memory chunk by ID, using a specific verb 'Fetch' and resource 'excerpt'. This distinguishes it from the sibling 'get_full'.

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 to use 'after recall when a preview match looks relevant' and provides a clear alternative: 'For complete text, call get_full.' This guides when to use and when not to.

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

health_checkA

Run comprehensive demo memory system diagnostics. Returns chunk counts by type and visibility, identifies expiring short-term memories that need promotion, detects timeline coverage gaps, and finds conflicting or redundant long-term chunks. Use this regularly to maintain memory hygiene and before batch promotion.

ParametersJSON Schema
NameRequiredDescriptionDefault
gap_daysNoDetect long-memory timeline gaps over this day threshold
max_rowsNoSafety cap for total rows loaded per table
page_sizeNoPagination size for loading rows from Supabase
topic_limitNoMaximum topics to return for rich/sparse/volatile sections
alert_window_hoursNoAlert when short-term memories will expire within this window
conflict_scan_limitNoMaximum recent chunks scanned for conflict detection
conflict_match_countNoMaximum similar pair records to return from conflict detection
conflict_window_daysNoWithin this day window classify similar pairs as CONFLICT (otherwise SUPERSEDED)
forget_candidate_daysNoOnly suggest forget candidates older than this number of days
forget_candidate_limitNoMaximum forget candidates returned by health_check
conflict_neighbor_limitNoNearest neighbors compared per chunk in conflict detection
conflict_similarity_thresholdNoSimilarity threshold for conflict candidate detection

TDQS

A4.2/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 it is non-destructive (diagnostic) and outlines checks performed. Lacks specifics on output format or performance impact, but sufficient for understanding behavior.

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: first defines what the tool does, second provides usage guidance. No redundant information. Every sentence adds value and 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 12 parameters with full schema descriptions and no output schema, the description adequately explains return values (chunk counts, expiring memories, gaps, conflicts). Could mention pagination or output format, but overall complete for a diagnostic 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% with detailed parameter descriptions. Description adds no extra meaning beyond the schema; it focuses on tool purpose rather than parameter details. 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?

Description clearly states 'Run comprehensive demo memory system diagnostics' and lists specific outputs (chunk counts, expiring memories, timeline gaps, conflicts). Differentiates from sibling tools like batch_promote, demote_memory, etc., which are operational rather than diagnostic.

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 recommends regular use for memory hygiene and before batch promotion. Context implies diagnostic use case. Does not explicitly discuss when not to use or alternative tools, but 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.

insert_memoryA

Store a short-term demo memory into demo.memories (ephemeral context that auto-expires). Use this to capture observations, decisions, session notes, or any context worth remembering temporarily. Memories last 7 days by default unless expires_at is set. For permanent knowledge, use memory_ingest instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesThe memory content to store. Be specific and include relevant context — this text is used for semantic search later.
tagsNoCategorization labels for filtering (e.g. ["decision", "architecture", "bugfix"])
sourceYes
agent_bodyNoWhich persona/agent body this memory belongs to (e.g. "coco", "toto"). Defaults to the profile of this server.
expires_atNoCustom expiration time in ISO 8601 format (e.g. "2026-06-17T00:00:00Z"). Defaults to 7 days from now if omitted.
session_idYesUnique identifier for the current session/conversation. Used to group related memories together.
environmentNoDeployment environment label (e.g. "production", "staging"). Defaults to MCP_ENVIRONMENT if set.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description alone must disclose behavior. It reveals auto-expiration (7 days or custom), but does not mention idempotency, side effects, size limits, or what happens on insertion (e.g., duplicate handling). Adequate but not exhaustive.

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?

Four sentences, each adding value: purpose, use cases, default behavior, and alternative. Front-loaded with core action, no fluff. Ideal structure.

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?

No output schema exists, so description should explain what the tool returns (e.g., success indication, memory ID). It does not. Also missing details on error conditions or how inserted memories can be accessed later. Functional but incomplete for a 7-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 description coverage is 86%, so the schema already explains most parameters. The description adds minor context (e.g., body used for semantic search, agent_body defaults to server profile). This is baseline useful but not enhancing beyond 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 tool's purpose: storing short-term demo memories with auto-expiration. It specifies the resource (demo.memories) and provides specific use cases (observations, decisions, session notes). This effectively distinguishes it from siblings like memory_ingest for permanent storage.

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 advises to use for ephemeral context, and explicitly names memory_ingest as the alternative for permanent knowledge. It also explains default expiration and custom expires_at. Could compare more broadly with other siblings, but key guidance is strong.

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

list_memoriesA

List recent short-term memories from demo.memories in reverse chronological order — like a daily log or activity feed. Use this to review what was recently captured, check for duplicate memories before inserting, or browse recent activity. This is a time-ordered listing tool, not a search tool. For semantic search by meaning, use search_memories instead. For long-term knowledge retrieval, use recall. Returns memory body, source, creation time, and expiration status.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of memories to return (default 20)
sourceNo
unexpired_onlyNoWhen true (default), only return memories that have not yet expired. Set false to include expired entries.

TDQS

A4.4/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 that the tool returns memory body, source, creation time, and expiration status, and that it orders reverse chronologically with an option to filter unexpired memories. While it doesn't mention mutability or idempotency, listing tools are inherently read-only; still, the description adds useful behavioral context beyond the schema.

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 four sentences, each with a clear purpose: first defines the tool, second gives use cases, third distinguishes from alternatives, fourth lists return fields. No wasted words, front-loaded with key information.

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 helpfully lists return fields. It explains ordering and filtering. However, it doesn't describe pagination or the exact behavior of 'limit' (e.g., max items), nor how 'source' filter interacts with the data. Still, it's fairly complete for a simple listing 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 67% (limit and unexpired_only have descriptions). The tool description doesn't add extra meaning for parameters beyond what's in the schema, except it mentions 'expiration status' which relates to unexpired_only. It doesn't clarify how 'source' filter works but the enum values are self-explanatory. Adequate but doesn't significantly improve on 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 tool lists recent short-term memories in reverse chronological order, likening it to a daily log or activity feed. It distinguishes from siblings by specifying it's a time-ordered listing tool, not a semantic search tool (search_memories) or long-term retrieval (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?

Explicitly states when to use: to review recent captures, check for duplicates before inserting, or browse recent activity. Also explicitly says when not to use and provides alternatives: 'not a search tool' – use search_memories for semantic search, use recall for long-term knowledge retrieval.

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

memory_ingestA

Promote content into permanent long-term memory (demo.marsvault_chunks). Automatically chunks the input text, generates vector embeddings, and stores each segment for semantic recall. Use this to preserve important insights, decisions, patterns, or knowledge that should survive beyond the current session. This is the primary path from ephemeral to permanent memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate for this content in YYYY-MM-DD format. Defaults to today if omitted.
tagsNoCategorization tags (e.g. ["decision", "architecture"])
typeNoContent type label (e.g. "insight", "observation", "decision")insight
originNoOrigin markerwarp-demo
contentYesThe insight content to promote to long-term memory. Be specific and self-contained — future recall depends on the quality of this text.
sectionNoOptional section label prefix to organize chunks within the source
agent_bodyNoThe persona/body this memory belongs to (e.g. "coco", "toto")
visibilityNoAccess level: "private" = this profile only, "shared" = cross-profile readable, "global" = system-wideprivate
environmentNoEnvironment label (e.g. "production", "staging")
source_fileNoLogical file path or identifier for the source (e.g. "sessions/2026-06-10-session-notes")
source_toolNoThe tool/platform where this insight was originally captured
max_chunk_charsNoMaximum characters per chunk (default 1200). Adjust for finer or coarser granularity.
source_memory_idNoLink this promotion to a specific short-term memory ID (for traceability)
source_user_noteNoBrief note explaining why this memory was selected for promotion
source_session_idNoSession ID where this insight originated (for provenance tracking)

TDQS

A4.2/5.0
Behavior4/5

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

Discloses key behaviors: automatically chunks input, generates vector embeddings, stores each segment. No annotations exist, so the description carries full burden and does well.

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 the core action. Every sentence adds value without waste.

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 and 15 parameters with 100% schema coverage, the description covers the tool's purpose and process well. Could mention return value but not strictly necessary.

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 100%, so baseline is 3. The description adds minor extra context (e.g., 'Be specific and self-contained' for content) but does not significantly enhance 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?

Clearly states 'Promote content into permanent long-term memory' with specific verb and resource. Distinguishes from siblings by calling it 'the primary path from ephemeral to permanent 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 says to use for preserving important insights, decisions, patterns, or knowledge. Provides context but no explicit alternatives or when-not-to-use.

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

recallA

Semantic recall from long-term memory (demo.marsvault_chunks) using Jina embeddings. Returns preview snippets (~80 chars) per match by default — use get_summary for a longer excerpt or get_full for complete chunk text. Searches promoted insights, digests, and archived knowledge using vector similarity.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoWhich persona profile to search in (e.g. "coco", "toto", "system")demo
typeNoFilter by chunk type (e.g. "insight", "digest", "observation")
limitNoMaximum number of chunks to return (default 5)
queryYesNatural language query describing what knowledge you need. The system finds semantically similar chunks — describe the concept, not just keywords.
scopeNoSearch scope: "this_body" for current profile only, "all_bodies" for cross-persona searchthis_body
agent_bodyNoFilter to a specific persona/body scope
environmentNoFilter to a specific environment label
debug_explainNoWhen true, include token overlap details in each result for debugging relevance
include_globalNoInclude globally visible chunks in results
include_sharedNoInclude shared-visibility chunks in results
min_similarityNoMinimum cosine similarity threshold. Raise for higher precision, lower for broader recall.
include_privateNoInclude private chunks in results

TDQS

A4.2/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 implies a read-only search operation but does not explicitly state it is non-destructive, authorization requirements, or rate limits. The description is adequate but could be more explicit about safety.

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 zero waste, front-loaded with key information, and clearly structured.

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 12 parameters and no output schema, the description explains the output format and sibling tools but does not elaborate on filtering parameters like scope or body beyond the schema.

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 100%, so baseline is 3. The description does not add meaningful details to individual parameters 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 clearly states it performs semantic recall from long-term memory using embeddings, returns preview snippets, and explicitly distinguishes itself from sibling tools get_summary and get_full.

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 guidance on when to use this tool versus alternatives: 'use get_summary for a longer excerpt or get_full for complete chunk text.'

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

reload_source_registryA

Reload the source registry cache from demo.source_registry. Use this after adding or removing entries to refresh which sources are enabled for insert/search filtering. Only effective when running in registry mode (MCP_SOURCE_MODE=registry).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/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 specifies that the tool reloads a cache, implying a mutation. It does not detail side effects, such as whether the operation is destructive or what happens to in-flight operations. However, for a simple cache reload with no parameters, the description is 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?

The description is three sentences: the first states the action, the second gives usage guidance, and the third specifies a condition. It is front-loaded with the verb and object, and every sentence adds value without 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 tool's simplicity (no parameters, no output schema), the description covers the essential aspects: purpose, when to use, and a prerequisite. It could mention whether the operation is idempotent or what happens if not in registry mode, but overall it is sufficiently complete for effective 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?

The tool has zero parameters, so the input schema fully covers the interface. The description does not need to add parameter information, and baseline is 4. It provides context about the source and mode, which complements 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 tool's purpose: to reload the source registry cache from a specific source (demo.source_registry). It distinguishes itself from sibling tools, which focus on memory and ingestion operations, by specifying its unique function of refreshing enabled sources for insert/search filtering.

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 when to use the tool: after adding or removing entries to refresh which sources are enabled. It also provides a condition for effectiveness: only works when running in registry mode. While it does not explicitly mention when not to use it or suggest alternatives, 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.

search_memoriesA

Semantic search across short-term memories in demo.memories using Jina embeddings. Finds memories by meaning, not just keywords — ask a natural language question and get the most relevant matches. Use this to recall past decisions, find related context, or check if something was already discussed recently.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return
queryYesNatural language search query. Describe what you are looking for — semantic matching finds relevant results even without exact keywords.
scopeNoSearch scope: "this_body" searches only the current profile, "all_bodies" searches across all personas.this_body
sourceNo
agent_bodyNoFilter results to a specific persona/body (e.g. "coco", "toto")
environmentNoFilter results to a specific environment (e.g. "production", "staging")
min_similarityNoMinimum cosine similarity threshold for results (range -1 to 1). Higher values return fewer but more relevant matches.
unexpired_onlyNoWhen true (default), exclude expired memories from results

TDQS

A3.8/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 carry full behavioral burden. It states it's a semantic search but does not disclose any behavioral traits such as read-only nature, auth requirements, rate limits, or whether it modifies state. The description lacks details beyond the basic function, leaving the agent uninformed about important behavioral aspects.

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, front-loading the key function. Every sentence adds value, and there is no unnecessary information. It is well-structured for quick understanding.

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 8 parameters and no output schema, the description covers the core purpose and usage. It explains semantic matching and typical use cases. However, it lacks details on result format, sorting, or performance characteristics, which would be helpful for full context. Still, it is reasonably complete for a search 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 description coverage is 88%, so the baseline is 3. The description adds context for the 'query' parameter (emphasizing semantic matching) but does not significantly enhance meaning for other parameters. The 'source' parameter lacks any description in the schema or description text, slightly reducing clarity.

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's a semantic search tool for short-term memories using Jina embeddings, distinguishing it from keyword search and sibling tools like list_memories. It specifies the resource (demo.memories) and the action (semantic search by meaning), making the purpose 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?

The description provides clear context for when to use the tool: to recall past decisions, find related context, or check if something was already discussed. While it doesn't explicitly mention when not to use or alternatives, the usage hints are sufficient for an AI agent to decide.

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

session_bootA

Initialize a new demo session by loading identity, workflow context, and recent status from long-term memory. Also runs an expiry-focused health snapshot and records a heartbeat sign-in. Call this once at the start of every new conversation to restore continuity and awareness of pending work.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoRecipient body name — check for 便條 (handoff notes) addressed to this body and surface them at the top of boot output. Defaults to current profile (e.g. "coco") so any CoCo body receives CoCo-addressed notes without passing an explicit body.
moodNoOptional mood marker
topicNoOptional current focus topic for heartbeat
sourceYesSource tool identifier (e.g. "warp", "cursor", "perplexity") for provenance tracking
gap_daysNoDeprecated compatibility field; ignored by session_boot
body_nameNoOptional body/persona name (例如:大家姐、三哥、五妹、Toto)
user_nameNoOptional user/owner name for status recall (例如:Leo、Yvonne)
topic_limitNoDeprecated compatibility field; ignored by session_boot
recall_limitNoMaximum recall results per category (identity/workflow/status, default 5)
status_queryNoOptional override for status recall query
identity_queryNoOptional override for identity recall query
workflow_queryNoOptional override for workflow recall query
alert_window_hoursNoOptional override for expiry snapshot window (hours)

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description is the sole source of behavioral info. It describes actions (loading, health snapshot, heartbeat) but does not disclose side effects, idempotency, auth needs, or what happens if called multiple times. 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 well-structured sentences, front-loaded with action verbs. Every sentence provides essential information without redundancy. Highly concise and efficient.

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's complexity (13 parameters, no output schema), the description explains what the tool does but omits what it returns. There is no mention of output format or behavior, which is a gap for an initialization tool. Adequate but not fully 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%, so baseline is 3. The description does not add extra meaning beyond the schema for any parameter. For example, 'body' is described in schema as 'Recipient body name' and the description only mentions it indirectly. No added value.

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 initializes a demo session, loads identity/workflow/status from memory, runs a health snapshot, and records a heartbeat. It specifies the tool is for use at the start of a new conversation, distinguishing it from siblings like session_close and health_check.

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 says 'Call this once at the start of every new conversation', providing clear when-to-use guidance. Lacks explicit when-not-to-use or alternatives, but the context of siblings implies when to use other tools.

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

session_closeA

Save a demo session close summary before ending a conversation. The summary is stored as a short-term memory with 7-day retention, providing context for the next session boot. After saving, automatically promotes up to 5 soon-expiring short-term memories to long-term storage (alert window 48h); promote failures never fail the close. Include what was accomplished, what is still pending, and any important context for continuity.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoRecipient body name — leave a 便條 (handoff note) for another body, surfaced on that body next session_boot
moodNoOptional mood marker
noteNoShort context handoff for the recipient body (used with `to`)
sourceYes
topicsNoOptional topic list
summaryYesSession close summary

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: 7-day retention, automatic promotion of up to 5 soon-expiring memories with a 48h alert window, and that promote failures never fail the close. This adds significant 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 three sentences, front-loads the main purpose, then efficiently covers side effects and content guidelines. No wasted words.

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's complexity (6 params, no output schema), the description covers all essential aspects: what it does, when to use, side effects, and what to include. It's complete for agent decision-making.

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 description coverage is 83% (high), so baseline is 3. The description adds value by explaining the summary's content (accomplishments, pending items, context) and the promotion side effect, though parameter meanings are mostly covered by 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 tool saves a session close summary before ending a conversation, specifying the verb 'Save' and the resource 'session close summary'. It also distinguishes itself from siblings like session_boot by mentioning its role in context continuity and memory promotion.

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 to use this tool 'before ending a conversation' and guides what to include in the summary. While it doesn't state when not to use it or list alternatives, the context is clear from the sibling names and description.

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

soft_forgetA

Expire short-term memories in demo.memories early without permanently deleting them. Marked memories become invisible to search and list operations but remain in the database for audit purposes. Use this to clean up irrelevant or incorrect short-term memories before their natural expiration.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesArray of short-term memory UUIDs to expire. Up to 50 at a time.
reasonNoBrief explanation of why these memories are being forgotten (for audit trail)
forgotten_atNoCustom expiration timestamp in ISO 8601 format. Defaults to now if omitted.

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 carries full burden. It discloses key behaviors: marked memories become invisible to search/list, remain in database for audit. It does not cover auth requirements, rate limits, reversibility, or return values, but the core side effects are explained.

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 primary action and key behavioral outcomes, followed by usage guidance. Every sentence adds value with no redundancy or fluff.

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 tool with 3 parameters and no output schema, the description adequately covers purpose, behavior, and usage. However, it does not mention the return value or error handling, which would be helpful for an agent to fully understand the tool's outputs.

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 100%, so baseline is 3. The description does not add significant meaning beyond what the schema already provides for each parameter (ids, reason, forgotten_at). It only implicitly references them through the action 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 action ('Expire short-term memories early without permanently deleting them') and the affected resource (short-term memories in demo.memories). It explicitly differentiates from permanent deletion, setting it apart from sibling tools like 'demote_memory' or 'batch_promote'.

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 use case: 'Use this to clean up irrelevant or incorrect short-term memories before their natural expiration.' It implies when to use (cleaning) but does not mention when not to use or alternatives, though it's clear this is not for permanent deletion.

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. 8 tool updatesv0.1.3
    • Addedget_full
    • Addedget_summary
    • Changedinsert_memory1 field changed
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "perplexity",
        -  "cursor",
        -  "warp",
        -  "openclaw",
        -  "hermes"
        -]New value: +[
        +  "perplexity",
        +  "cursor",
        +  "warp",
        +  "openclaw",
        +  "hermes",
        +  "draft",
        +  "grok"
        +]
    • Changedlist_memories1 field changed
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "perplexity",
        -  "cursor",
        -  "warp",
        -  "openclaw",
        -  "hermes"
        -]New value: +[
        +  "perplexity",
        +  "cursor",
        +  "warp",
        +  "openclaw",
        +  "hermes",
        +  "draft",
        +  "grok"
        +]
    • Changedmemory_ingest1 field changed
      • changedInput schema / properties / source_tool / enum
        Previous value: -[
        -  "perplexity",
        -  "cursor",
        -  "warp",
        -  "openclaw",
        -  "hermes"
        -]New value: +[
        +  "perplexity",
        +  "cursor",
        +  "warp",
        +  "openclaw",
        +  "hermes",
        +  "draft",
        +  "grok"
        +]
    • Changedsearch_memories1 field changed
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "perplexity",
        -  "cursor",
        -  "warp",
        -  "openclaw",
        -  "hermes"
        -]New value: +[
        +  "perplexity",
        +  "cursor",
        +  "warp",
        +  "openclaw",
        +  "hermes",
        +  "draft",
        +  "grok"
        +]
    • Changedsession_boot2 fields changed
      • addedInput schema / properties / body
        Added value: +{
        +  "description": "Recipient body name — check for 便條 (handoff notes) addressed to this body and surface them at the top of boot output. Defaults to current profile (e.g. \"coco\") so any CoCo body receives CoCo-addressed notes without passing an explicit body.",
        +  "type": "string"
        +}
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "perplexity",
        -  "cursor",
        -  "warp",
        -  "openclaw",
        -  "hermes"
        -]New value: +[
        +  "perplexity",
        +  "cursor",
        +  "warp",
        +  "openclaw",
        +  "hermes",
        +  "draft",
        +  "grok"
        +]
    • Changedsession_close3 fields changed
      • addedInput schema / properties / note
        Added value: +{
        +  "description": "Short context handoff for the recipient body (used with `to`)",
        +  "type": "string"
        +}
      • changedInput schema / properties / source / enum
        Previous value: -[
        -  "perplexity",
        -  "cursor",
        -  "warp",
        -  "openclaw",
        -  "hermes"
        -]New value: +[
        +  "perplexity",
        +  "cursor",
        +  "warp",
        +  "openclaw",
        +  "hermes",
        +  "draft",
        +  "grok"
        +]
      • addedInput schema / properties / to
        Added value: +{
        +  "description": "Recipient body name — leave a 便條 (handoff note) for another body, surfaced on that body next session_boot",
        +  "type": "string"
        +}
  2. 11 tool updatesv0.1.1
    • Changedbatch_promote5 fields changed
      • changedInput schema / properties / alert_window_hours / description
        Previous value: -"Look-ahead window for expiring memories (hours)"New value: +"Look-ahead window in hours. Memories expiring within this window are candidates for promotion (default 48)."
      • changedInput schema / properties / dry_run / description
        Previous value: -"If true, list candidates without promoting"New value: +"When true, list candidate memories without actually promoting them. Use to preview before committing."
      • changedInput schema / properties / max_promote / description
        Previous value: -"Maximum memories to promote in one batch"New value: +"Maximum number of memories to promote in a single batch (default 10)."
      • changedInput schema / properties / memory_ids / description
        Previous value: -"Optional explicit memory IDs to promote (skips auto-detection)"New value: +"Explicit list of short-term memory UUIDs to promote. When provided, auto-detection is skipped and only these IDs are processed."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin marker for promoted chunks"New value: +"Origin marker tagged on all promoted chunks for traceability"
    • Changeddemote_memory4 fields changed
      • changedInput schema / properties / deprecated_at / description
        Previous value: -"Optional ISO timestamp override; defaults to now"New value: +"Custom deprecation timestamp in ISO 8601 format. Defaults to now if omitted."
      • changedInput schema / properties / deprecated_reason / description
        Previous value: -"Reason for deprecation"New value: +"Why this memory is being deprecated (e.g. \"superseded by newer architecture decision\", \"information confirmed incorrect\")"
      • changedInput schema / properties / id / description
        Previous value: -"Long-memory chunk id (UUID)"New value: +"UUID of the long-term memory chunk to deprecate"
      • changedInput schema / properties / superseded_by / description
        Previous value: -"Optional replacement chunk id (UUID) when this memory is superseded"New value: +"UUID of the replacement chunk, if this memory is being superseded by updated content"
    • Changeddream_ingest10 fields changed
      • addedInput schema / properties / body / description
        Added value: +"Target persona profile for storage"
      • changedInput schema / properties / content / description
        Previous value: -"Digest full text content"New value: +"The full text content of the digest to ingest. Will be automatically split into semantically coherent chunks."
      • changedInput schema / properties / date / description
        Previous value: -"Optional YYYY-MM-DD date override"New value: +"Date for this digest in YYYY-MM-DD format. Defaults to today if omitted."
      • addedInput schema / properties / max_chunk_chars / description
        Added value: +"Maximum character length per chunk (default 1200). Larger values = fewer, longer chunks."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin marker"New value: +"Origin marker identifying where this content came from"
      • changedInput schema / properties / section / description
        Previous value: -"Section label prefix"New value: +"Optional section label prefix to tag all resulting chunks"
      • changedInput schema / properties / source_file / description
        Previous value: -"Logical source path for digest"New value: +"Logical file path or identifier for the source of this digest (e.g. \"hermes/daily/2026-06-10\")"
      • changedInput schema / properties / tags / description
        Previous value: -"Optional tags list"New value: +"Tags for categorization (e.g. [\"digest\", \"daily\", \"report\"])"
      • changedInput schema / properties / type / description
        Previous value: -"Chunk type"New value: +"Chunk type label"
      • addedInput schema / properties / visibility / description
        Added value: +"Access level: \"private\" = owner only, \"shared\" = cross-profile, \"global\" = system-wide"
    • Changedexplain_memory1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Long-memory chunk id (UUID)"New value: +"UUID of the long-term memory chunk to explain"
    • Changedinsert_memory6 fields changed
      • changedInput schema / properties / agent_body / description
        Previous value: -"Optional body label (default inferred from source)"New value: +"Which persona/agent body this memory belongs to (e.g. \"coco\", \"toto\"). Defaults to the profile of this server."
      • changedInput schema / properties / body / description
        Previous value: -"Memory content text"New value: +"The memory content to store. Be specific and include relevant context — this text is used for semantic search later."
      • changedInput schema / properties / environment / description
        Previous value: -"Optional environment label (default from MCP_ENVIRONMENT)"New value: +"Deployment environment label (e.g. \"production\", \"staging\"). Defaults to MCP_ENVIRONMENT if set."
      • changedInput schema / properties / expires_at / description
        Previous value: -"Optional ISO timestamp override"New value: +"Custom expiration time in ISO 8601 format (e.g. \"2026-06-17T00:00:00Z\"). Defaults to 7 days from now if omitted."
      • changedInput schema / properties / session_id / description
        Previous value: -"Session trace id"New value: +"Unique identifier for the current session/conversation. Used to group related memories together."
      • changedInput schema / properties / tags / description
        Previous value: -"Optional tags list"New value: +"Categorization labels for filtering (e.g. [\"decision\", \"architecture\", \"bugfix\"])"
    • Changedlist_memories2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of memories to return (default 20)"
      • addedInput schema / properties / unexpired_only / description
        Added value: +"When true (default), only return memories that have not yet expired. Set false to include expired entries."
    • Changedmemory_ingest14 fields changed
      • changedInput schema / properties / agent_body / description
        Previous value: -"Optional body label for memory boundary"New value: +"The persona/body this memory belongs to (e.g. \"coco\", \"toto\")"
      • changedInput schema / properties / content / description
        Previous value: -"Insight full text content"New value: +"The insight content to promote to long-term memory. Be specific and self-contained — future recall depends on the quality of this text."
      • changedInput schema / properties / date / description
        Previous value: -"Optional YYYY-MM-DD date override"New value: +"Date for this content in YYYY-MM-DD format. Defaults to today if omitted."
      • changedInput schema / properties / environment / description
        Previous value: -"Optional environment label"New value: +"Environment label (e.g. \"production\", \"staging\")"
      • addedInput schema / properties / max_chunk_chars / description
        Added value: +"Maximum characters per chunk (default 1200). Adjust for finer or coarser granularity."
      • changedInput schema / properties / section / description
        Previous value: -"Section label prefix"New value: +"Optional section label prefix to organize chunks within the source"
      • changedInput schema / properties / source_file / description
        Previous value: -"Logical source path for insight content"New value: +"Logical file path or identifier for the source (e.g. \"sessions/2026-06-10-session-notes\")"
      • changedInput schema / properties / source_memory_id / description
        Previous value: -"Optional short-memory id to link promoted long-memory chunks"New value: +"Link this promotion to a specific short-term memory ID (for traceability)"
      • changedInput schema / properties / source_session_id / description
        Previous value: -"Optional source session id for provenance"New value: +"Session ID where this insight originated (for provenance tracking)"
      • changedInput schema / properties / source_tool / description
        Previous value: -"Optional source tool for provenance"New value: +"The tool/platform where this insight was originally captured"
      • changedInput schema / properties / source_user_note / description
        Previous value: -"Optional user note describing why this memory was promoted"New value: +"Brief note explaining why this memory was selected for promotion"
      • changedInput schema / properties / tags / description
        Previous value: -"Optional tags list"New value: +"Categorization tags (e.g. [\"decision\", \"architecture\"])"
      • changedInput schema / properties / type / description
        Previous value: -"Chunk type"New value: +"Content type label (e.g. \"insight\", \"observation\", \"decision\")"
      • addedInput schema / properties / visibility / description
        Added value: +"Access level: \"private\" = this profile only, \"shared\" = cross-profile readable, \"global\" = system-wide"
    • Changedrecall12 fields changed
      • changedInput schema / properties / agent_body / description
        Previous value: -"Optional body scope key; defaults to MCP_AGENT_BODY when present"New value: +"Filter to a specific persona/body scope"
      • addedInput schema / properties / body / description
        Added value: +"Which persona profile to search in (e.g. \"coco\", \"toto\", \"system\")"
      • changedInput schema / properties / debug_explain / description
        Previous value: -"Include query/hit token overlap debug details"New value: +"When true, include token overlap details in each result for debugging relevance"
      • changedInput schema / properties / environment / description
        Previous value: -"Optional environment filter"New value: +"Filter to a specific environment label"
      • addedInput schema / properties / include_global / description
        Added value: +"Include globally visible chunks in results"
      • addedInput schema / properties / include_private / description
        Added value: +"Include private chunks in results"
      • addedInput schema / properties / include_shared / description
        Added value: +"Include shared-visibility chunks in results"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of chunks to return (default 5)"
      • addedInput schema / properties / min_similarity / description
        Added value: +"Minimum cosine similarity threshold. Raise for higher precision, lower for broader recall."
      • changedInput schema / properties / query / description
        Previous value: -"Semantic recall query text"New value: +"Natural language query describing what knowledge you need. The system finds semantically similar chunks — describe the concept, not just keywords."
      • addedInput schema / properties / scope / description
        Added value: +"Search scope: \"this_body\" for current profile only, \"all_bodies\" for cross-persona search"
      • changedInput schema / properties / type / description
        Previous value: -"Optional chunk type filter"New value: +"Filter by chunk type (e.g. \"insight\", \"digest\", \"observation\")"
    • Changedsearch_memories7 fields changed
      • changedInput schema / properties / agent_body / description
        Previous value: -"Optional body scope key; defaults to source/body/env inference"New value: +"Filter results to a specific persona/body (e.g. \"coco\", \"toto\")"
      • changedInput schema / properties / environment / description
        Previous value: -"Optional environment filter"New value: +"Filter results to a specific environment (e.g. \"production\", \"staging\")"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of results to return"
      • addedInput schema / properties / min_similarity / description
        Added value: +"Minimum cosine similarity threshold for results (range -1 to 1). Higher values return fewer but more relevant matches."
      • changedInput schema / properties / query / description
        Previous value: -"Semantic search query text"New value: +"Natural language search query. Describe what you are looking for — semantic matching finds relevant results even without exact keywords."
      • addedInput schema / properties / scope / description
        Added value: +"Search scope: \"this_body\" searches only the current profile, \"all_bodies\" searches across all personas."
      • addedInput schema / properties / unexpired_only / description
        Added value: +"When true (default), exclude expired memories from results"
    • Changedsession_boot2 fields changed
      • addedInput schema / properties / recall_limit / description
        Added value: +"Maximum recall results per category (identity/workflow/status, default 5)"
      • addedInput schema / properties / source / description
        Added value: +"Source tool identifier (e.g. \"warp\", \"cursor\", \"perplexity\") for provenance tracking"
    • Changedsoft_forget3 fields changed
      • changedInput schema / properties / forgotten_at / description
        Previous value: -"Optional ISO timestamp override; defaults to now"New value: +"Custom expiration timestamp in ISO 8601 format. Defaults to now if omitted."
      • changedInput schema / properties / ids / description
        Previous value: -"Short-memory IDs (UUID) to expire immediately"New value: +"Array of short-term memory UUIDs to expire. Up to 50 at a time."
      • changedInput schema / properties / reason / description
        Previous value: -"Optional note for why these memories are being soft-forgotten"New value: +"Brief explanation of why these memories are being forgotten (for audit trail)"
  3. 14 tool updatesv0.1.0
    • First observedbatch_promote
    • First observeddemote_memory
    • First observeddream_ingest
    • First observedexplain_memory
    • First observedhealth_check
    • First observedinsert_memory
    • First observedlist_memories
    • First observedmemory_ingest
    • First observedrecall
    • First observedreload_source_registry
    • First observedsearch_memories
    • First observedsession_boot
    • First observedsession_close
    • First observedsoft_forget

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: short-term vs long-term memory, different operations (insert, list, search, recall, get, demote, batch promote, etc.). No two tools overlap in functionality.

Naming Consistency4/5

Most tools follow a verb_noun pattern (e.g., insert_memory, list_memories, batch_promote). The single-word 'recall' is a minor deviation, and 'get_full' is slightly vague, but overall consistent.

Tool Count4/5

16 tools is slightly above the typical 3-15 range, but the scope is well-defined for a memory management system. Each tool earns its place for short-term, long-term, session, and admin operations.

Completeness5/5

Covers the full lifecycle: insert short-term, promote to long-term, recall, retrieve, demote, expire, health checks, session boot/close. Only minor missing features like update or hard delete, which are design choices.

Maintenance

ActivitySlowing
ResponsivenessSyncing

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
    D
    maintenance
    A persistent long-term memory system that enables AI clients to store and recall notes, code, and research via semantic search. It utilizes Google Gemini embeddings and Supabase pgvector to provide a secure, searchable 'Second Brain' for MCP-compatible applications.
    19
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Self-hosted semantic memory for AI agents. Save worklogs, decisions, and notes via MCP, then recall them across sessions by meaning rather than keyword. Backed by Postgres + pgvector with local embeddings (multilingual-e5-base).
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent memory with semantic search for MCP-based AI agents, enabling them to store and recall information across sessions using vector embeddings.
    4
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent, semantically-searchable memory for AI agents using local PostgreSQL, pgvector, and Ollama embeddings, exposed via MCP with hybrid retrieval, knowledge graph, and auto-recall hook.
    2
    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/Marsmanleo/MarsNMe'

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