Skip to main content
Glama
memsolus

Memsolus MCP Server

Official
by memsolus

@memsolus/mcp

MCP Server for Memsolus — persistent memory, knowledge graphs, and semantic search for AI agents

npm version License: MIT MCP compatible

Documentation  |  npm  |  GitHub  |  memsolus.com


What is Memsolus?

Memsolus is a persistent memory platform for AI agents. It lets your AI assistant remember context across conversations, track decisions, search past knowledge, and navigate entity relationships through a knowledge graph.

This package exposes the full Memsolus API as an MCP (Model Context Protocol) server, so any MCP-compatible AI client — Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot, Zed, and others — can store and retrieve memories, query knowledge, and traverse entity graphs without custom integration code.


Related MCP server: BuildAutomata Memory MCP Server

Prerequisites


Getting an API Key

  1. Sign up or log in at app.memsolus.com

  2. Go to Settings > API Keys

  3. Click Create API Key

  4. Give it a name (e.g., Claude Desktop)

  5. Select permissions: at minimum MemoryRead and MemoryWrite. For full access, also enable KnowledgeRead and DashboardRead

  6. Copy the key — it starts with msk_ and you will not be able to see it again after closing the dialog

  7. Set the key as the MEMSOLUS_API_KEY environment variable or paste it directly into your client config


Installation

Choose the section that matches your AI client. All configurations use npx -y @memsolus/mcp, which runs the latest published version without a local install step.

Claude Code

Run this command in your terminal:

claude mcp add memsolus -- npx -y @memsolus/mcp

To pass the API key inline without setting an environment variable:

claude mcp add memsolus -e MEMSOLUS_API_KEY=msk_your_key_here -- npx -y @memsolus/mcp

After adding, restart Claude Code or run /mcp to confirm that memsolus appears in the server list.


Claude Desktop

Locate and open your Claude Desktop configuration file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add the following entry inside mcpServers:

{
  "mcpServers": {
    "memsolus": {
      "command": "npx",
      "args": ["-y", "@memsolus/mcp"],
      "env": {
        "MEMSOLUS_API_KEY": "msk_your_key_here"
      }
    }
  }
}

Save the file and restart Claude Desktop. The Memsolus tools will appear in the tools panel on the next launch.


Cursor

Create or edit .cursor/mcp.json in your project root (or the global Cursor MCP config at ~/.cursor/mcp.json for workspace-independent access):

{
  "mcpServers": {
    "memsolus": {
      "command": "npx",
      "args": ["-y", "@memsolus/mcp"],
      "env": {
        "MEMSOLUS_API_KEY": "msk_your_key_here"
      }
    }
  }
}

Reload Cursor or run the MCP: Restart Servers command from the command palette.


Windsurf

Open your Windsurf MCP configuration (~/.codeium/windsurf/mcp_config.json) and add:

{
  "mcpServers": {
    "memsolus": {
      "command": "npx",
      "args": ["-y", "@memsolus/mcp"],
      "env": {
        "MEMSOLUS_API_KEY": "msk_your_key_here"
      }
    }
  }
}

Restart Windsurf to apply the changes.


VS Code (GitHub Copilot)

Add a .vscode/mcp.json file to your workspace:

{
  "mcpServers": {
    "memsolus": {
      "command": "npx",
      "args": ["-y", "@memsolus/mcp"],
      "env": {
        "MEMSOLUS_API_KEY": "msk_your_key_here"
      }
    }
  }
}

Alternatively, add the same block to your VS Code user settings.json under "mcp" to enable it globally. Reload the VS Code window after saving.


Zed

Open your Zed settings (~/.config/zed/settings.json) and add a context_servers entry:

{
  "context_servers": {
    "memsolus": {
      "command": {
        "path": "npx",
        "args": ["-y", "@memsolus/mcp"],
        "env": {
          "MEMSOLUS_API_KEY": "msk_your_key_here"
        }
      }
    }
  }
}

Restart Zed to pick up the new server.


Using an Environment Variable Instead

If you prefer not to embed your API key in config files, export it in your shell profile (~/.bashrc, ~/.zshrc, or equivalent):

export MEMSOLUS_API_KEY=msk_your_key_here

With the variable set globally, all client configs can omit the env block:

{
  "mcpServers": {
    "memsolus": {
      "command": "npx",
      "args": ["-y", "@memsolus/mcp"]
    }
  }
}

Configuration

The server is configured entirely through environment variables. No config file is needed.

Variable

Required

Default

Description

MEMSOLUS_API_KEY

Yes

Your API key (starts with msk_)

MEMSOLUS_API_URL

No

https://api.memsolus.com

Override the API endpoint (e.g., for self-hosted deployments)

MEMSOLUS_WORKSPACE_ID

No

Target a specific workspace. Omit to use the default workspace associated with your API key


Available Tools

The server exposes 17 tools across four categories. Which tools are available depends on your plan — see Plan-Based Tool Availability.

Memory Tools

These tools are available on all plans that include MCP access.

add_memory

Store a new persistent memory. Use when the user shares a fact, preference, decision, or any context worth remembering across future conversations.

Parameter

Type

Required

Description

memory

string

Yes

Content of the memory to store

user_id

string

No

Associate the memory with a specific user

agent_id

string

No

