Skip to main content
Glama

MemHeaven

MemHeaven is a self-hosted remote MCP memory server for ChatGPT and other cloud AI agents.

It gives hosted AI clients searchable long-term memory you own, deployed on Cloudflare. MemHeaven is inspired by MemPalace's long-term-memory model while using a remote deployment shape for hosted clients.

Deploy on a Cloudflare Free account. No VM, no Docker, no database admin.

Free-tier limits apply; heavy usage may require paid Cloudflare usage.

Quick links: Quickstart · Getting started from zero · ChatGPT setup · Client compatibility · Security model · Behavior evals

What problem it solves

AI assistants are useful in the moment, but they often forget project context across chats, sessions, and tools.

Built-in memory features can help, but they are usually provider-owned and are not the same thing as an inspectable, searchable memory layer you control. Local-first memory tools are powerful too, but hosted clients like ChatGPT and other remote agents need a remote MCP server.

MemHeaven is for people who want:

  • searchable memory they own

  • inspectable and deletable stored context

  • continuity for coding agents and other AI workflows across sessions

  • a remote MCP deployment shape instead of a laptop-only setup

Related MCP server: tartarus-mcp

When MemHeaven fits

Choose MemHeaven when a hosted client or AI agent needs a searchable memory layer that persists outside the current chat:

  • ChatGPT needs to retrieve project decisions, preferences, notes, or other durable context across chats.

  • A remote MCP client cannot depend on a memory service running only on your laptop.

  • Separate users or workflows need tenant-scoped access to stored context.

  • You want to inspect, search, and delete the records held by your own deployment.

External memory, not a replacement for ChatGPT memory

MemHeaven does not change ChatGPT's built-in memory. It is a separate OAuth-protected MCP service that your client can call for context stored in your own deployment. There is no shared public MemHeaven instance: you operate the Worker, storage bindings, OAuth configuration, and access keys in your Cloudflare account.

ChatGPT long-term memory over remote MCP

If you want ChatGPT to use a searchable memory layer across chats without putting that memory in a shared third-party service, deploy MemHeaven in your own Cloudflare account and connect ChatGPT to your instance's /mcp endpoint. This external memory complements ChatGPT's built-in memory: you can inspect, search, and delete the records stored by your own deployment. See the ChatGPT setup and security model before connecting a client.

Why MemHeaven exists

  • AI assistants forget project context across chats and sessions.

  • Built-in memory is useful, but it is usually provider-owned and not an exact, searchable memory layer.

  • Local-first memory tools are powerful, but hosted clients need remote MCP.

  • Users want inspectable, searchable, deletable, portable memory.

  • Coding agents need continuity across sessions, editors, and tools.

Cloudflare Free account is enough for personal use

MemHeaven is designed for personal use and small trusted-group usage on Cloudflare-managed services.

  • Worker runs the HTTP server.

  • D1 stores relational metadata and indexes.

  • R2 stores drawer and diary bodies.

  • Vectorize powers semantic vector search.

  • Workers AI generates embeddings.

That means:

  • no VM

  • no Docker

  • no database admin

  • no long-running server process

Free-tier limits apply. MemHeaven does not promise unlimited free usage, enterprise uptime, or zero cost under every workload. Also note that some underlying Cloudflare services, especially Vectorize, have their own plan and usage constraints, so review the current Cloudflare pricing before a broad rollout.

Fastest happy path

npm install
cp wrangler.toml.example wrangler.toml
npm run init -- --base-url https://memheaven.<your-workers-subdomain>.workers.dev
npm run secrets:generate

npx wrangler secret put JWT_SIGNING_SECRET
npx wrangler secret put TOKEN_ENCRYPTION_KEY
npx wrangler secret put AUTH_KEY_PEPPER

export AUTH_KEY_PEPPER='<same AUTH_KEY_PEPPER value>'
npm run keygen -- --tenant personal --label "Personal"

npx wrangler deploy

Then connect your hosted client to:

https://memheaven.<your-workers-subdomain>.workers.dev/mcp

When the authorization page opens, paste the printed raw_key.

If you want the hand-holding version, use docs/GETTING_STARTED_FROM_ZERO.md.

Supported / expected clients

Client

Status

Notes

ChatGPT

Confirmed

Manually verified end-to-end for the /mcp URL, OAuth authorization flow, and a mempalace_status tool call

Claude.ai hosted connectors

Expected

Known exact hosted callback is allowlisted, but public docs do not expose the URL and end-to-end verification is still needed

Local IDE / CLI MCP clients

Expected

Generic localhost / 127.0.0.1 / [::1] loopback OAuth callbacks are already allowed

VS Code / GitHub Copilot MCP

Expected for local loopback; hosted OAuth unknown

Generic localhost callbacks are allowlisted; no exact vscode.dev hosted callback is currently pre-allowlisted

Grok / xAI

Expected with bearer/header auth

Treat as an Authorization: Bearer <OAuth access token> integration for /mcp, not as a hosted OAuth callback allowlist target

Perplexity / Abacus

Not applicable / Unknown

No confirmed hosted-client callback contract is allowlisted

Full details: docs/CLIENT_COMPATIBILITY.md

Agent memory instruction

Use MemHeaven conservatively for writes and proactively for reads when prior context matters. The MCP tools return their own detailed guidance, so the ChatGPT/custom-agent instruction can stay short.

Copy-paste instruction for agents:

Use MemHeaven for cross-session memory. When prior context may matter,
start with mempalace_wake_context if available; otherwise call
mempalace_status and follow its returned guidance. Do not mix work,
personal, or project scopes. Save only durable facts, decisions, and
preferences as concise plain text.

Full guide: docs/AGENT_MEMORY_PROTOCOL.md

Inspired by MemPalace

MemHeaven is inspired by MemPalace, the open-source local-first AI memory project that helped show how useful verbatim, searchable long-term memory can be for AI agents.

MemPalace made a strong case for keeping original context and organizing it in a navigable memory structure. MemHeaven explores a different deployment shape: remote MCP memory for hosted clients and trusted shared setups.

We see that as complementary to MemPalace’s on-device approach, not a replacement for it.

How it works at a high level

  • A Cloudflare Worker exposes OAuth endpoints and the authenticated /mcp endpoint.

  • Hosted AI clients connect over Streamable HTTP MCP.

  • D1 stores metadata, indexes, KG facts, tunnels, quotas, and audit rows.

  • R2 stores full verbatim drawer and diary bodies.

  • Workers AI generates embeddings.

  • Vectorize performs semantic search over chunked memory content.

  • Access keys gate authorization and map users to tenant-scoped memory.

Documentation

What is included

  • OAuth 2.1 + PKCE + dynamic client registration for ChatGPT-compatible remote MCP.

  • Access-key-gated consent page backed by stateless JWT auth artifacts.

  • Tenant-scoped drawer, diary, knowledge-graph, and tunnel storage.

  • Streamable HTTP MCP server using WebStandardStreamableHTTPServerTransport with per-request stateless bootstrap.

  • MemPalace-compatible mempalace_* tool surface, including adapted local-only tools.

  • Worker-safe semantic search using Workers AI embeddings + Vectorize + R2/D1 hydration.

  • Quota guardrails, redacted audit logging, smoke scripts, and local test coverage.

  • Synthetic memory behavior evals for retrieval, scope isolation, tenant isolation, and KG lifecycle regressions.

Memory behavior evals

Use the local eval harness before/after retrieval, wake-context, or KG behavior changes:

npm run eval:local
npm run eval:baseline

The optional remote smoke/eval skips safely unless configured with environment variables:

npm run eval:remote

See docs/BENCHMARKS.md. These are MemHeaven self-evals with synthetic fixtures, not MemHeaven-vs-MemPalace benchmark claims.

How this differs from upstream MemPalace

  • Preserves tool names, wings/rooms/drawers model, Memory Protocol, diary, KG, and tunnel concepts where practical.

  • Does not preserve Python runtime, ChromaDB internals, filesystem sync, or local desktop hook behavior.

  • Stores verbatim drawer and diary bodies in R2; D1 and Vectorize are indexes/metadata, not source of truth.

  • Uses short-lived JWT authorization codes plus access and refresh tokens with durable replay protection instead of server-side OAuth sessions.

Public routes

Method

Path

Purpose

GET

/

Service info and endpoint map

GET

/health

Binding/config/quota capability status

GET

/.well-known/oauth-authorization-server

OAuth authorization server metadata

GET

/.well-known/oauth-protected-resource

Protected resource metadata

GET

/.well-known/oauth-protected-resource/mcp

MCP protected resource metadata

POST

/register

Dynamic client registration

GET / POST

/authorize

Consent page and access-key entry

POST

/token

Authorization-code and refresh-token exchange

GET / POST / DELETE

/mcp

Authenticated Streamable HTTP MCP endpoint

Tools

Implemented MemPalace-compatible tools are grouped by domain below. Each tool is listed individually so directory indexes can extract its name and description.

Palace read tools

  • mempalace_status — Diagnostics and backend capabilities for memory-relevant chats.

  • mempalace_wake_context — Start a memory-relevant chat with bounded, privacy-scoped startup context.

  • mempalace_list_wings — List tenant-scoped wings and active drawer counts.

  • mempalace_list_rooms — List tenant-scoped rooms and active drawer counts for one wing or all wings.

  • mempalace_get_taxonomy — Return the current tenant-scoped wing and room taxonomy.

  • mempalace_get_aaak_spec — Return compact guidance for concise, readable memory notes.

  • mempalace_search — Search tenant-scoped drawers with hybrid semantic and lexical retrieval.

  • mempalace_check_duplicate — Check for exact or semantic duplicates before writing memory.

  • mempalace_get_drawer — Fetch one tenant-scoped drawer with bounded content and provenance.

  • mempalace_list_drawers — List active tenant-scoped drawers with optional wing and room filters.