Associate the memory with a specific agent

session_id

string

No

Associate the memory with a specific session

metadata

string

No

JSON string with arbitrary key-value metadata

priority

string

No

LOW, MEDIUM (default), or HIGH


search_memories

Search stored memories by relevance. Supports semantic, keyword, and hybrid search modes.

Parameter

Type

Required

Description

query

string

Yes

Natural language search query

user_id

string

No

Restrict results to a specific user

limit

string

No

Maximum number of results (default: 10)

mode

string

No

hybrid (default), semantic, or keyword

Use hybrid for general queries. Use keyword when searching for exact names, IDs, or technical terms.


get_memories

List memories in chronological order. Use when you want to browse all stored memories rather than search by relevance.

Parameter

Type

Required

Description

user_id

string

No

Filter by user ID

agent_id

string

No

Filter by agent ID

page

string

No

Page number (default: 1)

limit

string

No

Results per page (default: 20)


get_memory

Retrieve a single memory by its ID.

Parameter

Type

Required

Description

memory_id

string

Yes

ID of the memory to retrieve


update_memory

Update the content or priority of an existing memory. Prefer this over creating a duplicate when the user corrects or refines information that is already stored.

Parameter

Type

Required

Description

memory_id

string

Yes

ID of the memory to update

memory

string

No

New content

priority

string

No

New priority: LOW, MEDIUM, or HIGH


delete_memory

Permanently delete a memory. Use when the user explicitly asks to forget something, or when a memory is clearly outdated. Search first if you do not have the ID.

Parameter

Type

Required

Description

memory_id

string

Yes

ID of the memory to delete


promote_memory

Promote a temporary memory to permanent status. Memories stored as task-scoped (with an expiration) can be made permanent with this tool when the context proves to be persistently relevant.

Parameter

Type

Required

Description

memory_id

string

Yes

ID of the memory to promote


submit_feedback

Submit quality feedback on a memory. Positive and negative signals improve memory quality over time.

Parameter

Type

Required

Description

memory_id

string

Yes

ID of the memory to rate

signal

string

Yes

POSITIVE, NEGATIVE, or NEUTRAL

comment

string

No

Optional explanation of the feedback


get_memory_history

Retrieve the full event history of a memory: creation, updates, promotions, and feedback signals. Use to understand how a memory evolved or diagnose unexpected behavior.

Parameter

Type

Required

Description

memory_id

string

Yes

ID of the memory

limit

string

No

Maximum number of events (default: 20)


Knowledge Tools

These tools require a plan that includes Knowledge Graph access (Pro or above).

get_knowledge

Get the consolidated knowledge profile built from processed memories. Set merged=true (the default) to receive a complete Markdown profile. Set merged=false to paginate through individual knowledge entries.

Parameter

Type

Required

Description

user_id

string

No

Filter knowledge by user

category

string

No

Filter by knowledge category

merged

string

No

true (default) for a merged Markdown profile, false for paginated entries

Call this at the start of a conversation to load the full context profile for a user before responding.


get_knowledge_entry

Retrieve a specific knowledge entry by ID, including the source memory IDs that contributed to it.

Parameter

Type

Required

Description

knowledge_id

string

Yes

ID of the knowledge entry


Graph Tools

These tools require a plan that includes Knowledge Graph access (Pro or above).

Search for entities in the knowledge graph. Entities include people, organizations, places, and things mentioned across memories.

Parameter

Type

Required

Description

query

string

Yes

Text query to search for entities

user_id

string

No

Filter entities by user

type

string

No

PERSON, ORGANIZATION, PLACE, or THING

limit

string

No

Maximum number of results (default: 10)


graph_traverse

Navigate relationships starting from a known entity. Useful for exploring who an entity is connected to — colleagues, projects, organizations. Use graph_search first if you need to find the entity ID.

Parameter

Type

Required

Description

entity_id

string

Yes

ID of the starting entity

direction

string

No

outgoing, incoming, or both (default: both)

hops

string

No

Traversal depth between 1 and 3 (default: 2)


graph_query

Answer a natural language question using the knowledge graph. Returns an answer with a confidence score and the entities used to construct it.

Parameter

Type

Required

Description

question

string

Yes

Natural language question (e.g., "What projects is João involved in?")


Utility Tools

These tools are available on all plans that include MCP access.

get_dashboard_summary

Get workspace KPIs — total memories stored, searches performed, and tokens consumed — with a comparison to the previous period.

Parameter

Type

Required

Description

days

string

No

Time window in days (default: 30)


get_memory_profile

Get a summarized profile of a user built from their stored memories: key topics, entity count, and a narrative summary.

Parameter

Type

Required

Description

user_id

string

Yes

ID of the user to profile


list_entities

List all users and agents in the workspace with their memory counts. Use to discover who has memories stored or to compare activity across entities.

This tool takes no parameters.


Resources

Resources are read-only data endpoints that MCP clients can load as context. They are accessible via URI.

URI

Name

Description

MIME Type

memsolus://workspace/summary

Workspace Summary

KPIs and current workspace state

application/json

memsolus://knowledge/merged

Merged Knowledge

Complete merged knowledge base in Markdown

application/json

memsolus://memory/{id}

Memory by ID

Single memory retrieved by its ID

application/json