Palace write tools

  • mempalace_add_drawer — Add durable drawer content and index it semantically.

  • mempalace_update_drawer — Update a drawer and reindex changed content or metadata.

  • mempalace_delete_drawer — Soft-delete a tenant-scoped drawer and remove its semantic index entries.

Diary tools

  • mempalace_diary_write — Write a concise diary entry and index it for scoped search.

  • mempalace_diary_read — Read recent diary entries with optional wing and room filters.

  • mempalace_diary_search — Search diary entries for one explicit agent with hard scope filters.

  • mempalace_diary_reindex — Backfill or refresh diary semantic index rows for the tenant.

Knowledge graph tools

  • mempalace_kg_query — Query tenant-scoped temporal knowledge-graph facts.

  • mempalace_kg_check — Run deterministic reliability checks for active KG conflicts and stale facts.

  • mempalace_kg_add — Add a tenant-scoped temporal knowledge-graph fact.

  • mempalace_kg_invalidate — Invalidate an exact tenant-scoped knowledge-graph fact.

  • mempalace_kg_timeline — Show the recent knowledge-graph timeline for an entity or all facts.

  • mempalace_kg_stats — Return tenant-scoped knowledge-graph statistics.

Navigation and graph tools

  • mempalace_traverse — Traverse the tenant shared-room graph and explicit tunnels.

  • mempalace_find_tunnels — Find tenant-scoped cross-wing shared rooms that behave like passive tunnels.

  • mempalace_graph_stats — Return tenant-scoped graph, shared-room, and explicit tunnel statistics.

  • mempalace_create_tunnel — Create an explicit tenant-scoped tunnel between wing and room locations.

  • mempalace_list_tunnels — List tenant-scoped explicit tunnels, optionally filtered by endpoint wing.

  • mempalace_delete_tunnel — Delete a tenant-scoped explicit tunnel by ID.

  • mempalace_follow_tunnels — Follow explicit tunnels connected to a wing and room location.

Deployment adaptations

  • mempalace_hook_settings — Return the configured save policy for this deployment.

  • mempalace_memories_filed_away — Return the latest tenant-scoped write filing status.

  • mempalace_reconnect — Return configured binding and index health.

  • mempalace_sync — Report that local filesystem and git sync is unsupported in hosted mode.

This MVP intentionally omits generic search / fetch aliases to avoid duplicating the primary MemPalace surface unless connector UX proves they are needed later.

All exposed MCP tools also advertise structured outputSchema metadata so ChatGPT and other MCP clients can better understand successful tool results from tools/list.

Prerequisites

  • Node.js 20+

  • npm 10+

  • Cloudflare account with Workers, D1, R2, Vectorize, and Workers AI enabled

  • wrangler authenticated against the target Cloudflare account

Quickstart

This is the fastest happy path for self-hosting MemHeaven.

  1. Install dependencies:

    npm install
  2. Choose the public base URL. This must be the origin only; do not include /mcp.

    • Workers.dev example: https://memheaven.<your-workers-subdomain>.workers.dev

    • Custom domain example: https://memory.example.com

    Pick the final public origin you actually plan to keep using. Changing the public origin later changes the OAuth issuer/client identity and will force hosted clients like ChatGPT to reconnect.

  3. Create the local Wrangler config:

    cp wrangler.toml.example wrangler.toml
  4. Create Cloudflare resources, patch wrangler.toml, and apply remote migrations:

    npm run init -- --base-url https://memheaven.<your-workers-subdomain>.workers.dev
  5. Generate valid secret material:

    npm run secrets:generate
  6. Upload the generated secrets:

    npx wrangler secret put JWT_SIGNING_SECRET
    npx wrangler secret put TOKEN_ENCRYPTION_KEY
    npx wrangler secret put AUTH_KEY_PEPPER
  7. Generate your first access key and sync ACCESS_KEYS_JSON:

    export AUTH_KEY_PEPPER='<same AUTH_KEY_PEPPER value>'
    npm run keygen -- --tenant personal --label "Personal"
  8. Validate locally, then deploy:

    npm run lint
    npm run typecheck
    npm test
    npm run build
    npx wrangler deploy --dry-run --outdir .tmp/wrangler-bundle
    npx wrangler deploy

Bootstrap Cloudflare resources

cp wrangler.toml.example wrangler.toml
npm run init -- --base-url https://memheaven.<your-workers-subdomain>.workers.dev

npm run init now:

  • checks Wrangler authentication

  • creates or reuses the D1 database, R2 bucket, and Vectorize index defined in local wrangler.toml

  • creates the required Vectorize metadata indexes (tenant_id, wing, room, kind, agent_name, topic)

  • patches the matching [[d1_databases]] block in wrangler.toml with the real D1 database_id

  • patches OAUTH_ISSUER, MCP_RESOURCE, and MCP_AUDIENCE when --base-url is provided

  • applies remote D1 migrations by default

wrangler.toml is intentionally gitignored because npm run init -- --base-url ... patches account-specific deployment values. Commit changes to wrangler.toml.example when defaults change.

Useful variants:

npm run init -- --dry-run
npm run init -- --skip-migrations
npm run init -- --base-url https://memory.example.com

After bootstrap, continue with secrets and access-key setup below. If you later bind a custom domain, rerun npm run init -- --base-url https://memory.example.com or manually update the three OAuth/MCP vars in wrangler.toml, then redeploy.

Configure secrets

Generate valid secrets:

npm run secrets:generate

This prints JSON with valid values for:

  • JWT_SIGNING_SECRET

  • TOKEN_ENCRYPTION_KEY

  • AUTH_KEY_PEPPER

Store them with Wrangler:

npx wrangler secret put JWT_SIGNING_SECRET
npx wrangler secret put TOKEN_ENCRYPTION_KEY
npx wrangler secret put AUTH_KEY_PEPPER

Generate an access key and automatically maintain the local git-ignored key store plus the Cloudflare ACCESS_KEYS_JSON secret:

export AUTH_KEY_PEPPER='<same AUTH_KEY_PEPPER value>'
npm run keygen -- --tenant personal --label "Personal"

By default this command:

  • appends the new hashed key record into .tmp/access-keys.json

  • uploads the full merged JSON array to the Worker secret ACCESS_KEYS_JSON using npx wrangler secret put

  • prints the new raw key once so you can paste it into the consent form

If you only want to update the local git-ignored file without touching Cloudflare yet:

export AUTH_KEY_PEPPER='<same AUTH_KEY_PEPPER value>'
npm run keygen -- --tenant personal --label "Personal" --no-sync

If you want a custom local file, it must stay under .tmp/:

export AUTH_KEY_PEPPER='<same AUTH_KEY_PEPPER value>'
npm run keygen -- --tenant personal --label "Personal" --file .tmp/my-access-keys.json --no-sync

The local file stores only hashed records, never raw keys. Save the printed raw key somewhere safe immediately because it is not written to disk.

Key rotation

  1. Run npm run keygen -- --tenant <tenant> --label <label> to append a new active record.

  2. Move clients to the new raw key.

  3. Mark the old record inactive or remove it from .tmp/access-keys.json.

  4. Re-upload the full JSON array with npx wrangler secret put ACCESS_KEYS_JSON if you edited the file manually.

Removing or deactivating a key invalidates existing access/refresh tokens for that key on the next /mcp or refresh-token check.

If you rotate AUTH_KEY_PEPPER, every existing raw access key becomes invalid because hashes are computed from raw_key + AUTH_KEY_PEPPER. After changing the pepper, regenerate all access keys and sync a fresh ACCESS_KEYS_JSON.

Apply D1 migrations manually (optional)

npm run init already applies remote migrations by default. If you skip them during bootstrap or need to rerun them later, Wrangler v4 defaults D1 commands to local mode, so use --remote explicitly for the deployed database.

npx wrangler d1 migrations apply memheaven_memory --remote

Multi-tenant access-key model

  • Each access key belongs to exactly one tenant_id.

  • tenant_id is derived only from the verified bearer token; MCP tools never accept tenant selection from tool input.

  • Every active key id must be globally unique across all tenants.

  • Every key hash must be unique; do not reuse the same raw key for multiple tenants.

  • Effective token scopes are bounded by the currently active key record, so narrowing a key's scopes also narrows future refreshed/access-token permissions.

  • D1 queries include tenant_id, R2 keys are prefixed with tenants/{tenant_id}/..., Vectorize queries filter by tenant_id, and Vectorize hits are rechecked against D1 before content is returned.

Add another tenant:

export AUTH_KEY_PEPPER='<same AUTH_KEY_PEPPER value>'
npm run keygen -- --tenant family-member --label "Family member"
npx wrangler deploy

The new command output prints a different raw_key. Give that key only to that tenant. Their drawers, diary entries, KG facts, and tunnels are isolated from the personal tenant.

Recommended operator checklist before sharing a second key:

  1. Create a brand-new raw key and unique id.

  2. Assign exactly one tenant_id.

  3. Keep only the minimum scopes needed (memory.read, memory.write).

  4. Deploy and validate that tenant A and tenant B cannot see each other's drawers, diary entries, KG facts, or tunnels.

Local validation

npm run lint
npm run typecheck
npm test
npm run build
npx wrangler deploy --dry-run --outdir .tmp/wrangler-bundle

Notes:

  • npm run build emits Worker build artifacts to .tmp/dist.

  • wrangler deploy --dry-run --outdir .tmp/wrangler-bundle validates the deploy bundle without changing production state.

Deploy

Before deploying, make sure:

  • wrangler.toml exists locally and npm run init -- --base-url <public-origin> has patched it with the right D1 id and OAuth/MCP URLs.

  • JWT_SIGNING_SECRET, TOKEN_ENCRYPTION_KEY, AUTH_KEY_PEPPER, and ACCESS_KEYS_JSON are set with npx wrangler secret put ....

  • The connector URL you plan to enter in your client is exactly <public-origin>/mcp.

npx wrangler deploy --dry-run --outdir .tmp/wrangler-bundle
npx wrangler deploy

ChatGPT setup

  1. Add the connector using https://memory.example.com/mcp or your workers.dev /mcp URL.

  2. ChatGPT performs OAuth discovery and dynamic client registration automatically.

  3. On /authorize, enter a valid raw_key printed by npm run keygen.

  4. Approve the connector.

  5. ChatGPT will use bearer tokens against /mcp.

  6. Optionally add the short agent memory instruction to ChatGPT's custom instructions so it knows when to start from MemHeaven.

ChatGPT has been manually verified end-to-end for MemHeaven's /mcp URL, OAuth authorization flow, and a mempalace_status tool call. That confirms the main hosted-client path without claiming that every ChatGPT plan or workspace supports custom MCP connectors.

Redirect URIs are intentionally restricted to documented ChatGPT and Claude callback contracts plus generic localhost loopback flows. Non-OAuth hosts can only work when they can call /mcp with Authorization: Bearer <token>.

Smoke scripts

OAuth discovery smoke:

npm run smoke:oauth -- --base https://your-domain.example

Authenticated MCP smoke:

export MEMHEAVEN_BEARER_TOKEN='<bearer-token>'
npm run smoke:mcp -- --base https://your-domain.example

Vector metadata reindex helper:

npm run reindex -- --base https://your-domain.example --dry-run
npm run reindex -- --base https://your-domain.example
npm run reindex -- --kind diary --base https://your-domain.example --dry-run
npm run reindex -- --kind all --base https://your-domain.example

Use the reindex helper if you created Vectorize metadata indexes after data had already been embedded and inserted. After upgrading an existing deployment to diary semantic search, run npm run init to ensure the agent_name and topic Vectorize metadata indexes exist, then run npm run reindex -- --kind diary --base https://your-domain.example to backfill existing diary entries from R2 into diary_chunks and Vectorize. Use --kind all when both drawer and diary vectors should be refreshed.

Troubleshooting

  • 401 invalid_token on /mcp: token expired, key was removed, or the bearer token is missing.

  • authorization failed / wrong key: make sure the raw key was generated with the same AUTH_KEY_PEPPER that is deployed as the Worker secret, and that npm run keygen synced the latest ACCESS_KEYS_JSON.

  • 406 Not Acceptable on /mcp: the client must send Accept: application/json, text/event-stream.

  • 503 from /health: a required secret or binding is missing or invalid.

  • Quota exceeded: wait for UTC reset or raise the configured per-tenant limits.

  • Search/index issues after metadata-index rollout: rerun npm run init to ensure metadata indexes, then rerun npm run reindex ...; use --kind diary or --kind all when diary semantic search was added after diary entries already existed.

  • Local browser OAuth on http://127.0.0.1/localhost: the /authorize CSRF cookie is intentionally non-Secure in local HTTP mode so the browser can return it on consent POST.

  • Immediate post-write semantic search may briefly return empty while Vectorize finishes indexing; retry shortly if a newly added drawer or diary entry is not yet searchable.

  • wrangler whoami looks unauthenticated under wrappers/custom HOME: check plain npx wrangler whoami in your normal shell before assuming the login is missing.

Tenant isolation smoke test

After adding a second tenant, validate isolation manually:

  1. Connect to ChatGPT with tenant A's raw key and add a unique drawer.

  2. Connect in a separate ChatGPT profile/session with tenant B's raw key.

  3. Confirm tenant B cannot find tenant A's unique phrase with mempalace_search.

  4. Confirm tenant B cannot fetch tenant A's drawer_id with mempalace_get_drawer.

  5. Repeat for diary/KG/tunnels if you use those features.

The service does not trust client-supplied tenant information; isolation comes from the verified bearer token and storage-layer tenant filters.

Limitations

  • No ChromaDB or local SQLite compatibility.

  • No local filesystem sync; mempalace_sync is intentionally unsupported in hosted mode.

  • Authorization codes are short-lived and single-use.

  • Refresh tokens rotate with replay detection. Removing or deactivating the backing access key still invalidates future token checks for that key.

  • Embeddings use @cf/baai/bge-small-en-v1.5, so long drawer bodies are chunked before indexing.

  • Vectorize dimensions are locked to the configured index (384 for the default MVP setup).

  • Hosted-client callback support stays narrow and contract-driven. Other clients may need explicit callback allowlist additions before they work end-to-end.

  • docs/GETTING_STARTED_FROM_ZERO.md

  • docs/CLIENT_COMPATIBILITY.md

  • docs/AGENT_MEMORY_PROTOCOL.md

  • docs/SECURITY.md

  • docs/PRODUCT_REQUIREMENTS.md

  • docs/IMPLEMENTATION_PLAN.md

  • docs/PROJECT_STATE.md

  • docs/DECISIONS.md

License

MIT. See LICENSE.

Available Tools

34 tools
mempalace_add_drawerA

Add a durable drawer as concise readable plain text or verbatim source content. Content is stored exactly as provided in the configured durable content store and indexed semantically; do not add an AAAK: prefix unless explicitly requested.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYesRoom inside the wing where this memory should be filed.
wingYesTenant-scoped organizational wing for this durable memory.
contentYesVerbatim source body or concise durable note to store and index.
added_byNoOptional agent or workflow label that created the drawer.
source_fileNoOptional provenance label for the source document or file.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roomYes
wingYes
chunksYes
reasonNo
successYes
drawer_idYes

TDQS

A4.2/5.0
Behavior4/5

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

The description adds behavioral context beyond the annotations by stating that content is stored exactly as provided and indexed semantically, and warns about the prefix. With annotations only indicating readOnly=false, this provides useful details about storage and indexing 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?

The description is two sentences, front-loaded with the core action, and every phrase earns its place. There is no redundancy or filler.

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

Completeness4/5

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

The tool has an output schema, so return values are already defined. The description covers the main purpose, storage behavior, and a content formatting caution. It does not discuss deduplication or when to use update instead, but those are covered by sibling tools and are not essential for a basic add operation.

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 descriptions already cover all parameters (100% coverage), so the description does not need to repeat definitions. It adds some nuance about content being 'concise readable plain text or verbatim source content', but this is similar to the schema's description and does not significantly enhance parameter understanding.

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

Purpose5/5

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

The description uses the verb 'Add' and identifies the resource as a 'durable drawer' with content, clearly distinguishing it from sibling tools like delete, update, or list. It also specifies the action's scope by mentioning storing and indexing content.

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: this tool is for adding new durable content, and it includes a specific usage instruction about not adding the AAAK prefix unless explicitly requested. However, it does not explicitly compare with alternatives such as mempalace_update_drawer or mempalace_check_duplicate, so exclusionary guidance is missing.

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

mempalace_check_duplicateA
Read-onlyIdempotent

Check for exact or semantic duplicates before writing new durable memory.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesCandidate drawer content to compare against existing tenant memory.
thresholdNoMinimum cosine similarity for a semantic duplicate match; higher is stricter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
matchesYes
is_duplicateYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the 'exact or semantic' distinction, which is useful, but does not disclose further behavioral details such as how matches are reported or threshold handling.

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

Conciseness5/5

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

The description is a single, direct sentence that conveys the tool's core purpose without any fluff. It is front-loaded and every word earns its place.

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

Completeness4/5

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

Given the presence of a rich input schema, useful annotations, and an output schema, the description is adequate for a simple check tool. It could have mentioned the type of response (e.g., boolean or matches), but the output schema likely covers that; thus it is nearly complete.

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

Parameters3/5

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

The input schema provides 100% coverage for both parameters with clear descriptions (e.g., 'Candidate drawer content', 'Minimum cosine similarity'). The description adds no additional parameter semantics, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's action ('Check') and specific resource ('duplicates') within a defined context ('before writing new durable memory'). It distinguishes from sibling tools by focusing on duplicate pre-checking, a unique responsibility.

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 indicates when to use the tool ('before writing new durable memory'), providing clear usage context. It does not mention alternatives or exclusions, but the context alone is sufficient for most scenarios.

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

mempalace_create_tunnelA

Create an explicit tenant-scoped tunnel between two wing/room locations.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoOptional human-readable reason or relationship label for the tunnel.
source_roomYesRoom at the source endpoint of the explicit tunnel.
source_wingYesWing at the source endpoint of the explicit tunnel.
target_roomYesRoom at the target endpoint of the explicit tunnel.
target_wingYesWing at the target endpoint of the explicit tunnel.
source_drawer_idNoOptional drawer anchoring the source endpoint.
target_drawer_idNoOptional drawer anchoring the target endpoint.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
labelYes
sourceYes
targetYes
successYes
tunnel_idYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate this is a write, non-idempotent, non-destructive operation. The description adds no additional behavioral detail such as duplicate handling, validation of endpoints, or required permissions. It introduces the 'explicit tenant-scoped' qualifier, but that's more about the tunnel's scope than tool 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?

Single sentence, front-loaded with the verb, no unnecessary words. Ideal.

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

Completeness3/5

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

The description covers the core action but omits context about endpoint validation, duplicate tunnels, or optional drawer anchoring. Given the output schema and annotations exist, this is adequate but not comprehensive.

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 descriptive comments for each parameter. The description's mention of 'two wing/room locations' aligns with the source/target parameters but adds no syntax or format details 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 (create) and the resource (explicit tenant-scoped tunnel), specifying it connects two wing/room locations. This distinguishes it from sibling tunnel operations like list/find/delete.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not indicate when to use this tool versus alternatives, nor mention any prerequisites or exclusions.

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

mempalace_delete_drawerA
DestructiveIdempotent