memsolus://entities

Entities

All users and agents with memory counts

application/json

memsolus://knowledge/merged is only available on plans with Knowledge Graph access.


Prompts

Prompts are pre-built interaction templates that combine tool calls with structured output. Clients that support MCP prompts can invoke them by name.

recall-context

Retrieve and format relevant context before starting a task. Searches memories and loads the knowledge profile for a given topic, returning both in a single response.

Argument

Required

Description

topic

Yes

Topic to search for in stored memories


session-handoff

Save relevant context at the end of a session. Stores the provided summary as a high-priority persistent memory so it is available in future conversations.

Argument

Required

Description

summary

Yes

Summary of what was accomplished in the session


decision-log

Record a decision as a high-priority persistent memory, including the alternatives that were considered and the reasoning behind the final choice.

Argument

Required

Description

decision

Yes

The decision that was made

alternatives

No

Alternative options that were considered

reason

No

Justification for why this option was chosen


Plan-Based Tool Availability

The server checks your plan entitlements at startup and registers only the tools your plan includes. This is done automatically — you do not need to configure anything.

Feature set

Tools included

Required plan

Memory

add_memory, search_memories, get_memories, get_memory, update_memory, delete_memory, promote_memory, submit_feedback, get_memory_history

Any plan with MCP access

Utilities

get_dashboard_summary, get_memory_profile, list_entities

Any plan with MCP access

Knowledge + Graph

get_knowledge, get_knowledge_entry, graph_search, graph_traverse, graph_query

Pro plan or above

If a tool does not appear in your client's tool list, it is because your current plan does not include that feature. Upgrade at app.memsolus.com/settings/billing.

If the server cannot reach the Memsolus API at startup to verify your entitlements, it registers all tools by default and lets the API enforce access. This prevents startup failures caused by temporary network issues.


Examples

Storing a decision

Tell your assistant:

"Remember that we decided to use PostgreSQL instead of MongoDB for the user service. The reason was strong consistency requirements for financial transactions."

The assistant calls add_memory with priority HIGH, and the decision is stored as a permanent memory associated with your workspace.


Searching past context

Ask your assistant:

"What do you remember about our authentication architecture?"

The assistant calls search_memories with query "authentication architecture" in hybrid mode, retrieves ranked results, and summarizes what Memsolus knows on that topic.


Exploring the knowledge graph

Ask your assistant:

"Who are the main people involved in the billing module and how are they connected?"

The assistant calls graph_search to find entities related to the billing module, then calls graph_traverse on the most relevant entity to map its relationships. It can also use graph_query directly:

"What projects is the backend team involved in?"

graph_query takes the natural language question, answers it using the knowledge graph, and returns the result with a confidence score.


Loading context at the start of a conversation

For clients that support MCP prompts, invoke recall-context with the topic you are about to work on:

prompt: recall-context
arguments:
  topic: "billing refactor"

This runs a memory search and loads the full knowledge profile in a single step, giving the assistant the full context before it responds.


Saving context at the end of a session

Invoke session-handoff before closing the conversation:

prompt: session-handoff
arguments:
  summary: "Reviewed billing module. Decided to split the invoice service into two microservices. Deferred payment retry logic to next sprint."

The summary is stored as a high-priority memory and will be available when you return.


Troubleshooting

Tools do not appear in my client

  1. Confirm that MEMSOLUS_API_KEY is set and starts with msk_

  2. Confirm that your plan includes MCP access — check app.memsolus.com/settings/billing

  3. Restart your MCP client after changing the config

  4. On Claude Desktop, check ~/Library/Logs/Claude/ for server startup errors

Knowledge and graph tools are missing

These tools require a Pro plan or above. If you are on a free or starter plan, only memory and utility tools are registered. Upgrade at app.memsolus.com/settings/billing.

UNAUTHORIZED error when calling a tool

Your API key is invalid or has expired. Generate a new key at app.memsolus.com/settings/api-keys and update your config.

ENTITLEMENT_NOT_AVAILABLE error

The tool or feature you are trying to use is not included in your plan. The server registered the tool because entitlements could not be confirmed at startup, but the API rejected the call. Upgrade your plan or check that your API key belongs to the correct workspace.

RATE_LIMIT error

You have exceeded the request rate for your plan. Wait a few seconds and retry. If you are hitting rate limits consistently, consider batching calls or upgrading to a plan with higher limits.

The server fails to start with MEMSOLUS_API_KEY environment variable is required

The environment variable is not visible to the MCP server process. Make sure the env block in your client config includes the key explicitly, or that the variable is exported in the shell environment that launches your client.



License

MIT

Available Tools

14 tools
add_memoryA

Store a new persistent memory. Use when the user shares a fact, preference, decision, or any context worth remembering across conversations.

When to use: User states a preference ("I prefer dark mode"), shares a fact ("Our API runs on port 3000"), makes a decision ("We chose PostgreSQL"), or says "remember this". When NOT to use: Temporary info, greetings, acknowledgments, or things that only matter for the current conversation.