Soft-delete a tenant-scoped drawer and remove its semantic index entries; this cannot be undone through the MCP API.

ParametersJSON Schema
NameRequiredDescriptionDefault
drawer_idYesIdentifier of the drawer to soft-delete from this tenant.

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYes
drawer_idYes
already_deletedNo

TDQS

A4.5/5.0
Behavior5/5

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

The description discloses key behavioral traits beyond the annotations: it specifies 'soft-delete' (not a hard delete), notes the removal of semantic index entries, and emphasizes irreversibility via the MCP API. This adds meaningful context to the destructive and idempotent hints.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the main action and includes critical caveats (soft-delete, index removal, irreversibility). Every element earns its place with no waste.

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 simplicity of the tool (one parameter) and the existence of an output schema, the description fully covers the essential aspects: scope, nature of the delete, impact on indexes, and irreversibility. It is complete for its 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?

The input schema has 100% coverage for the single parameter drawer_id, including its description. The tool description adds no additional parameter-level detail beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'soft-delete' and clearly identifies the resource as 'tenant-scoped drawer', while also specifying the additional effect of removing semantic index entries. This distinguishes it from sibling tools like mempalace_delete_tunnel and mempalace_update_drawer.

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

Usage Guidelines4/5

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

The context is clear: this tool is for soft-deleting a drawer. However, it does not explicitly state when not to use it or mention alternatives, though the 'cannot be undone' warning implies caution. This gives clear context without explicit exclusions.

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

mempalace_delete_tunnelA
DestructiveIdempotent

Delete a tenant-scoped explicit tunnel by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
tunnel_idYesIdentifier of the explicit tunnel to delete.

Output Schema

ParametersJSON Schema
NameRequiredDescription
deletedYes
successYes
tunnel_idYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so the deletion behavior is known. The description adds the 'tenant-scoped explicit' scope constraint, but does not disclose additional behavioral aspects such as permanence, cascading effects, or permission requirements. Given the annotations, this is acceptable but not enriched.

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

Conciseness5/5

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

The description is a single, front-loaded sentence containing exactly the essential action, scope, and identifier method. Every word earns its place with no redundancy or filler.

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

Completeness4/5

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

For a simple delete operation with one parameter and an output schema, the description is nearly complete. It covers the action, scope, and target identification. Slightly more context about return values or error conditions could push it to 5, but annotations and output schema already fill most gaps.

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

Parameters3/5

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

The input schema fully documents the single parameter tunnel_id with a clear description. The tool description adds no extra semantic detail beyond the schema, so with 100% schema coverage the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'Delete' with the resource 'tenant-scoped explicit tunnel' and the identifier method 'by id'. This clearly distinguishes it from sibling tools like create_tunnel, list_tunnels, and follow_tunnels, and is far from tautological.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. While the qualifier 'tenant-scoped explicit' hints at a particular subtype of tunnel, it does not state a preferred context or mention any alternative (e.g., for implicit tunnels or other delete operations).

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

mempalace_diary_readA
Read-onlyIdempotent

Read recent diary entries for an agent, optionally hard-filtered by wing and room. Use this for recent session continuity.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNoOptional hard room filter for diary entries.
wingNoOptional hard wing filter for diary entries.
last_nNoMaximum number of recent entries to return.
agent_nameYesExplicit agent whose recent diary entries should be read.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roomYes
wingYes
agentYes
totalYes
entriesYes
showingYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing the safe read-only nature. The description adds little behavioral detail beyond this—'hard-filtered' is already present in the schema descriptions, and 'recent' is also in the schema. No new behavioral traits are disclosed.

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

Conciseness5/5

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

Two succinct sentences that front-load the verb and object. The first sentence states the core action, and the second provides a use case. No fluff or repetition.

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 annotations covering the safety profile and an output schema present, the description is sufficiently complete for a read tool. It gives the primary use case and mentions optional filters. It could clarify ordering or default count, but last_n in the schema already defines a maximum.

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

Parameters3/5

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

The schema covers all four parameters with clear descriptions (100% coverage), so the baseline is 3. The description repeats 'hard-filtered' and 'recent' without adding any syntax, defaults, or format details beyond what the schema already 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 opens with a specific verb ('Read') and resource ('recent diary entries for an agent'), with optional filters. It clearly distinguishes itself from sibling tools like diary_write, diary_search, and diary_reindex by focusing on reading recent entries.

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 phrase 'Use this for recent session continuity' provides a clear context for when this tool is appropriate. It does not explicitly name alternatives or exclusions, so it misses the top score, but the guidance is more than implied.

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

mempalace_diary_reindexA
Idempotent

Maintenance tool: backfill or refresh diary semantic index rows from the configured source store for this tenant. Use after diary-search changes, migrations, or metadata-index changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNoOptional room filter for selecting entries to reindex.
wingNoOptional wing filter for selecting entries to reindex.
limitNoMaximum entries to process in this maintenance page.
topicNoOptional exact topic filter for selecting entries to reindex.
offsetNoNumber of matching entries to skip before this maintenance page.
dry_runNoReport what would be reindexed without changing chunks or vectors.
entry_idNoOptional single diary entry to reindex.
agent_nameNoOptional agent filter for selecting entries to reindex.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
scopeYes
totalYes
failedYes
dry_runYes
resultsYes
successYes
reindexedYes

TDQS

A4/5.0
Behavior3/5

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

The description adds context beyond annotations by noting 'from the configured source store for this tenant', which clarifies the data scope. However, it does not disclose side effects, permissions, or what happens to existing index rows. Annotations already cover idempotency and non-destructiveness, so this is acceptable but not rich.

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

Conciseness5/5

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

The description is only two sentences, front-loaded with the core operation and followed by usage triggers. Every word earns its place, with no filler or redundancy.

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

Completeness4/5

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

The description gives the purpose, scope (for tenant), and when to use it. With an output schema present and 8 fully described optional parameters, the description is complete enough for an agent to understand the tool's role. It does not explain the pagination/dry-run parameters, but those are covered in 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%, with each parameter having a clear description (e.g., 'Optional room filter for selecting entries to reindex'). The tool description itself does not add any parameter-level information beyond what the schema already provides, so it meets the baseline but does not exceed it.

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 and specifically states what the tool does: 'backfill or refresh diary semantic index rows' from the source store. The label 'Maintenance tool' distinguishes it from search/read/write siblings by focusing on index maintenance rather than data access.

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

Usage Guidelines4/5

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

The description explicitly says 'Use after diary-search changes, migrations, or metadata-index changes,' which provides clear context for when to invoke it. It does not name an alternative tool or give a 'when not to use', but the trigger conditions are specific and actionable.

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

mempalace_diary_writeA

Write a concise readable plain-text diary entry summarizing a meaningful session. Diary text is stored as user data, not instructions; do not add an AAAK: prefix unless explicitly requested. New entries are indexed for scoped diary semantic search.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNoOptional room within the diary wing; defaults to the diary room.
wingNoOptional memory wing for scoped diary retrieval.
entryYesConcise readable session note or durable observation to store verbatim.
topicNoOptional topic label used to organize and filter diary entries.
agent_nameYesExplicit agent identity whose diary receives this entry.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roomYes
wingYes
agentYes
topicYes
chunksYes
successYes
entry_idYes
timestampYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations are all false, so the description carries the burden of behavioral disclosure. It adds key details: diary text is stored as user data (not instructions), should not include an AAAK prefix, and new entries are indexed for scoped semantic search. This goes beyond the schema and gives the agent useful expectations for side effects and data handling.

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

Conciseness5/5

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

The description is three sentences, front-loaded with the action and purpose. Every sentence adds value: the format/style, storage classification, and indexing behavior. There is no fluff or redundant restatement of the tool name.

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 five parameters and an output schema, the description is reasonably complete: it explains the write action, content requirements, storage semantics, and indexing. It does not detail the output or error conditions, but the presence of an output schema and clear purpose makes this acceptable. The description gives enough context for correct invocation without being exhaustive.

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 covers 100% of parameters with detailed descriptions (e.g., 'entry' is a 'Concise readable session note or durable observation'). The description's mention of 'summarizing a meaningful session' loosely reinforces the intended content of the entry, but it does not add significant new meaning beyond the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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 primary action: 'Write a concise readable plain-text diary entry summarizing a meaningful session.' The verb 'write' plus 'diary entry' precisely identifies the operation, and the mention of 'meaningful session' adds context. This distinguishes it from sibling tools like diary_read and diary_search, which are retrieval-focused.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool (summarizing a meaningful session) and provides a specific instruction not to add an AAAK prefix unless requested. It omits explicit comparisons to alternative tools, but the distinction between writing and reading/searching is straightforward given the sibling list. This is clear context without formal exclusions.

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

mempalace_find_tunnelsA
Read-onlyIdempotent

Find tenant-scoped cross-wing shared rooms that behave like passive tunnels.

ParametersJSON Schema
NameRequiredDescriptionDefault
wing_aNoOptional first wing in a cross-wing shared-room search.
wing_bNoOptional second wing in a cross-wing shared-room search.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
tunnelsYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds 'tenant-scoped' and 'passive tunnels' but does not explain what these terms mean or describe behavior when parameters are omitted (e.g., what happens if neither wing_a nor wing_b is provided). It doesn't contradict annotations but adds limited behavioral context beyond them.

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

Conciseness5/5

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

The description is a single, focused sentence that front-loads the verb and resource. Every word contributes to the purpose, and there is no redundancy or filler. It is appropriately sized for the tool's apparent simplicity.

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

Completeness3/5

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