The memory enters an async pipeline: extraction → embedding → consolidation → knowledge compilation. It becomes searchable within seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault
memoryYesA clear, self-contained statement. Write as a complete sentence, e.g. "Prefers TypeScript over JavaScript for backend" or "O projeto usa NestJS 11 com Fastify". Use the SAME LANGUAGE the user spoke in.
user_idNoEnd-user ID to scope this memory. Without it, memory is global to the workspace.
agent_idNoAgent ID storing this memory. For multi-agent setups.
session_idNoCurrent session ID. Groups memories from the same conversation.
metadataNoJSON string with structured data, e.g. '{"source": "chat", "topic": "infrastructure"}'.
priorityNoLOW = supplementary, may be summarized. MEDIUM (default) = standard facts. HIGH = critical rules the user explicitly emphasized ("always", "never", "must").
pool_idNoUUID of a shared pool. Prefer add_memory_to_pool for clearer intent.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It explains the async pipeline process (extraction → embedding → consolidation → knowledge compilation) and latency ('becomes searchable within seconds'), which are important behavioral traits not inferable from the schema alone. It doesn't cover error conditions or permissions, keeping it from a perfect score.

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 well-structured with clear sections (purpose, usage guidelines, behavioral details) and every sentence adds value. It's front-loaded with the core purpose, avoids redundancy, and maintains an efficient length for the complexity of the 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?

For a tool with 7 parameters, no annotations, and no output schema, the description provides strong contextual coverage. It explains purpose, usage, behavioral process, and latency. The main gap is lack of information about return values or error handling, which would be helpful given the absence of output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema, but it does provide overall context about what constitutes a good 'memory' value, which slightly enhances understanding. 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 purpose with specific verb ('Store') and resource ('persistent memory'), and distinguishes it from siblings by specifying it's for storing new memories rather than retrieving, updating, or deleting them. The opening sentence establishes the core function unambiguously.

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

Usage Guidelines5/5

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

The description provides explicit guidance with dedicated 'When to use' and 'When NOT to use' sections, listing concrete examples of appropriate scenarios (preferences, facts, decisions) and exclusions (temporary info, greetings). It also references sibling tool 'add_memory_to_pool' as an alternative for specific use cases.

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

add_memory_to_poolA

Store a memory in a shared pool, visible to all pool members. Use instead of add_memory when info is relevant to a team/group, not just one user.

When to use: Team decisions, shared project facts, group preferences. Example: "The team agreed to use PostgreSQL for all new services." When NOT to use: Personal preferences or individual context (use add_memory).

ParametersJSON Schema
NameRequiredDescriptionDefault
pool_idYesUUID of the target pool (get from list_pools).
memoryYesClear, self-contained statement. Same language as the user.
user_idNoUser contributing this memory.
agent_idNoAgent contributing this memory.
priorityNoPriority level.
metadataNoJSON string with structured data.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining the tool's key behavioral trait: memories are 'visible to all pool members' (shared visibility). It doesn't cover other potential behavioral aspects like error conditions, rate limits, or authentication requirements, but provides solid core context.

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 perfectly structured and front-loaded with the core purpose, followed by usage guidelines. Every sentence earns its place with no wasted words, and the bullet-point style for usage guidelines enhances readability without sacrificing conciseness.

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

Completeness4/5

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

For a write operation with no annotations and no output schema, the description provides strong contextual completeness by clearly explaining the tool's purpose, usage context, and key behavioral trait (shared visibility). It could be more complete by mentioning what happens on success/failure or return values, but covers the essential context well.

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

Parameters3/5

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

With 100% schema description coverage, the schema already documents all 6 parameters thoroughly. The description adds minimal parameter-specific context beyond the schema (only implying 'memory' should be team-relevant information), meeting the baseline 3 for high 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 specific action ('Store a memory in a shared pool') and resource ('shared pool'), and explicitly distinguishes it from the sibling tool 'add_memory' by specifying it's for team/group relevance rather than individual user context. This provides excellent differentiation from alternatives.

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

Usage Guidelines5/5

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

The description provides explicit guidance with dedicated 'When to use' and 'When NOT to use' sections, including concrete examples ('Team decisions, shared project facts, group preferences') and a clear alternative ('use add_memory'). This gives the agent perfect context for tool selection.

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

delete_memoryA

Permanently remove a memory by ID. Also removes it from vector index and knowledge graph.

When to use: Info is completely wrong, user explicitly says "forget this" or "remove that". When NOT to use: Info just needs correction (use update_memory instead).

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYesUUID of the memory to delete. Search first if you only have the memory text.

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: the operation is permanent ('permanently remove'), has side effects on related data structures ('removes it from vector index and knowledge graph'), and requires a specific identifier ('by ID'). However, it doesn't mention potential errors (e.g., invalid ID), permissions, or rate limits, leaving some gaps.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by clear usage guidelines in bullet-like sections. Every sentence earns its place by adding critical information without redundancy, making it highly efficient 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 tool's complexity (destructive operation with side effects), no annotations, and no output schema, the description does well by covering purpose, usage, and parameter guidance. However, it lacks details on error handling or return values, which could be important for a deletion tool, leaving minor gaps in completeness.

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 description coverage is 100%, so the schema already documents the single parameter 'memory_id' as a UUID. The description adds value by emphasizing the need to 'search first if you only have the memory text,' providing practical guidance beyond the schema's technical definition.

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

Purpose5/5

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