The description is quite terse and lacks context about what 'passive tunnels' means and how the optional parameters affect the search (e.g., what happens when both are omitted). Although annotations provide safety info and an output schema exists, the description itself leaves domain-specific terminology unexplained, making it only minimally complete for complex selection decisions.

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 both parameters clearly described as 'Optional first wing...' and 'Optional second wing...'. The tool description itself adds no extra meaning about the parameters, so it does not go beyond the schema. A baseline of 3 is appropriate given full schema coverage.

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

Purpose5/5

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

The description clearly states the tool's function: finding tenant-scoped cross-wing shared rooms that behave like passive tunnels. It uses a specific verb ('Find') and a specific resource ('cross-wing shared rooms'), and it distinguishes from siblings like list_tunnels and follow_tunnels by focusing on a particular subset of rooms rather than listing or following all tunnels.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as mempalace_list_tunnels or mempalace_follow_tunnels. There are no mentions of exclusions, prerequisites, or context, leaving the agent to infer usage solely from the tool name and sibling list.

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

mempalace_follow_tunnelsA
Read-onlyIdempotent

Follow explicit tunnels connected to a wing/room location.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYesRoom whose connected tunnel endpoints should be followed.
wingYesWing whose connected tunnel endpoints should be followed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tunnelsYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the qualifier 'explicit' (opposed to implicit connections), which provides extra behavioral context. It does not describe return behavior or error conditions, but annotations cover the safety profile.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. Every word earns its place, making it highly concise and well-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 the simple two-parameter schema, strong annotations, and presence of an output schema, the description is adequate. The only gap is the lack of explicit differentiation from find_tunnels, but overall context is sufficient for an agent to understand the tool's role.

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

Parameters3/5

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

Schema descriptions cover both parameters fully (100% coverage): 'Room whose connected tunnel endpoints should be followed' and 'Wing whose connected tunnel endpoints should be followed.' The description adds no additional parameter semantics, so baseline 3 applies.

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 uses a specific verb 'Follow' with a resource 'explicit tunnels connected to a wing/room location,' clearly indicating a traversal operation. It is distinct from sibling tools like list_tunnels and find_tunnels, though 'explicit' could be more precisely defined.

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

Usage Guidelines3/5

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

The description implies this tool is used when you want to follow connected tunnels from a wing/room, but it does not explicitly state when to prefer it over alternatives such as find_tunnels or list_tunnels, nor does it mention any exclusions or prerequisites.

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

mempalace_get_aaak_specA
Read-onlyIdempotent

Return compact memory-note guidance. Normal drawer and diary entries should be concise readable plain text, not literal AAAK-prefixed labels.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
aaak_specYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark this as read-only and idempotent. The description adds behavioral context by revealing the guidance's key message: entries should be plain text, not AAAK-prefixed labels, which helps the agent infer the tool's output nature beyond the safety annotations.

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

Conciseness5/5

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

The description is two short sentences with the primary purpose front-loaded. Every word earns its place; no fluff or redundancy.

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

Completeness4/5

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

With no parameters and clear annotations, the description adequately covers what the tool does. Though there's no detailed output schema, the tool's simplicity and the description's clarification of the guidance content make it sufficiently complete for an agent to select and invoke correctly.

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 baseline is 4. No parameter semantics are needed or provided, and the description doesn't need to compensate since there are no inputs.

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

Purpose5/5

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

The description clearly states a specific verb 'Return' and resource 'compact memory-note guidance', and distinguishes itself from siblings by being the sole guidance tool. The second sentence clarifies the content scope, making the purpose unmistakable.

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

Usage Guidelines3/5

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

The description implies when to use (when needing memory-note formatting guidance) but does not explicitly state when to avoid it or name alternatives. The guidance content is mentioned but there's no exclusion criteria.

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

mempalace_get_drawerA
Read-onlyIdempotent

Fetch one tenant-scoped drawer by id, including bounded verbatim content and provenance metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
drawer_idYesIdentifier of the tenant-scoped drawer to retrieve.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roomYes
wingYes
contentYes
metadataYes
drawer_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds useful context beyond annotations by stating the response includes bounded verbatim content and provenance metadata, helping the agent set expectations.

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

Conciseness5/5

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

The description is a single, information-dense sentence with no filler. It is front-loaded with the action and resource, and every phrase adds value.

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

Completeness5/5

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

For a simple one-parameter retrieval tool with a rich output schema and strong annotations, this description is complete. It conveys the tool's purpose, scope, and what to expect in the response, which is sufficient for selection and invocation.

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

Parameters3/5

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

The schema provides a clear description for drawer_id, and schema coverage is 100%. The description reinforces the parameter's role but does not add new semantic meaning beyond what the schema already offers, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb 'Fetch' and a clear resource 'tenant-scoped drawer' with a precise scope qualifier 'by id'. It also adds content details (bounded verbatim content and provenance metadata), which distinguishes it from siblings like mempalace_list_drawers.

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 clearly implies the tool is for retrieving a single drawer when you have its ID. It does not explicitly mention alternatives or when not to use it, but the naming and wording make the intended use case obvious.

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

mempalace_get_taxonomyA
Read-onlyIdempotent

Return the current tenant-scoped wing and room taxonomy derived from active drawers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
taxonomyYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds context that the taxonomy is 'derived from active drawers' and is 'current tenant-scoped,' which explains the source and scope beyond what annotations provide.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. Every phrase ('current tenant-scoped', 'wing and room taxonomy', 'derived from active drawers') carries essential meaning.

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

Completeness5/5

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

For a zero-parameter tool with an output schema, the description fully explains what is returned and the underlying data source. No additional behavioral or return details are needed beyond what is already provided.

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

Parameters4/5

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

With zero parameters, the schema already fully documents the absence of inputs. The description adds no parameter detail because none is needed, and the baseline for zero parameters is 4, which is appropriate here.

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

Purpose5/5

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

The description clearly states a specific verb ('Return') and resource ('current tenant-scoped wing and room taxonomy derived from active drawers'), distinguishing it from sibling tools like list_wings and list_rooms by emphasizing the derived, tenant-scoped taxonomy.

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

Usage Guidelines3/5

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

The description implies usage as a way to obtain the combined taxonomy from active drawers, but it does not explicitly mention when to use this tool over alternatives like list_wings or list_rooms, nor does it provide exclusions or direct comparisons.

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

mempalace_graph_statsA
Read-onlyIdempotent

Return tenant-scoped graph, shared-room, and explicit tunnel statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
top_tunnelsYes
total_edgesYes
total_roomsYes
tunnel_roomsYes
rooms_per_wingYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description's 'Return statistics' is consistent with these, and adds the 'tenant-scoped' scoping constraint. However, it does not disclose any additional behavioral details such as response format or potential side effects, beyond what annotations provide.

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

Conciseness5/5

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

The description is a single, front-loaded sentence: 'Return tenant-scoped graph, shared-room, and explicit tunnel statistics.' Every word adds value with no redundancy or filler.

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

Completeness4/5

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

With an output schema present and annotations covering safety, the description is sufficient for a no-argument tool. It specifies the scope and categories of statistics. The only minor gap is potential ambiguity around the term 'graph', but overall it is complete for the tool's simplicity.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter schema to describe. Baseline 4 is appropriate because there is nothing for the description to compensate for.

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

Purpose4/5

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

The description states a clear verb ('Return') and specifies three stat categories: tenant-scoped graph, shared-room, and explicit tunnel statistics. This distinguishes it from sibling tools like mempalace_kg_stats and mempalace_list_tunnels, though the term 'graph' could be ambiguous without more context.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as mempalace_kg_stats or mempalace_list_tunnels. The usage context is only implied by the stat categories listed, with no explicit exclusions or alternative references.

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

mempalace_hook_settingsA
Read-onlyIdempotent

Return the configured save policy. Local desktop hook settings are not available in this deployment.

ParametersJSON Schema
NameRequiredDescriptionDefault
silent_saveNoOptional requested silent-save setting; this adapted tool reports the deployment policy.
desktop_toastNoOptional requested desktop-toast setting; local desktop notifications are not exposed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
successYes
updatedYes
settingsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds valuable context that this is an adapted tool reporting deployment policy, not actual local settings, which is behavior beyond what annotations convey. There is no contradiction.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose, and every clause adds relevant information. It is appropriately sized for a simple read-only query tool.

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 no required parameters, rich annotations, and an output schema, the description is sufficiently complete. It explains the key deployment limitation and the tool's adapted nature, which addresses the main contextual concerns.

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

Parameters3/5

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

The input schema has 100% description coverage, with both parameters clearly described. The description itself adds minimal parameter detail, but the schema already explains that silent_save is a requested setting and desktop_toast is not exposed. Baseline of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it returns the configured save policy, using a specific verb and resource. It also notes local desktop hook settings are unavailable, which adds useful scoping. However, it does not explicitly distinguish itself from sibling tools like mempalace_status or mempalace_get_drawer.

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

Usage Guidelines3/5

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

The description implies this tool is for retrieving the save policy and that local desktop hook settings are not available, giving some context about deployment limitations. It does not explicitly state when to use this tool over alternatives or mention any exclusions, but the 'not available' note partially guides usage.

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

mempalace_kg_addA

Add a tenant-scoped temporal knowledge-graph fact with optional validity and provenance metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectYesValue or entity at the object side of the relationship.
subjectYesEntity at the subject side of the relationship.
valid_toNoOptional exclusive end date or timestamp after which this fact is inactive.
predicateYesRelationship type, such as status, owns, or assigned_to.
confidenceNoOptional confidence score from 0 to 1 for the asserted fact.
valid_fromNoOptional inclusive start date or timestamp for this fact.
source_fileNoOptional source-file provenance label recorded with the fact audit.
source_closetNoOptional provenance label for the source collection or closet.
source_drawer_idNoOptional drawer identifier supporting this fact.

Output Schema

ParametersJSON Schema
NameRequiredDescription
factYes
successYes
triple_idYes

TDQS

A3.5/5.0
Behavior2/5

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

Annotations provide no safety hints (all false), so the description must carry the behavioral burden. It only says 'Add' and mentions optional metadata, but does not disclose important behaviors such as how duplicates are handled, whether facts are overwritten, or what constraints apply (e.g., validity intervals).

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

Conciseness5/5

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

The description is a single, tightly worded sentence that front-loads the core purpose and key optional aspects. Every word adds value, and there is no wasted text.

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

Completeness3/5

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

The tool is a simple add operation with an output schema, and the schema covers all parameters. However, the description lacks context about side effects or failure modes, which would be important for a write operation despite the output schema. It is minimally complete but leaves gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds the notion of 'validity and provenance metadata' but does not provide extra detail beyond the schema, which is 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 the tool adds a tenant-scoped temporal knowledge-graph fact, with a specific verb (Add) and resource. It distinguishes from sibling tools like mempalace_kg_query (query) and mempalace_kg_invalidate (invalidate).

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

Usage Guidelines3/5

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

The description implies the tool is used when adding a fact, but provides no explicit guidance on when to use it versus alternatives, nor any exclusions or prerequisites. The context is adequately implied but not explicitly stated.

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

mempalace_kg_checkA
Read-onlyIdempotent

Run deterministic KG reliability checks for active conflicts, stale current-state facts, and source drawer provenance warnings. This is not broad contradiction detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNoDate or timestamp used as the current-state reference point.
limitNoMaximum number of facts considered by the reliability checks.
entityNoOptional entity to constrain conflict and staleness checks.
predicateNoOptional predicate to constrain reliability checks.
predicatesNoOptional predicate allowlist for conflict checks.
older_than_daysNoAge threshold for reporting stale facts.
include_source_checksNoAlso warn when fact provenance points to missing or outdated drawers.
single_valued_predicatesNoPredicates that should have at most one active object per subject.

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYes
scopeYes
summaryYes
guidanceYes
conflictsYes
stale_factsYes
source_warningsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds behavioral context by stating the checks are 'deterministic' and enumerating the three reliability dimensions. It also clarifies the tool's boundary ('not broad contradiction detection'). No contradiction with annotations.

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

Conciseness5/5

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

The description is two sentences: the first states the exact purpose and scope, the second provides a critical boundary. No filler or redundancy. Every word earns its place.

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

Completeness5/5

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

The tool has a full output schema, comprehensive parameter descriptions, and safety annotations. The description, while brief, fully informs an agent of what the tool does and what it does not do. No additional return-value explanation is needed due to the output schema. The boundary statement prevents misuse.

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?

All 8 parameters have complete descriptions in the input schema (100% coverage), including purpose and constraints for each. The tool description itself does not add parameter-specific guidance, but with high schema coverage, a baseline of 3 is appropriate.

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

Purpose5/5

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

The description opens with 'Run deterministic KG reliability checks' and enumerates three specific check types (active conflicts, stale current-state facts, source drawer provenance warnings). It also explicitly says 'This is not broad contradiction detection,' distinguishing it from sibling tools. This is a specific verb+resource+scope with clear sibling differentiation.

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

Usage Guidelines4/5

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

The description gives a clear when-not-to-use exclusion ('This is not broad contradiction detection') and implies the tool is for targeted reliability checks. However, it does not name an alternative tool or provide explicit usage scenarios such as 'use when validating KG consistency after writes.' Context is mostly clear but lacks a distinct alternative recommendation.

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

mempalace_kg_invalidateA
Destructive

Invalidate an exact tenant-scoped fact by setting its exclusive validity end time.

ParametersJSON Schema
NameRequiredDescriptionDefault
endedNoDate or timestamp at which the fact stopped being valid.
objectYesObject of the exact fact to invalidate.
subjectYesSubject of the exact fact to invalidate.
predicateYesPredicate of the exact fact to invalidate.

Output Schema

ParametersJSON Schema
NameRequiredDescription
factYes
endedYes
successYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already indicate destructive behavior (readOnlyHint false, destructiveHint true). The description adds that the invalidation is exact and tenant-scoped, but does not discuss behavior if the fact doesn't exist or whether the operation is reversible. With annotations covering safety, this is adequate but not rich.

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

Conciseness5/5

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

Single sentence, front-loaded with the verb 'Invalidate', with no filler words. Every word contributes meaning, making it highly concise and well-structured.

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

Completeness3/5

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

The description is minimal but combined with schema and annotations gives enough for basic invocation. However, it doesn't specify behavior for missing facts, default end time, or the meaning of 'exclusive validity end time,' so it's 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?

All parameters are described in the schema (100% coverage). The description adds context about 'exact fact' which reinforces subject/predicate/object matching, but doesn't explain the `ended` parameter beyond schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool invalidates an exact tenant-scoped fact by setting a validity end time. It distinguishes itself from sibling tools like mempalace_kg_add and mempalace_kg_query by specifying the invalidation action.

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

Usage Guidelines3/5

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

The description implies usage for ending a fact's validity, but does not explicitly state when to use this tool versus alternatives or mention any exclusions. It lacks guidance on prerequisites such as the fact needing to already exist.

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

mempalace_kg_queryA
Read-onlyIdempotent

Query tenant-scoped temporal knowledge-graph facts for an entity at an optional point in time and direction.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNoOptional date or timestamp used to evaluate fact validity.
entityYesEntity name whose temporal facts should be returned.
directionNoWhether to follow subject edges, object edges, or both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofYes
countYes
factsYes
entityYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds useful context about tenant-scoping and temporal validity, which is not present in the annotations. However, it does not disclose any additional behavioral nuances, such as result limits or handling of missing timestamps, so the description contributes modest extra value beyond annotations.

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

Conciseness5/5

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

The description is a single, well-structured sentence that is front-loaded with the core purpose and packs in all key qualifiers (tenant-scoped, temporal, optional time/direction). No filler or redundant phrases; every word earns its place.

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

Completeness4/5

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

For a read-only query tool with three well-documented parameters, output schema, and safety annotations, the description is largely sufficient. It captures the essential scope and optionality. The lack of explicit alternative guidance is a minor gap, but not critical for understanding what the tool does; the output schema covers return value expectations.

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

Parameters3/5

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

The input schema provides full descriptions for all three parameters, with 100% coverage. The description's mention of 'optional point in time and direction' aligns with the schema but does not add any extra meaning beyond what the parameter descriptions already state. Thus, the schema does the heavy lifting, and the description adds no distinct value for parameter understanding.

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

Purpose4/5

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

The description clearly states the tool's function: querying tenant-scoped temporal knowledge-graph facts for an entity, with optional time and direction parameters. It uses a specific verb and resource, and the temporal/tenant-scoped aspect distinguishes it from other KG tools like add/invalidate. However, it does not explicitly differentiate from similar query tools such as mempalace_kg_check or mempalace_traverse.

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

Usage Guidelines3/5

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

The description implies the tool is used when needing temporal facts about an entity, but it does not provide explicit guidance on when to prefer this tool over alternatives. With a large set of sibling tools (e.g., mempalace_kg_timeline, mempalace_traverse, mempalace_search), the lack of contrast leaves the agent to infer usage solely from the tool's name and semantic description.

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

mempalace_kg_statsB
Read-onlyIdempotent

Return tenant-scoped knowledge graph statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
triplesYes
entitiesYes
current_factsYes
expired_factsYes
relationship_typesYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description need not repeat that. It adds the tenant-scoping constraint, which is useful, but does not disclose what types of statistics are returned or any potential performance implications. With annotations covering safety, a score of 3 is appropriate.

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

Conciseness5/5

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

The description is a single, clear sentence that is front-loaded and wastes no words. It is appropriately concise for a zero-parameter tool.

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?

While the output schema exists and annotations cover safety, the description is thin for a tool in a large sibling list. It does not clarify what 'statistics' includes or how it differs from mempalace_graph_stats, so the context is only minimally complete.

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

Parameters4/5

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

The tool has 0 parameters, so the baseline is 4. The description does not need to add parameter details, and the empty schema is fully covered.

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

Purpose4/5

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

The description uses a specific verb 'Return' and resource 'knowledge graph statistics' with tenant scoping, clearly stating what the tool does. However, it does not differentiate from the sibling tool mempalace_graph_stats, which likely provides similar statistics, so it loses a point for missing sibling distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like mempalace_graph_stats or mempalace_kg_query. The only hint is 'tenant-scoped', which implies a context but does not explicitly state exclusions or alternatives.

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

mempalace_kg_timelineA
Read-onlyIdempotent

Show the recent KG timeline for one entity or for all facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
entityNoOptional entity filter; omit to return the tenant timeline.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
entityYes
timelineYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already cover read-only, idempotent, non-destructive behavior. The description adds 'recent' and entity-vs-all-facts scoping, but doesn't reveal other behavioral details like ordering, limits, or pagination. With annotations, this is adequate but not rich.

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

Conciseness5/5

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

A single, well-structured sentence conveys the tool's purpose and scoping options. Every word earns its place, with no fluff or redundancy.

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

Completeness4/5

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

Given the low complexity, comprehensive annotations, and existing output schema, the description is largely complete. 'Recent' is slightly ambiguous but acceptable for a timeline tool, and the optional parameter is clearly explained.

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% and the 'entity' parameter is self-explanatory. The description's 'one entity or all facts' mirrors the schema's 'omit to return the tenant timeline,' adding little beyond what structured data already 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 the tool shows a KG timeline, with an explicit scope choice: one entity or all facts. The verb 'Show' and resource 'recent KG timeline' are specific, and the timeline focus distinguishes it from sibling KG query/check tools.

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

Usage Guidelines4/5

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

It provides clear guidance on how to scope the request: pass an entity for one entity's timeline, omit it for all facts. It doesn't name alternatives or exclusions, but the context is clear enough for a simple read-only tool.

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