The description clearly states the action ('permanently remove'), the resource ('a memory by ID'), and the scope of the operation ('also removes it from vector index and knowledge graph'). It distinguishes this tool from its sibling 'update_memory' by emphasizing permanent deletion versus correction.

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

Usage Guidelines5/5

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

The description explicitly provides 'When to use' scenarios (info is completely wrong, user explicitly says 'forget this' or 'remove that') and 'When NOT to use' guidance (info just needs correction, use update_memory instead). It names a specific alternative tool, making it clear when to choose this over siblings.

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

get_knowledgeA

Retrieve the user's consolidated knowledge profile — a structured Markdown document compiled automatically from their memories.

When to use: START OF EVERY CONVERSATION. Call with merged=true to load the full user context before responding. This is the most efficient way to understand who the user is and what they care about. When NOT to use: Looking for specific info (use search_memories). Knowledge may not exist yet for brand-new users — fall back to search_memories if this returns empty.

Knowledge is compiled from memories through the processing pipeline: individual memories → consolidation → grouped topics → knowledge base. It maintains versions and gets richer as more memories are added.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoUser whose knowledge to load. Defaults to "default".
categoryNoFilter to one category (e.g. "preferences", "work", "projects"). Omit for all.
mergedNotrue = single Markdown document with all categories (RECOMMENDED for context loading). false = categories returned separately.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: it retrieves a consolidated knowledge profile compiled from memories through a processing pipeline, maintains versions, and gets richer over time. It also mentions that knowledge may not exist for new users and suggests a fallback. However, it doesn't detail potential rate limits, authentication needs, or exact response format beyond 'structured Markdown document.'

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

Conciseness4/5

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

The description is well-structured and appropriately sized. It front-loads the purpose, followed by usage guidelines and behavioral context. Each sentence adds value: the first defines the tool, the second provides usage rules, the third gives behavioral details. There's minimal redundancy, though the explanation of the processing pipeline could be slightly more concise.

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

Completeness4/5

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

Given the tool's complexity (consolidated knowledge with a processing pipeline) and the absence of both annotations and an output schema, the description does a good job of providing context. It explains what the tool returns, when to use it, and how it relates to other tools. However, without an output schema, it could benefit from more detail about the exact structure of the Markdown document or example output to fully compensate for the missing structured data.

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 description coverage is 100%, so the schema already documents all three parameters. The description adds some semantic context: it explains that 'merged=true' is 'RECOMMENDED for context loading' and that the knowledge is 'compiled from memories through the processing pipeline.' However, it doesn't provide additional meaning beyond what's in the schema descriptions for user_id or category parameters. The baseline of 3 is appropriate when the schema does most of the work.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Retrieve the user's consolidated knowledge profile — a structured Markdown document compiled automatically from their memories.' It specifies the verb ('retrieve'), resource ('knowledge profile'), and format ('structured Markdown document'), distinguishing it from sibling tools like search_memories or get_memories that handle individual memories rather than consolidated knowledge.

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines: 'When to use: START OF EVERY CONVERSATION. Call with merged=true to load the full user context before responding.' It also specifies when not to use: 'When NOT to use: Looking for specific info (use search_memories).' and mentions fallback behavior: 'Knowledge may not exist yet for brand-new users — fall back to search_memories if this returns empty.' This clearly differentiates it from alternatives.

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

get_memoriesA

List stored memories chronologically with pagination. Unlike search_memories, this does NOT rank by relevance.

When to use: Browsing, auditing, or when you need to see everything — not find something specific. When NOT to use: Looking for specific info (use search_memories) or loading user profile (use get_knowledge).

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idNoFilter to one user.
agent_idNoFilter to one agent.
pageNoPage number (starts at 1).
page_sizeNoItems per page (default 10, max 100).

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: chronological ordering, pagination support, and the absence of relevance ranking. However, it doesn't mention potential rate limits, authentication requirements, or error conditions, leaving some behavioral aspects uncovered.

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 efficiently structured with two brief paragraphs: one stating the core functionality and differentiation, and another providing clear usage guidelines. Every sentence adds value without redundancy, and key information is front-loaded.

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

Completeness4/5

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

For a read-only list tool with no output schema, the description provides good context about ordering, pagination, and sibling differentiation. However, it doesn't describe the return format (e.g., what fields memories include) or potential limitations like maximum result sets, leaving minor gaps in 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?

The schema description coverage is 100%, providing full parameter documentation. The description adds no additional parameter semantics beyond what's in the schema (e.g., it doesn't explain interactions between user_id and agent_id filters). This meets the baseline expectation when schema coverage is high.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('List stored memories chronologically with pagination') and explicitly distinguishes it from its sibling 'search_memories' by noting it 'does NOT rank by relevance.' This provides clear differentiation from alternatives.

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

Usage Guidelines5/5

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

The description includes explicit 'When to use' and 'When NOT to use' sections, naming specific alternatives ('search_memories' and 'get_knowledge') and providing clear contexts ('Browsing, auditing, or when you need to see everything' vs. 'Looking for specific info' or 'loading user profile'). This offers comprehensive guidance on tool selection.

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

get_memoryA