mempalace_list_drawersA
Read-onlyIdempotent

List active tenant-scoped drawers with optional wing/room hard filters and offset pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNoOptional hard filter for one room.
wingNoOptional hard filter for one wing.
limitNoMaximum drawer summaries to return in this page.
offsetNoNumber of matching drawers to skip before returning this page.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
limitYes
totalYes
offsetYes
drawersYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds useful behavioral context beyond annotations: tenant-scoping, active-status filtering, 'hard filters' implying exact matching, and offset pagination behavior. No contradictions found.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that begins with the action and resource, then packs the key scoping and pagination details without waste. Every word earns its place.

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

Completeness5/5

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

Given the full annotations, complete parameter documentation, and the presence of an output schema, the one-sentence description is fully sufficient for a list operation. The description covers scope, filters, and pagination, and the output schema handles return-value documentation.

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 descriptions for all 4 parameters. The description reiterates 'hard filters' and 'offset pagination' but does not add significant new meaning beyond what the schema already provides, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses the specific verb 'List' with the resource 'active tenant-scoped drawers' and scoping details ('optional wing/room hard filters', 'offset pagination'). This clearly distinguishes it from siblings like mempalace_get_drawer (single drawer), mempalace_search (search), and mempalace_list_wings/list_rooms (different resources).

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 clearly indicates this tool is for listing drawers with optional filters and pagination, giving enough context for when to use it. However, it does not explicitly state when not to use it or mention alternatives like mempalace_search, so it falls short of a 5.

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

mempalace_list_roomsA
Read-onlyIdempotent

List tenant-scoped rooms and active drawer counts for one wing or across all wings.

ParametersJSON Schema
NameRequiredDescriptionDefault
wingNoOptional wing to narrow the room counts; omit to aggregate rooms across the tenant.

Output Schema

ParametersJSON Schema
NameRequiredDescription
wingYes
roomsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description does not need to re-state safety. It adds meaningful context about tenant scoping, active drawer counts, and the ability to narrow by wing or aggregate, which goes beyond the structured annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It efficiently conveys the action, resource, and scope without fluff.

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

Completeness5/5

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

For a simple list tool with one optional parameter and an output schema, the description is complete. It covers the scope, the content (rooms and drawer counts), and the optional filtering/aggregation behavior, leaving no significant gaps.

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

Parameters3/5

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

The schema covers 100% of the parameter documentation, describing 'wing' as optional and explaining the aggregation behavior. The description largely mirrors this without adding new semantics (e.g., format, enums, or edge cases), so the baseline score of 3 applies.

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 states a specific verb ('List') and resource ('tenant-scoped rooms and active drawer counts'), with an explicit scope ('for one wing or across all wings'). This clearly distinguishes it from sibling tools like mempalace_list_wings and mempalace_list_drawers.

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 usage context by explaining the optional 'wing' parameter and the aggregating behavior when omitted. It does not explicitly mention alternatives or exclusions, but the context is sufficient for an agent to infer when to use this tool.

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

mempalace_list_tunnelsA
Read-onlyIdempotent

List tenant-scoped explicit tunnels, optionally filtered by either endpoint wing.

ParametersJSON Schema
NameRequiredDescriptionDefault
wingNoOptional wing filter for either endpoint of listed tunnels.

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYes
tunnelsYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds context about 'tenant-scoped' and 'explicit' tunnels, but stops short of describing return behavior, pagination, or other nuances. This aligns with the baseline for well-annotated tools.

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 one concise sentence that front-loads the action and resource, providing all necessary information without any filler. Every word earns its place.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, output schema present, rich annotations), the description is largely complete. It clearly states the operation and the optional filter. The main gap is lack of differentiation from sibling tunnel tools, but that is partially mitigated by the qualifiers 'tenant-scoped' and 'explicit.'

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

Parameters3/5

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

The single parameter 'wing' is fully described in the schema with 'Optional wing filter for either endpoint of listed tunnels.' The description adds no additional meaning beyond the schema, so the baseline score for high schema coverage (100%) applies.

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 uses a specific verb ('List') and resource ('tenant-scoped explicit tunnels'), clearly identifying what is being listed and its scope. It does not explicitly differentiate from sibling tools like mempalace_find_tunnels or mempalace_follow_tunnels, so it misses the full 5 score.

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

Usage Guidelines3/5

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

The description implies usage by stating what the tool does, but it does not provide explicit guidance on when to use this tool versus the other tunnel-related sibling tools. No alternatives or exclusions are mentioned.

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

mempalace_list_wingsA
Read-onlyIdempotent

List tenant-scoped wings and active drawer counts; results never cross the authenticated tenant.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
wingsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds valuable context by emphasizing tenant isolation ('results never cross the authenticated tenant') and specifying that it returns active drawer counts, which goes beyond the structured annotations.

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

Conciseness5/5

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

A single, front-loaded sentence that packs the essential information: action, resource, scope, and return count. No wasted words or redundancy.

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

Completeness5/5

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

With zero parameters, an output schema, and annotations covering safety, the description fully explains what the tool does and a key behavioral constraint (tenant isolation). It is complete for its simplicity.

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

Parameters4/5

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

The tool has zero parameters, so the schema already documents everything. The baseline of 4 applies because with no parameters, the description need not clarify anything further; it adds no parameter info but also has no gap to fill.

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 ('List') and resource ('wings'), and adds tenant scoping plus 'active drawer counts', clearly distinguishing it from sibling list tools like list_rooms, list_drawers, and list_tunnels.

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 clearly implies when to use this tool (when you need wings and their drawer counts within the tenant), but does not explicitly mention alternatives or exclusions. It provides clear context without saying 'use this instead of X'.

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

mempalace_memories_filed_awayA
Read-onlyIdempotent

Return the latest tenant-scoped write filing status for the configured deployment.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
countYes
statusYes
messageYes
timestampYes
cloud_modeYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds tenant-scoped and configured deployment context, but does not disclose additional behavioral traits such as format of the status, potential delays, or requirements. It falls short of richer disclosure expected when no output schema details are provided.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that directly states the tool's purpose. Every word earns its place; there is no redundancy or filler. It is appropriately sized for a simple, no-parameter status-returning tool.

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 (0 parameters) and the presence of an output schema plus annotations, the description is mostly complete. It clearly defines what the tool returns, though it could have added a bit more context about what 'write filing status' entails. Overall, it suffices for a straightforward status check.

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, and the schema coverage is trivially 100%. According to the rubric, a 0-parameter tool earns a baseline 4. The description does not need to explain parameters, and no parameter-specific meaning is missing.

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

Purpose4/5

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

The description clearly states the tool 'Return the latest tenant-scoped write filing status for the configured deployment', with a specific verb and resource. It distinguishes itself from likely sibling 'mempalace_status' by focusing on 'write filing status', though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus the numerous sibling tools. It lacks explicit context, exclusions, or mentions of alternatives, leaving the agent to infer usage from the tool name and minimal description.

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

mempalace_reconnectA
Read-onlyIdempotent

Return configured binding and index health. This reports backend readiness rather than resetting a local cache.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
drawersYes
messageYes
successYes
vector_disabledYes
vector_disabled_reasonYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare this as read-only, idempotent, and non-destructive. The description adds useful context beyond these hints by clarifying it reports backend readiness and does not reset a local cache, which is a meaningful behavioral note. No contradictions with annotations.

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

Conciseness5/5

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

The description is extremely concise with two short sentences. The first sentence front-loads the action and resource, and the second adds a useful clarification without redundancy. Every word earns its place.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, an output schema exists, and safety annotations are provided), the description is complete. It covers the tool's purpose, the nature of its results, and a key behavioral distinction, leaving no ambiguity for a straightforward health-check 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?

The tool has zero parameters and the schema is empty, so the parameter baseline is 4. The description doesn't need to elaborate on parameters, and it compensates by clarifying what is returned (configured binding and index health).

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

Purpose5/5

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

The description clearly states the tool's action ('Return') and specific resource ('configured binding and index health'). It also explicitly distinguishes itself from a cache-reset operation, which differentiates it from what the name 'reconnect' might imply and from sibling tools that may reset or mutate state.

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 conveys when to use the tool (to check backend readiness/binding and index health) and provides an exclusion ('rather than resetting a local cache'). However, it does not explicitly name alternative sibling tools like mempalace_status, so the guidance is clear but not fully explicit on alternatives.

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

mempalace_statusA
Read-onlyIdempotent

Diagnostics and capabilities only. For memory-relevant chats, start with mempalace_wake_context and use status for protocol/backend health.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
roomsYes
wingsYes
quotasYes
backendYes
kg_statsYes
protocolYes
warningsYes
graph_statsYes
aaak_dialectYes
tenant_labelYes
total_drawersYes
binding_statusYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive. The description adds the behavioral context that it is diagnostics-only and health-focused, which is consistent and slightly extends the structured metadata.

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

Conciseness5/5

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

Two sentences with no filler; the first defines scope, the second gives practical guidance.

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?

With no parameters, an output schema present, and strong annotations, the description fully covers what an agent needs to know to invoke it correctly, including how to sequence it with mempalace_wake_context.

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

Parameters4/5

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

There are no parameters, so the description doesn't need to explain them. The baseline for zero params is 4, which applies here.

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 states the tool is for 'Diagnostics and capabilities only' and explicitly contrasts it with mempalace_wake_context for memory-relevant chats, making its purpose distinct among siblings.

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?

It explicitly directs users to start with mempalace_wake_context for memory-relevant chats and use status for protocol/backend health, providing clear when-to-use and when-not-to-use guidance.

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

mempalace_syncA
Read-onlyIdempotent