Retrieve a single memory by ID. Use when you have an ID from search results and need full details (timestamps, metadata, categories).

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYesUUID of the memory.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It mentions retrieving 'full details (timestamps, metadata, categories)', which adds useful context about the return format. However, it doesn't disclose other behavioral traits like error handling, permissions needed, or rate limits, leaving some gaps for a tool with no annotation coverage.

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 that are front-loaded with the core purpose and usage guidelines. Every word earns its place, with no redundancy or unnecessary elaboration, making it highly efficient and easy to parse.

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 low complexity (1 parameter, no nested objects) and high schema coverage, the description is mostly complete. It covers purpose, usage, and some return details. However, with no output schema and no annotations, it could benefit from more behavioral context like error cases or response structure, slightly reducing 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 description coverage is 100%, so the schema already documents the 'memory_id' parameter as a UUID. The description adds minimal value beyond this by implying the ID comes from search results, but doesn't provide additional syntax or format details. This meets the baseline for high 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 purpose with a specific verb ('Retrieve') and resource ('a single memory by ID'), and distinguishes it from siblings like 'get_memories' (plural) and 'search_memories' by specifying it's for single-item retrieval when you already have an ID. This provides precise differentiation.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Use when you have an ID from search results and need full details'), providing clear context for its application. It implies alternatives like 'search_memories' for when you don't have an ID, making the guidance comprehensive and actionable.

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

graph_queryA

Ask a natural language question about the knowledge graph and get an AI-generated answer. Most powerful graph tool — uses LLM to interpret relationships and compose an answer.

When to use: Complex relationship questions. Examples: "Who on the team knows Kubernetes?", "What technologies does Project Alpha use?", "How are João and TechCorp connected?" When NOT to use: Simple entity lookup (use graph_search — cheaper). Simple memory retrieval (use search_memories — faster). This tool consumes LLM tokens for answer generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language question about entities and relationships. Be specific.
user_idNoScope to one user's graph data.
limitNoMax entities to consider (default 10). Higher = more complete but slower.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: the tool uses LLM for interpretation and answer generation, consumes tokens (implying cost/rate limits), and has performance characteristics (slower with higher limits). However, it doesn't mention permissions, error handling, or response format, leaving some gaps.

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

Conciseness5/5

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

The description is well-structured and front-loaded, with the core purpose stated first, followed by usage guidelines and examples. Every sentence adds value—no wasted words—and it efficiently communicates essential information in a compact form.

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

Completeness4/5

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

Given the tool's complexity (LLM-based querying) and lack of annotations or output schema, the description does a good job covering purpose, usage, and behavioral traits. However, it doesn't explain the return format or potential errors, which could be important for an AI agent. It's mostly complete but has minor 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 thoroughly. The description adds minimal value beyond the schema—it implies natural language input for 'query' but doesn't provide additional syntax or format details. Baseline 3 is appropriate as the 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 purpose with specific verbs ('ask a natural language question', 'get an AI-generated answer') and distinguishes it from siblings by emphasizing its unique capability ('Most powerful graph tool — uses LLM to interpret relationships and compose an answer'). It explicitly differentiates from graph_search and search_memories, making its role distinct.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use ('Complex relationship questions') and when not to use ('Simple entity lookup', 'Simple memory retrieval'), naming specific alternatives (graph_search and search_memories) and explaining trade-offs (cost and speed). This gives clear context for tool selection.

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

graph_traverseA

Walk relationships from a starting entity, bidirectionally, up to 3 hops deep.

When to use: You found an entity via graph_search and want to discover connections. E.g. from a person → their organization, projects, technologies. From a technology → who uses it, what depends on it. When NOT to use: You don't have an entity ID yet (use graph_search first). You want a natural language answer (use graph_query).

Typical workflow: graph_search("João") → get entity ID → graph_traverse(from=id) → see all connections.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYesUUID of starting entity (from graph_search results).
depthNoHops to follow (default 2, max 3). Higher = more connections but more data.
relationship_typeNoOnly this relationship type: WORKS_AT, USES, KNOWS, MANAGES, DEPENDS_ON, etc. Omit for all.
entity_typeNoOnly target entities of this type: PERSON, ORGANIZATION, TECHNOLOGY, PROJECT, etc.
limitNoMax connected nodes (default 50).

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the tool traverses relationships bidirectionally, has a depth limit (3 hops), and provides concrete examples of relationship discovery. However, it doesn't mention performance characteristics like rate limits or potential data volume impacts, which would be helpful for a traversal tool.

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

Conciseness5/5

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

The description is perfectly structured and concise: it starts with the core functionality, then provides clear usage guidelines with 'When to use'/'When NOT to use' sections, and ends with a workflow example. Every sentence adds value with zero wasted words, and the information is front-loaded appropriately.

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 graph traversal tool with 5 parameters, 100% schema coverage, but no annotations or output schema, the description provides excellent contextual completeness. It covers purpose, usage guidelines, behavioral context, and workflow examples. The only minor gap is the lack of information about return format or structure, which would be helpful since there's no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description doesn't add significant parameter semantics beyond what's in the schema - it mentions the 'from' parameter in the workflow example but doesn't provide additional context about parameter interactions or usage patterns. The baseline of 3 is appropriate when the 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 purpose with specific verbs ('walk relationships', 'discover connections') and resources ('starting entity', 'bidirectionally', 'up to 3 hops deep'). It distinguishes this tool from sibling tools like graph_search (prerequisite) and graph_query (alternative for natural language queries).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use ('You found an entity via graph_search and want to discover connections'), when NOT to use ('You don't have an entity ID yet', 'You want a natural language answer'), and alternatives ('use graph_search first', 'use graph_query'). It includes a typical workflow example that reinforces proper usage.

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

list_entitiesA

List all users and agents that have stored memories, with memory count per entity. Use to discover who is in the system before scoping searches.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It describes the tool's behavior (listing entities with memory counts) but doesn't disclose important behavioral traits like whether this is a read-only operation, potential rate limits, authentication requirements, or pagination behavior. The description provides basic functionality but lacks operational details.

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

Conciseness5/5

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

The description is perfectly concise with two sentences that each serve distinct purposes: the first defines the tool's function, the second provides usage guidance. Every word earns its place with zero redundancy or unnecessary elaboration.

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?

For a tool with no annotations, no output schema, and 0 parameters, the description provides adequate basic information about what the tool does and when to use it. However, it doesn't describe the return format (what the list looks like, structure of entities with memory counts) or address potential limitations, which would be helpful given the lack of structured output documentation.

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

Parameters4/5

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

With 0 parameters and 100% schema description coverage, the baseline is 4. The description appropriately doesn't discuss parameters since there are none, and the schema fully documents the empty input structure.

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 specific action ('List all users and agents'), the target resource ('that have stored memories'), and includes a distinguishing feature ('with memory count per entity'). It precisely defines what the tool does without being tautological.

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

Usage Guidelines5/5

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

The description explicitly provides usage guidance: 'Use to discover who is in the system before scoping searches.' This tells the agent when to use this tool (for discovery before more targeted operations) and implies alternatives like search_memories or get_memories for more specific queries.

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

list_poolsA

List all shared memory pools in the workspace. Pools are collaborative spaces where multiple users/agents contribute and read memories. Returns name, access level, member count, and memory count per pool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that this is a read operation (lists pools) and describes the return format (name, access level, member count, memory count), but doesn't mention potential limitations like pagination, rate limits, or authentication requirements.

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

Conciseness5/5

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

Two sentences with zero waste: the first states the action and resource, the second adds context about pools and specifies the return data. Every sentence adds value beyond what's obvious from 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 simple list tool with 0 parameters and no output schema, the description is reasonably complete: it explains what the tool does, what pools are, and what data is returned. However, without annotations or output schema, it could benefit from more behavioral context (e.g., pagination, sorting).

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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on the tool's purpose and output.

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

Purpose5/5

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

The description clearly states the verb ('List') and resource ('all shared memory pools in the workspace'), specifying what information is returned (name, access level, member count, memory count). It distinguishes from siblings like 'search_pool' by indicating this lists ALL pools without filtering.

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

Usage Guidelines4/5

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

The description implies usage context by stating it lists 'all shared memory pools in the workspace' and describes pools as 'collaborative spaces where multiple users/agents contribute and read memories.' However, it doesn't explicitly state when to use this vs. alternatives like 'search_pool' or provide exclusions.

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

search_memoriesA

Find relevant memories by meaning, keywords, or both. This is the primary retrieval tool.

When to use: You need context about a topic, want to recall stored info, or the user asks "what do you know about X?". When NOT to use: You need the full user profile (use get_knowledge instead) or want to browse chronologically (use get_memories).

Search modes:

  • hybrid (default): combines semantic + keyword — best for most queries

  • semantic: finds conceptually related memories even with different wording — use for "how does X work?"

  • keyword: exact term matching — use for names, IDs, file paths, specific technical terms

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language query. Be specific: "user preferences for code style" > "preferences". Use the same language the memories were stored in.
user_idNoScope to one user. Omit to search all users in workspace.
agent_idNoScope to one agent.
limitNoMax results (default 10, max 100). Start with 10.
modeNoSearch strategy. Default: hybrid.
priorityNoFilter to one priority level only.
pool_idNoRestrict to a specific shared pool.
include_pool_memoriesNoAlso include memories from pools the user belongs to. Default false.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining the tool's primary retrieval function and search modes. It could improve by mentioning potential limitations (e.g., search accuracy, performance characteristics) or authentication requirements, but covers core behavioral aspects adequately for a retrieval tool.

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

Conciseness5/5

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

The description is well-structured with clear sections (purpose, usage guidelines, search modes), front-loaded with the core purpose, and every sentence adds value. No wasted words while maintaining comprehensive coverage.

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 retrieval tool with 8 parameters, 100% schema coverage, and no output schema, the description provides excellent context about when to use, search modes, and sibling differentiation. It could slightly improve by mentioning what the output looks like (memory objects with scores?) since there's no output schema, but otherwise very complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds value by explaining the three search modes (hybrid, semantic, keyword) with usage examples, but doesn't provide additional parameter semantics beyond what's in the schema descriptions. Baseline 3 is appropriate when schema does 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 purpose: 'Find relevant memories by meaning, keywords, or both' and identifies it as 'the primary retrieval tool.' It distinguishes from siblings like get_knowledge (full user profile) and get_memories (chronological browsing), providing specific verb+resource differentiation.

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

Usage Guidelines5/5

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

The description explicitly provides 'When to use' scenarios (need context, recall stored info, user asks about X) and 'When NOT to use' with named alternatives (get_knowledge for full profile, get_memories for chronological browsing). It also includes guidance on search mode selection with specific examples.

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

search_poolA

Search within a specific shared pool. Like search_memories but scoped to one pool. Use for team/project context.

ParametersJSON Schema
NameRequiredDescriptionDefault
pool_idYesUUID of the pool to search.
queryYesNatural language query in the same language as pool memories.
limitNoMax results (default 10).
modeNoSearch strategy. Default: hybrid.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions scoping to one pool, it doesn't describe what gets returned (formats, structure), whether results are paginated, authentication requirements, rate limits, or error conditions. For a search tool with no annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is extremely concise with just two sentences that each serve a clear purpose: the first defines the tool's function, and the second provides usage guidance. There's zero wasted language or redundancy.

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

Completeness3/5

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

For a search tool with 4 parameters, 100% schema coverage, but no annotations and no output schema, the description provides adequate basic context about purpose and scoping. However, it doesn't address what the search returns (formats, structure) or behavioral aspects like error handling, which would be important for a tool with no output 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?

The schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what's already in the schema descriptions. This meets the baseline expectation when schema coverage is complete.

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 searches within a specific shared pool, which is a specific verb+resource combination. It distinguishes from sibling 'search_memories' by specifying the scoping to one pool, though it doesn't fully differentiate from other search-related siblings like 'graph_search' or 'graph_query'.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('for team/project context') and explicitly mentions the alternative 'search_memories' for comparison. However, it doesn't specify when NOT to use it or mention other potential alternatives among the many sibling tools.

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

update_memoryA

Replace an existing memory with new text. Triggers re-processing (new embedding, re-categorization, re-consolidation).

When to use: User corrects a fact, a preference changed, or info is outdated. PREFER this over delete+add when fixing existing info. When NOT to use: The info is completely wrong and should just be removed (use delete_memory).

ParametersJSON Schema
NameRequiredDescriptionDefault
memory_idYesUUID of the memory to update.
memoryYesNew memory text that fully replaces the existing one. Write as a complete, self-contained statement.
priorityNoOptionally change priority.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the mutation nature ('Replace'), consequences (triggers re-processing including embedding, categorization, consolidation), and operational preferences (prefer over delete+add). However, it lacks details on permissions, error handling, or rate limits, which would elevate it to a 5.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by structured usage guidelines. Every sentence earns its place by providing essential operational or contextual information without redundancy, making it highly efficient and well-organized.

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 mutation complexity and lack of annotations or output schema, the description is largely complete for tool selection—it covers purpose, usage, and behavioral effects. However, it omits details on return values or error responses, which would be needed for full invocation support, preventing a perfect score.

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 thoroughly. The description does not add any additional meaning or context beyond what the schema provides for memory_id, memory, or priority, resulting in a baseline score of 3.

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 specific action ('Replace an existing memory with new text') and resource ('memory'), distinguishing it from siblings like delete_memory (removal) and add_memory (creation). It explicitly mentions triggering re-processing, which adds operational context beyond basic replacement.

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

Usage Guidelines5/5

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

The description provides explicit 'When to use' scenarios (correcting facts, preference changes, outdated info) and 'When NOT to use' guidance (completely wrong info, directing to delete_memory). It also advises preferring this tool over delete+add for fixing existing info, offering clear alternatives.

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. 14 tool updatesv0.3.0
    • First observedadd_memory
    • First observedadd_memory_to_pool
    • First observeddelete_memory
    • First observedget_knowledge
    • First observedget_memories
    • First observedget_memory
    • First observedgraph_query
    • First observedgraph_search
    • First observedgraph_traverse
    • First observedlist_entities
    • First observedlist_pools
    • First observedsearch_memories
    • First observedsearch_pool
    • First observedupdate_memory

TDQS

A4.3/5.0

Scored across 14 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with minimal overlap. For example, add_memory vs. add_memory_to_pool differentiate personal vs. shared storage, while search_memories, get_memories, and get_knowledge serve different retrieval needs (semantic search, chronological listing, and consolidated profile). The descriptions explicitly guide when to use and not use each tool, preventing confusion.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern throughout, such as add_memory, delete_memory, get_knowledge, search_memories, and graph_query. All tools use snake_case without deviation, making them predictable and easy to understand at a glance.

Tool Count5/5

With 14 tools, the server offers comprehensive coverage for memory management without being overwhelming. The count aligns well with the domain's scope, including operations for storing, retrieving, updating, deleting, and analyzing memories, as well as graph-based queries and pool management, ensuring each tool has a clear role.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for memory management (add, get, update, delete) and extends to advanced features like semantic search, knowledge graph traversal, and pool collaboration. There are no obvious gaps; tools like get_knowledge and graph_query handle high-level needs, while search_memories and graph_search cover specific retrievals, enabling smooth agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    F
    maintenance
    Provides AI agents with persistent memory and knowledge management through a comprehensive knowledge graph platform. Enables storing, searching, and managing entities, relationships, and observations with advanced features like trending analysis and smart ranking.
    3
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.
    14
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides persistent knowledge graph memory for AI agents, enabling them to store, recall, and query facts about people, projects, and relationships across sessions.
    MIT