Filesystem sync is unsupported because this MCP deployment has no local project directory to scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
wingNoOptional wing filter that would have limited a local sync.
applyNoWhether a supported sync would write changes; this deployment never applies filesystem sync.
project_dirNoOptional local project directory; unsupported because this deployment has no filesystem bridge.

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
supportedYes

TDQS

A3.8/5.0
Behavior4/5

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

Beyond the read-only and idempotent annotations, the description discloses that sync never applies in this deployment and explains why (no local project directory). This is valuable context, though it does not specify whether calling the tool errors or returns empty.

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?

A single, front-loaded sentence states the core limitation without redundancy. Every word contributes to the message.

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 an unsupported tool, the description, combined with detailed schema and annotations, gives an agent enough information to avoid misuse. It could be more explicit about the expected call outcome, but the overall context is sufficient.

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

Parameters3/5

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

The input schema already provides thorough descriptions for all three optional parameters, and the tool description adds no additional parameter-specific meaning. With 100% schema coverage, this meets the baseline without compensation.

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

Purpose4/5

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

The description clearly states that filesystem sync is unsupported due to missing local project directory, which conveys the tool's non-functional purpose. It distinguishes from siblings by identifying the sync domain, but doesn't describe an active operation.

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 indicates the tool should not be used for filesystem sync because it is unsupported. However, it provides no explicit alternatives or when-to-use scenarios, leaving the agent to infer that this tool should be avoided.

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

mempalace_traverseA
Read-onlyIdempotent

Traverse the tenant shared-room graph and explicit tunnels with a bounded hop count.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_hopsNoMaximum graph hops to follow; bounds traversal work and result breadth.
start_roomYesRoom name from which to traverse shared-room and explicit tunnel links.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes
max_hopsYes
start_roomYes

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by specifying the graph/tunnel scope and the bounded-hop behavior, which are not present in annotations. It does not detail output shape, but that is handled by the output 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 a single sentence that leads with the action verb and immediately conveys the core scope and constraint. There is no filler or redundant restatement of the tool name.

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?

With only two parameters (one required), clear annotations, and an output schema, the description sufficiently covers the tool's purpose and core behavior. The bounded-hop constraint and resource types are enough to understand what the tool does; missing sibling differentiation affects usage guidance but not overall completeness.

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 both parameters already described. The description reinforces max_hops via 'bounded hop count' and clarifies start_room's role in traversal, but does not add new semantic meaning beyond the schema. A baseline of 3 is appropriate given the strong 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?

The description uses a specific verb ('Traverse') and names the resources (tenant shared-room graph and explicit tunnels) with a clear constraint (bounded hop count). It is not fully differentiated from the sibling tool mempalace_follow_tunnels, but the object and bounded scope make the purpose reasonably specific.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives such as mempalace_follow_tunnels or mempalace_list_tunnels. There is no mention of use cases, exclusions, or preference over siblings, leaving the agent to infer usage solely from the name and schema.

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

mempalace_update_drawerA

Update a drawer and reindex changed content or room metadata; optional force_reindex rebuilds unchanged chunks.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomNoReplacement room; omit to preserve the current filing scope.
wingNoReplacement wing; omit to preserve the current filing scope.
contentNoReplacement body; omit to preserve existing content.
added_byNoReplacement creator label; omit to preserve the current value.
drawer_idYesIdentifier of the tenant-scoped drawer to update.
source_fileNoReplacement provenance label; omit to preserve the current value.
force_reindexNoRebuild semantic chunks even when content and scope appear unchanged.

Output Schema

ParametersJSON Schema
NameRequiredDescription
roomYes
wingYes
successYes
drawer_idYes
updated_fieldsYes

TDQS

A4/5.0
Behavior4/5

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

The description discloses that updates trigger reindexing of changed content/room metadata, and force_reindex rebuilds unchanged chunks, providing useful behavioral insight beyond the annotations. It does not detail other side effects or permissions, but annotations already indicate mutation and no destructive hint, so this is a solid addition.

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?

A single, front-loaded sentence conveys the core action and the optional reindex behavior with no wasted words. It is concise and well-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?

The description is sufficient for a moderate-complexity mutation tool given that the output schema exists and the schema covers all parameter meanings. It could benefit from explicit use-case guidance and side-effect disclosure, but it is not incomplete.

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 descriptions for all 7 parameters, so the description adds minimal extra semantic value. The only cross-reference is force_reindex, which matches the schema's 'Rebuild semantic chunks even when content and scope appear unchanged.'

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 identifies the tool as updating a drawer and reindexing changed content or room metadata, distinguishing it from sibling tools like mempalace_add_drawer or mempalace_delete_drawer. The verb 'Update' and object 'drawer' are specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies use for modifying an existing drawer but does not explicitly state when to choose this over alternatives or provide exclusions. No mention of 'use X instead' or prerequisites, leaving usage context implicit.

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

mempalace_wake_contextA
Read-onlyIdempotent

Start here for memory-relevant chats. Returns bounded privacy-scoped startup context: global mode loads only curated wing=global profile/preferences/working-style drawers; scoped mode requires an explicit wing and never widens to other scopes.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesUse global for curated cross-project orientation or scoped for one explicit wing.
roomNoOptional room hard filter within the requested wing.
wingNoRequired in scoped mode; identifies the wing whose context may be loaded.
max_charsNoMaximum total context characters returned across selected drawers.
max_itemsNoMaximum number of context drawers to include.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
scopeYes
limitsYes
withheldYes
instructionsYes
context_itemsYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations (read-only, idempotent, non-destructive), the description discloses that the context is bounded, privacy-scoped, only loads curated drawers in global mode, and never widens in scoped mode. These are substantive behavioral guarantees not present in the annotations, providing clear transparency about scope and 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?

The description is concise and front-loaded with the key call-to-action ('Start here'), followed by precise mode behaviors. Every sentence adds value; there is no fluff, and it is well-structured for quick parsing.

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 presence of a complete input schema, annotations, and an output schema, the description covers the essential conceptual aspects: purpose, mode behavior, scoping rule, and bounded nature. It does not need to explain return values because the output schema exists, and the tool's complexity is well-addressed.

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 schema already provides 100% coverage with descriptions for all parameters, so the baseline is 3. The description adds semantic meaning by explaining that global mode uses wing=global curated content and that scoped mode requires an explicit wing, which directly clarifies how to interpret mode and wing. It also ties the bounded nature of results to the max_chars/max_items parameters.

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

Purpose5/5

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

The description clearly states it is the starting point for memory-relevant chats and returns bounded, privacy-scoped startup context, with distinct global and scoped modes. It distinguishes itself from sibling tools by emphasizing it is an entry-point aggregator that loads curated drawers, not a search or single-get operation.

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

Usage Guidelines4/5

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

The description gives explicit when-to-use context ('Start here for memory-relevant chats') and clarifies that scoped mode requires an explicit wing and never widens scopes. However, it does not explicitly name alternative sibling tools or state when not to use it, so it falls short of full exclusion guidance.

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.

  1. 34 tool updatesv1.0.0
    • First observedmempalace_add_drawer
    • First observedmempalace_check_duplicate
    • First observedmempalace_create_tunnel
    • First observedmempalace_delete_drawer
    • First observedmempalace_delete_tunnel
    • First observedmempalace_diary_read
    • First observedmempalace_diary_reindex
    • First observedmempalace_diary_search
    • First observedmempalace_diary_write
    • First observedmempalace_find_tunnels
    • First observedmempalace_follow_tunnels
    • First observedmempalace_get_aaak_spec
    • First observedmempalace_get_drawer
    • First observedmempalace_get_taxonomy
    • First observedmempalace_graph_stats
    • First observedmempalace_hook_settings
    • First observedmempalace_kg_add
    • First observedmempalace_kg_check
    • First observedmempalace_kg_invalidate
    • First observedmempalace_kg_query
    • First observedmempalace_kg_stats
    • First observedmempalace_kg_timeline
    • First observedmempalace_list_drawers
    • First observedmempalace_list_rooms
    • First observedmempalace_list_tunnels
    • First observedmempalace_list_wings
    • First observedmempalace_memories_filed_away
    • First observedmempalace_reconnect
    • First observedmempalace_search
    • First observedmempalace_status
    • First observedmempalace_sync
    • First observedmempalace_traverse
    • First observedmempalace_update_drawer
    • First observedmempalace_wake_context

TDQS

A3.5/5.0

Scored across 34 tools

Disambiguation3/5

Several tools overlap in purpose, especially the diagnostic/status group (status, reconnect, hook_settings, memories_filed_away, graph_stats, kg_stats) and tunnel navigation (traverse, follow_tunnels, find_tunnels). Descriptions help clarify, but the boundaries are not always obvious.

Naming Consistency2/5

The consistent 'mempalace_' prefix is undermined by a mix of naming schemes: verb_noun (add_drawer), noun_verb (diary_write), single verbs (traverse, sync), and noun_noun (kg_stats, graph_stats). This makes it hard to predict the pattern for new tools.

Tool Count2/5

With 34 tools, the server is on the heavy side. While the coverage is broad, many diagnostic/status tools (status, reconnect, hook_settings, memories_filed_away) could be consolidated, making the set feel oversized.

Completeness4/5

The core domains have solid lifecycle coverage: drawers support CRUD + search, diary has write/read/search/reindex, knowledge graph has add/query/invalidate/timeline, and tunnels have create/delete/list/follow. Minor gaps exist (e.g., no explicit wing/room management, unsupported sync), but most workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Self-hosted MCP server giving AI agents persistent memory for personalization and context across conversations.
    277
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    A local-first MCP memory server providing persistent, searchable memory for AI agents, powered by SQLite.
    1
    1
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Self-hosted MCP memory server that gives a multi-agent fleet one shared, git-backed memory for search, read, and write.
    8
    1
    MIT