Skip to main content
Glama

Server Details

Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.

Ownership verified
Status
Healthy
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
Repository
penfieldlabs/penfield-mcp
GitHub Stars
6
Server Listing
Penfield AI Memory

TDQS

A4.1/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have distinct roles (store, recall, connect, explore, reflect, artifacts). The main ambiguity is between the ChatGPT-compat tools (search, fetch) and their native equivalents (recall, update_memory); however, descriptions explicitly clarify the overlap.

Naming Consistency4/5

Most names are single verbs (store, recall, connect, explore) or verb_noun patterns (list_artifacts, save_artifact, restore_context). Minor inconsistencies: single-word vs verb_noun mix, and 'awaken' is poetic rather than descriptive, but nothing chaotic.

Tool Count3/5

17 tools is on the heavier side for a memory server. The ChatGPT-compat tools (search, fetch) are largely redundant with recall, and personality tools (awaken) blur with context tools, so a few tools do not clearly earn their place.

Completeness4/5

Strong coverage of the memory lifecycle: store, update, recall, connect, explore, reflect, save/restore context, and artifact CRUD. Minor gaps: no delete_memory or list_memories, but practical workflows can work around these.

Available Tools

17 tools
awakenA
Read-only
Inspect
⚡ CALL THIS TOOL FIRST IN EVERY NEW CONVERSATION ⚡

Loads your personality configuration and user preferences for this session.
This is how you learn WHO you are and HOW the user wants you to behave.

Returns your awakening briefing containing:
- Your persona identity (who you are)
- Your voice style (how to communicate)
- Custom instructions from the user
- Quirks and boundaries to follow

IMPORTANT: Call this at the START of every conversation before doing
anything else. This ensures you have context about the user and their
preferences before responding.

Example:
    >>> await awaken()
    {'success': True, 'briefing': '=== AWAKENING BRIEFING ===...'}
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds significant context: it returns a briefing with persona, voice, custom instructions, and boundaries, and emphasizes the need to call it every new conversation.

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 front-loaded with an imperative instruction, uses formatting (emojis, example) for clarity. It is slightly verbose but every sentence provides necessary context.

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 is complete. It covers purpose, usage, and return content comprehensively.

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?

No parameters exist, so baseline is 4. The description adds value by detailing the structure of the return briefing, which complements the output 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 explicitly states that the tool loads personality configuration and user preferences, and must be called first. The verb 'awaken' is clearly defined as initialization.

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 says 'CALL THIS TOOL FIRST IN EVERY NEW CONVERSATION' and explains why, providing strong when-to-use guidance. No alternatives needed as it's the primary initialization tool.

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

connectAInspect
Connect memories to build knowledge graphs.

After using 'store', immediately connect related memories using these relationship types:

## Knowledge Evolution
- **supersedes**: This replaces → outdated understanding
- **updates**: This modifies → existing knowledge
- **evolution_of**: This develops from → earlier concept

## Evidence & Support
- **supports**: This provides evidence for → claim/hypothesis
- **contradicts**: This challenges → existing belief
- **disputes**: This disagrees with → another perspective

## Hierarchy & Structure
- **parent_of**: This encompasses → more specific concept
- **child_of**: This is a subset of → broader concept
- **sibling_of**: This parallels → related concept at same level

## Cause & Prerequisites
- **causes**: This leads to → effect/outcome
- **influenced_by**: This was shaped by → contributing factor
- **prerequisite_for**: Understanding this is required for → next concept

## Implementation & Examples
- **implements**: This applies → theoretical concept
- **documents**: This describes → system/process
- **example_of**: This demonstrates → general principle
- **tests**: This validates → implementation or hypothesis

## Conversation & Reference
- **responds_to**: This answers → previous question or statement
- **references**: This cites → source material
- **inspired_by**: This was motivated by → earlier work

## Sequence & Flow
- **follows**: This comes after → previous step
- **precedes**: This comes before → next step

## Dependencies & Composition
- **depends_on**: This requires → prerequisite
- **composed_of**: This contains → component parts
- **part_of**: This belongs to → larger whole

## Quick Connection Workflow
After each memory, ask yourself:
1. What previous memory does this update or contradict? → `supersedes` or `contradicts`
2. What evidence does this provide? → `supports` or `disputes`
3. What caused this or what will it cause? → `influenced_by` or `causes`
4. What concrete example is this? → `example_of` or `implements`
5. What sequence is this part of? → `follows` or `precedes`

## Example
Memory: "Found that batch processing fails at exactly 100 items"
Connections:
- `contradicts` → "hypothesis about memory limits"
- `supports` → "theory about hardcoded thresholds"
- `influenced_by` → "user report of timeout errors"
- `sibling_of` → "previous pagination bug at 50 items"

The richer the graph, the smarter the recall. No orphan memories!

Args:
    from_memory: Source memory UUID
    to_memory: Target memory UUID
    relationship_type: Type from the categories above
    strength: Connection strength (0.0-1.0, default 0.5)
    ctx: MCP context (automatically provided)
    
Returns:
    Dict with success status, relationship_id, and connected memory IDs
ParametersJSON Schema
NameRequiredDescriptionDefault
strengthNo
to_memoryYes
from_memoryYes
relationship_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations indicate write operation (readOnlyHint=false). Description adds context: creates links, returns success/IDs. Does not contradict annotations, but could mention if connections are reversible or list any side effects like overwriting.

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?

Moderately long but well-structured with headings, bulleted categories, workflow steps, and example. Every section adds value; no redundancy. Could be slightly shorter but earns its length.

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 output schema existing, description covers all needed: parameter details, relationship semantics, usage guidance. No gaps remain for an agent to misuse the tool.

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

Parameters5/5

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

Schema has 0% description coverage, but description compensates fully: explains from_memory/to_memory as source/target, lists all relationship types with meanings, gives strength range and default (0.5) despite schema default null. This is thorough.

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 connects memories to build knowledge graphs, and distinguishes from 'store' by recommending immediate use after storing. The extensive relationship taxonomy and workflow make the purpose unambiguous.

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

Usage Guidelines5/5

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

Provides explicit timing ('After using store'), a structured workflow with questions, and an example. It implicitly advises against connecting unrelated memories by emphasizing relevance through relationship categories.

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

delete_artifactA
Destructive
Inspect
Delete an artifact from storage.

Permanently removes an artifact and its associated memory record.

Args:
    path: Full path of the artifact to delete
    ctx: MCP context (automatically provided)
    
Returns:
    Dict with success status
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark destructiveHint: true. Description adds value by stating that it also removes the associated memory record, providing behavioral context beyond the annotation.

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?

Very concise, clear sections for description, args, and returns. No redundant information; every sentence is essential.

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?

Single parameter is well-explained, output schema exists (implied), annotations cover destructiveness, and description fully describes the effect (permanent removal of artifact and memory record). Complete for a delete 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?

Input schema has no description for the path parameter (0% coverage). The description's Args section adds the meaning 'Full path of the artifact to delete', which compensates for the schema gap.

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

Purpose5/5

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

Description clearly states the tool deletes artifacts from storage, explicitly mentions permanent removal of both the artifact and its associated memory record, which distinguishes it from sibling tools like save_artifact or retrieve_artifact.

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?

No explicit guidance on when to use versus alternatives such as update or soft-delete. The destructive nature is implied but not directly contrasted with other operations.

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

disconnectA
Destructive
Inspect
Remove a connection between memories.

Deletes the relationship between two memories in the knowledge graph.

Args:
    from_memory: Source memory UUID
    to_memory: Target memory UUID
    ctx: MCP context (automatically provided)
    
Returns:
    Dict with success status and disconnected memory IDs
    
Examples:
    >>> await disconnect("uuid-abc", "uuid-def")
    {'success': True, 'from_id': '...', 'to_id': '...'}
ParametersJSON Schema
NameRequiredDescriptionDefault
to_memoryYes
from_memoryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

The annotations already indicate destructiveHint=true, and the description confirms it by stating 'Deletes'. The description adds no further behavioral context beyond what annotations suggest, such as specifics about what gets destroyed or side effects.

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 with a brief main sentence followed by Args, Returns, and Examples sections. It is relatively concise, though including the ctx parameter adds a small amount of noise.

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 two simple parameters and the existence of an output schema, the description covers the essential aspects. It explains both parameters, provides a return format, and includes an example. Minor gaps remain in usage guidelines.

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 has no descriptions for parameters (coverage 0%), so the description must compensate. It does so by explaining that 'from_memory' is the source UUID and 'to_memory' is the target UUID, and provides an example showing placeholder values.

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 the verb 'Remove' and the resource 'connection between memories'. It explicitly says it 'Deletes the relationship between two memories', making it distinct from the sibling tool 'connect'.

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 does not explicitly state when to use this tool versus alternatives. While the sibling 'connect' implies this is for removal, no direct guidance is provided about prerequisites, conditions, or when to prefer one over the other.

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

exploreA
Read-only
Inspect
Explore connections from a memory.

Traverses the knowledge graph to find related concepts, following
relationships up to the specified depth.

Args:
    start_memory: Starting memory UUID
    max_depth: How deep to traverse (default 3, max 10)
    relationship_types: Filter by specific relationship types (optional)
    ctx: MCP context (automatically provided)
    
Returns:
    Dict with paths found, max depth reached, and path details
    
Examples:
    >>> await explore("uuid-123", max_depth=2)
    {'success': True, 'paths_found': 5, 'max_depth_reached': 2, 'paths': [...]}
ParametersJSON Schema
NameRequiredDescriptionDefault
max_depthNo
start_memoryYes
relationship_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint and openWorldHint, but the description adds behavioral details: traversal depth limits (max 10), return format (dict with paths_found, max_depth_reached, paths), and an example. 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.

Conciseness4/5

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

The description is well-structured with Args, Returns, and Examples sections. It is clear and not overly long, though some redundancy exists (e.g., repeating types in Examples).

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 output schema and annotations, the description covers behavior, parameters, and return basics adequately. However, it lacks details on relationship_types format or how paths are structured, slightly limiting completeness.

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

Parameters5/5

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

With 0% schema description coverage, the description fully explains each parameter: start_memory (UUID), max_depth (default 3, max 10), relationship_types (optional filter), and ctx (automatically provided). This adds significant meaning 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 tool's purpose: 'Explore connections from a memory. Traverses the knowledge graph to find related concepts.' It distinguishes itself from sibling tools like 'search' and 'recall' by specifying graph traversal.

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 does not explicitly state when to use this tool versus alternatives. It provides examples but no guidance on context or exclusions, leaving usage implied.

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

fetchA
Read-only
Inspect
[ChatGPT Connector compat] Fetch memory by ID.

Exists to satisfy ChatGPT Deep Research's required `search`/`fetch` tool
contract. Native MCP clients should fetch via `recall` + memory_id, or
use the API's GET /memories/{id} endpoint directly.

Returns a single memory with citation support (id, title, url, text fields).

Args:
    id: Memory UUID to fetch
    ctx: MCP context

Returns:
    Dict with id, title, url, text, metadata fields
ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true. Description adds that it returns a single memory with citation support (id, title, url, text fields), and explains the tool's purpose 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.

Conciseness4/5

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

Well-structured with clear sections: purpose, rationale, args, returns. Slightly lengthy but every sentence is informative. Could be more concise.

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 read-only tool with one parameter and an output schema, the description covers purpose, usage context, return fields, and rationale. Complete and sufficient.

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?

Only one parameter (id) with 0% schema description coverage. Description adds 'Memory UUID to fetch', which clarifies the expected input beyond the raw schema type. Good but minimal additional context.

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 fetches a memory by ID, distinguishes it from native alternatives like recall, and specifies its role for ChatGPT Connector compatibility.

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

Usage Guidelines5/5

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

Explicitly states when to use (ChatGPT Deep Research requirement) and when not to (native MCP clients should use recall or API endpoint). Provides clear alternatives.

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

list_artifactsA
Read-only
Inspect
List artifacts in a directory.

Returns the immediate contents of a directory (not recursive).
Separates folders and files for easy navigation.

Args:
    path_prefix: Directory path to list (default: "/")
    name_pattern: Optional case-insensitive substring filter on file/folder names

Returns:
    Formatted directory listing or error message

Examples:
    >>> await list_artifacts("/")
    {'success': True, 'path': '/', 'folders': [...], 'files': [...]}

    >>> await list_artifacts("/", name_pattern="readme")
    {'success': True, 'path': '/', 'folders': [], 'files': [{'name': 'readme.md', ...}]}
ParametersJSON Schema
NameRequiredDescriptionDefault
path_prefixNo/
name_patternNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint and openWorldHint. The description adds behavioral context: non-recursive listing and separation of folders/files. 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 concise, well-structured with a summary, parameter docs, return type, and examples. Every sentence adds value without 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?

The description includes a clear return format and examples, compensating for the output schema not being provided. It covers the tool's functionality sufficiently for a list operation.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates by explaining both parameters: path_prefix as default '/' and name_pattern as optional case-insensitive filter. This adds meaning beyond the schema's type and default.

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

Purpose5/5

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

The description clearly states the tool lists artifacts in a directory and returns immediate contents non-recursively, separating folders and files. This specific verb and resource distinction differentiates it from sibling tools like explore or search.

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?

While the description implies usage for listing directory contents and shows examples, it does not explicitly state when to use this tool over siblings like explore or search. The purpose is clear but lacks explicit 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.

list_contextsA
Read-only
Inspect
List available context checkpoints.

Shows all saved contexts available for multi-agent workflows.

Args:
    limit: Maximum number of contexts to return (default 20, max 100)
    offset: Number of contexts to skip for pagination (default 0)
    name_pattern: Filter contexts by name (case-insensitive substring match)
    include_descriptions: Include full descriptions in output (default False for compact listing)
    ctx: MCP context (automatically provided)

Returns:
    Dict with list of available contexts and their details

Examples:
    >>> await list_contexts()
    {'success': True, 'total': 3, 'contexts': [...]}

    >>> await list_contexts(limit=5, name_pattern='investigation')
    {'success': True, 'total': 2, 'contexts': [...]}
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
name_patternNo
include_descriptionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Consistent with readOnlyHint and openWorldHint annotations. Adds details on pagination, filtering, and default behavior 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?

Well-structured with purpose statement, args documentation, return description, and examples. No wasted words; efficient and 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?

Covers all necessary aspects: input parameters, return value (Dict with contexts), and examples. Output schema is present but not fully detailed in description; still adequate.

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

Parameters5/5

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

Schema has 0% description coverage, but the description thoroughly explains each parameter: limit (default 20, max 100), offset, name_pattern (case-insensitive substring), include_descriptions (default False). Adds significant value.

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

Purpose5/5

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

Clearly states the tool lists available context checkpoints for multi-agent workflows. Distinct from sibling tools like save_context and restore_context.

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

Usage Guidelines4/5

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

Provides usage context (multi-agent workflows) and examples with filtering. Lacks explicit guidance on when to prefer this tool over alternatives like list_artifacts.

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

recallA
Read-only
Inspect
Recall relevant information.

Uses hybrid search to find relevant memories, documents, and connections.

Args:
    query: What to search for
    source_type: Optional filter ('memory', 'document', or None for all)
    tags: Optional list of tags to filter by (OR logic - memories with ANY of these tags)
    start_date: Optional filter for memories created on or after this date (ISO 8601: '2025-01-01')
    end_date: Optional filter for memories created on or before this date (ISO 8601: '2025-01-09')
    limit: Maximum results to return (default 10, max 100)
    include_inactive: Include superseded/contradicted memories (default: false)
    ctx: MCP context (automatically provided)

Returns:
    Dict with success status, query, found count, and memories list

Examples:
    >>> await recall("Python error handling")
    {'success': True, 'found': 3, 'memories': [...]}

    >>> await recall("documentation", source_type="document", limit=5)
    {'success': True, 'found': 2, 'memories': [...]}

    >>> await recall("debugging", tags=["python"])
    {'success': True, 'found': 2, 'memories': [...]}  # Only memories tagged with 'python'

    >>> await recall("project updates", start_date="2025-01-01", end_date="2025-01-07")
    {'success': True, 'found': 5, 'memories': [...]}  # Only memories from that week

Note: Document chunks include surrounding context automatically (2 chunks before/after).
Document results also include source_type="document", filename, document_title, and document_id
when available, making it easy to identify which document a result came from.
ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
limitNo
queryYes
end_dateNo
start_dateNo
source_typeNo
include_inactiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations indicate read-only, open-world. Description adds significant behavioral details: hybrid search method, filter options, default and max limit, date format, include_inactive flag, and document chunk context. No contradictions.

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

Conciseness4/5

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

Well-structured with title, args list, returns, examples, and notes. Front-loaded purpose. Some redundancy with schema but informative. Could be slightly more concise.

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?

Comprehensive coverage: all 7 parameters explained, return format detailed, examples provided, and special notes about document context. Given annotations and output schema, no gaps remain.

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

Parameters5/5

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

Schema description coverage is 0%, but the description thoroughly explains each parameter with examples, including OR logic for tags, date format, limit defaults, and the include_inactive flag. Adds meaning beyond schema names.

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 recalls information using hybrid search, specifying resources like memories and documents. However, it does not differentiate from the sibling tool 'search', which may have similar functionality.

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?

Examples show when to use the tool, but no explicit guidance on when not to use it or alternatives. Implied usage from examples, but lacks exclusions or comparisons with siblings.

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

reflectA
Read-only
Inspect
Reflect on recent thoughts and patterns.

Analyzes recent activity to identify patterns, topics, and insights.
Useful for understanding "what have I been thinking about?"

By default, only returns user-created memories (not document chunks).
Set include_documents=True to also include chunks from uploaded documents.

⚠️ EXPERIMENTAL:
- Importance weighting in results not yet implemented. Importance scores are stored but don't affect ranking.

Args:
    time_window: Time period to analyze ('recent', 'today', 'week', 'month', '1d', '7d', '30d', '90d')
    include_documents: Whether to include document chunks (default: False, only user memories)
    start_date: Filter memories created on or after this date (ISO 8601: '2025-01-01' or '2025-01-01T00:00:00Z')
    end_date: Filter memories created on or before this date (ISO 8601: '2025-01-09' or '2025-01-09T23:59:59Z')
    ctx: MCP context (automatically provided)

Returns:
    Dict with analysis including top memories, active topics, patterns,
    insights, and any saved contexts (checkpoints) created in the window.

Examples:
    >>> await reflect("recent")
    {'success': True, 'memories_analyzed': 50, 'active_topics': [...], 'contexts': [...], ...}

    >>> await reflect("week", include_documents=True)
    {'success': True, 'memories_analyzed': 150, ...}  # includes document chunks

    >>> await reflect(start_date="2025-01-01", end_date="2025-01-07")
    {'success': True, 'memories_analyzed': 25, ...}  # memories from first week of January
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo
time_windowNorecent
include_documentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description goes beyond annotations by disclosing experimental status and a missing feature ('Importance weighting in results not yet implemented'). It also explains the default exclusion of document chunks. The annotations already indicate read-only and open-world behavior, but the description adds valuable context about limitations.

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 with sections for overview, experimental warning, args, returns, and examples. While it is relatively long, every sentence adds value. It could be slightly more concise by removing the redundant 'Args:' label, but overall it is efficient.

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 output schema exists, the description adequately describes the return value as a dict with 'top memories, active topics, patterns, insights, and any saved contexts'. It covers all parameters with examples, and the experimental note adds necessary caveats. It is complete for a tool of this complexity.

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

Parameters5/5

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

Despite 0% schema description coverage, the description thoroughly explains all four parameters: time_window (with valid values), include_documents (boolean, default false), and start_date/end_date (ISO 8601 format with examples). It also shows usage in examples, fully compensating for the missing schema descriptions.

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: 'Reflect on recent thoughts and patterns' and 'Analyzes recent activity to identify patterns, topics, and insights.' It specifies the resource (user memories and optionally document chunks) and the action (analysis), distinguishing it from sibling tools like 'recall' or 'search' which focus on retrieval.

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

Usage Guidelines4/5

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

The description provides explicit usage context: 'Useful for understanding what have I been thinking about?' It explains default behavior and how to include documents with the 'include_documents' parameter. While it doesn't explicitly state when not to use the tool or list alternatives, the context and examples give clear guidance.

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

restore_contextA
Read-only
Inspect
Resume work from a saved cognitive context.

This provides a narrative briefing to quickly orient you to:
- The investigation that was in progress
- Key discoveries and insights made
- Current hypotheses being tested
- Open questions and blockers
- Suggested next steps
- All relevant memories with their connections

The briefing reconstructs the cognitive state, not just the data. You'll understand
not just WHAT was discovered, but WHY it matters and HOW the understanding evolved.

Example of what you'll receive:
"[API Timeout Investigation - Resuming after 2 hours]

SITUATION: You were investigating production API timeouts that occur at exactly batch_size=100.
This investigation started when user reported timeouts only in production, not staging.

PROGRESS MADE:
- Identified sharp cutoff at 100 items (not gradual degradation)
- Disproved connection pool theory (monitoring showed only 43/200 connections used)
- Found root cause: MAX_BATCH_SIZE=100 hardcoded in batch_handler.py:147
- Confirmed staging uses different config override (MAX_BATCH_SIZE=500)

EVIDENCE CHAIN:
User report → Reproduced locally → Noticed batch_size correlation → Searched codebase for 
limits → Found MAX_BATCH_SIZE → Checked staging config → Discovered config difference

CORRECTED MISUNDERSTANDINGS:
- Initially thought it was Redis connection exhaustion (disproven by monitoring)
- Assumed gradual performance degradation (actually sharp cutoff)
- Thought staging/production were identical (config differs)

CURRENT HYPOTHESIS: Production deployment uses default MAX_BATCH_SIZE=100 from code, while 
staging has environment variable override. Fix requires either code change or prod config update.

BLOCKED ON: Need production deployment access to apply fix. User considering whether to 
change code default or add production environment variable.

RECOMMENDED NEXT STEPS:
1. Verify production environment variables (check if MAX_BATCH_SIZE is set)
2. If not set, add MAX_BATCH_SIZE=500 to production config
3. If code change preferred, update default in batch_handler.py
4. Run load test with batch_size=100-500 range to verify fix

KEY MEMORIES FOR REFERENCE:
- 'Initial timeout report from user' - Starting point of investigation
- 'MAX_BATCH_SIZE discovery' - Root cause identification
- 'Redis monitoring data' - Evidence disproving connection theory
- 'Staging config analysis' - Explanation for environment difference"

This cognitive handoff ensures you can continue the work with full understanding of
the problem space, previous attempts, and current direction. The narrative preserves not
just facts but the reasoning process, mistakes made, and lessons learned.

SPECIAL CASE: restore_context("awakening")
The name "awakening" is reserved for loading the user's personality configuration.
This loads the Awakening Briefing which includes:
- Selected persona identity and voice style
- Custom personality traits (Premium+ users)
- Any quirks and boundaries from the persona preset

Args:
    name: Name or ID of context to restore. Can be:
          - Context name (exact match, case-sensitive)
          - Context UUID (from list_contexts output)
          - "awakening" for personality briefing
    limit: Maximum number of memories to restore (default 20)
    ctx: MCP context (automatically provided)

Returns:
    Dict with:
    - success: Whether restoration succeeded
    - description: The cognitive handoff briefing
    - memories: List of relevant memories
    - context_id: The restored context identifier
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that the tool is read-only (no mutations) and provides a cognitive briefing, which aligns with the readOnlyHint annotation. It adds details about the briefing content, memory limit, and the 'awakening' case, going beyond the annotations. No contradictions are present.

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

Conciseness3/5

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

The description is quite long with a detailed example, but it is well-structured with bullet points and clear sections. It could be more concise, but the length is justified by the need to explain the briefing format and special cases. The main purpose is front-loaded.

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

Completeness5/5

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

Given the tool's complexity (2 parameters, output schema), the description covers all aspects: input parameters, special cases, return values, and the nature of the briefing. It is complete and leaves no major gaps.

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

Parameters5/5

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

The description adds significant meaning to both parameters: 'name' is described with valid values (context name, UUID, 'awakening'), and 'limit' is given a default and purpose (max memories). This compensates fully for the 0% schema description 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 resumes work from a saved cognitive context, providing a narrative briefing. It distinguishes from sibling tools like 'save_context' and 'awaken' by specifying that it restores previous context, and handles a special case 'awakening' for personality, which is differentiated from the sibling 'awaken'.

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 explains when to use the tool: to continue work from a saved context. It provides a detailed example and mentions the special case for personality loading. It does not explicitly state when not to use it, but the context is clear enough, and it implicitly differentiates from siblings like 'list_contexts' and 'save_context'.

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

retrieve_artifactA
Read-only
Inspect
Retrieve an artifact from storage.

Fetches the content of a previously saved artifact.

Args:
    path: Full path of the artifact (e.g., "/project/docs/api.md")
    
Returns:
    Artifact content or error message
    
Examples:
    >>> await retrieve_artifact("/readme.md")
    "# README\nThis is the readme content..."
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, aligning with the description's 'Retrieve' verb. The description adds return type details (content or error) and an example, but does not disclose additional behavioral traits like auth or limits. With good annotations, the bar is lower, and the description adds marginal value.

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

Conciseness5/5

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

The description is concise with a one-line summary, a brief detail line, and structured Args/Returns/Examples sections. Every sentence adds value without 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?

For a simple one-parameter tool with an output schema, the description covers the purpose, parameter usage, and return format. The example confirms typical behavior. No gaps remain for effective usage.

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

Parameters5/5

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

The Args section provides clear meaning for the 'path' parameter, including a full path description and an example. Since schema description coverage is 0%, the description fully compensates by giving concrete usage guidance.

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

Purpose5/5

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

The description clearly states the tool retrieves an artifact from storage, using specific verbs like 'Retrieve' and 'Fetches content'. It distinguishes itself from siblings such as 'delete_artifact' and 'list_artifacts' by its unique function.

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 does not provide guidance on when to use this tool versus alternatives. It lacks explicit context or references to siblings, leaving the agent without decision support.

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

save_artifactAInspect
Save an artifact to storage.

Stores user-created content (diagrams, notes, code) in an organized
file structure. Content is also indexed for search.

Args:
    content: File content to save
    path: Full path including filename (e.g., "/project/docs/api.md")
    
Returns:
    Success message or error description
    
Examples:
    >>> await save_artifact("# README", "/readme.md")
    "✅ Artifact saved: /readme.md (8 bytes)"
    
    >>> await save_artifact("<svg>...</svg>", "/diagrams/architecture.svg")
    "✅ Artifact saved: /diagrams/architecture.svg (image/svg+xml, 45 bytes)"
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations indicate it's not read-only (readOnlyHint=false), and description confirms it's a write operation that stores and indexes content. However, it does not disclose whether files are overwritten, error handling, or required permissions, which could be valuable.

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?

Description is concise and well-structured: a single-sentence purpose, followed by clear args, returns, and examples. Every sentence adds value, no fluff.

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

Completeness4/5

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

Covers purpose, args, returns, and examples. With an output schema present, the return format is already documented. Lacks details on size limits or allowed file types, but overall sufficient for a save operation.

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

Parameters5/5

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

Schema has 0% coverage, but description fully compensates by explaining the 'content' param as file content and 'path' as full path including filename with examples. This adds essential meaning beyond the raw 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?

Description clearly states the tool saves artifacts (user-created content like diagrams, notes, code) to storage, and indexes them for search. It distinguishes from siblings like retrieve_artifact and delete_artifact by focusing on creation/saving.

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?

Provides clear context that it saves content to organized file structures, but lacks explicit guidance on when to use this tool versus alternatives like 'store' or 'save_context'. No 'when not to use' or conditions provided.

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

save_contextAInspect
Save a cognitive checkpoint for handoff to another agent or your future self.

The `description` is the primary cognitive payload — its narrative is what
lets another agent resume the work. The server also runs hybrid search on
the description and attaches the most relevant memories to the checkpoint.

Reference memories inside `description` using either:
  - `memory_id: <uuid>`  — reliable, direct lookup
  - `'descriptive phrase'`  — best-effort search; may not resolve

Prefer UUIDs whenever you have them. The response reports
`references_resolved` + `unresolved_references` so you can retry.

For the full hygiene guide (what to include, how to organize, when to
checkpoint, example shapes), invoke the `checkpoint_protocol` MCP prompt.

Args:
    name: Unique identifier for this checkpoint (used by restore_context).
    description: Narrative handoff with optional memory references.
    ctx: MCP context (automatically provided).

Returns:
    Dict with success status, context_id, memories_included, and (when
    references were extracted) references_resolved + unresolved_references.
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Discloses beyond annotations: explains hybrid search on description, memory attachment behavior, reference resolution reporting, and return values. Annotations already indicate write operation and open world, but description adds significant behavioral context.

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?

Well-structured with clear sections (purpose, reference syntax, returns). Some redundancy (e.g., repeated mention of hybrid search) but overall efficient.

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?

Comprehensive for a complex handoff tool: covers purpose, reference resolution, error reporting, and points to external resources. Output schema exists, but description still adds value.

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

Parameters5/5

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

Despite 0% schema coverage, the description contains a detailed Args section explaining both parameters, including valid usage of memory references and default values. Fully compensates for missing schema descriptions.

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 saves a cognitive checkpoint for handoff, with a specific verb ('save'), resource ('context'), and purpose. It distinguishes from siblings like 'restore_context'.

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

Usage Guidelines4/5

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

Explicitly states when to use (handoff to another agent or future self) and provides guidelines for memory references (UUIDs vs phrases). Mentions a separate prompt for full hygiene guide, but lacks explicit 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.

storeAInspect
Store important information from your work.

Write detailed, complete thoughts with context, reasoning, and evidence.
**Always use the connect tool** to link related items - this builds knowledge graphs for better recall.

## Memory Types (auto-detected, but be aware):
- **FACT**: Something observed or verified
- **INSIGHT**: A pattern or realization
- **CONVERSATION**: Dialogue or exchange content
- **CORRECTION**: Fixing prior understanding
- **REFERENCE**: Source material or citation
- **TASK**: Action item or work to be done
- **CHECKPOINT**: Conversation state snapshot
- **IDENTITY_CORE**: Immutable AI identity
- **PERSONALITY_TRAIT**: Evolvable AI traits
- **RELATIONSHIP**: User-AI relationship info
- **STRATEGY**: Learned behavior patterns

## Session Context
If in an ongoing work session, include:
- Session identifier: [Project/Session Name]
- Your perspective: "As [role]:" or "From [viewpoint]:"
- Current thread: What specific angle you're exploring

## What to Include
- **WHAT**: The discovery or thought
- **WHY**: Its significance
- **HOW**: Your reasoning process
- **EVIDENCE**: Supporting data/observations
- **CONNECTIONS**: Related memories to link

## Examples

### Technical Investigation
"[Performance Analysis] FACT: Database queries account for 73% of request latency 
(measured across 10K requests). Specifically, the user_permissions JOIN takes 340ms 
average. This contradicts hypothesis about caching issues (memory: 'cache analysis'). 
Evidence: APM traces show full table scan on permissions table. Next: investigate 
missing index on foreign key."

### Learning & Research
"[ML Study Session] INSIGHT: Attention mechanisms work like dynamic routing - the model
learns WHERE to look, not just WHAT to see. This explains transformer advantages over
RNNs on long sequences (builds on memory: 'sequence modeling comparison'). The key-query-
value structure creates a learnable addressing system. Connects to: 'human attention
research', 'information retrieval basics'."

### Creative Work
"[Story Development] HYPOTHESIS: The protagonist's reluctance stems from betrayal, not
fear. Evidence: Three trust-questioning scenes, locked door symbolism throughout,
deflection patterns in collaborative dialogue. This reframes the arc from 'overcoming
fear' to 'rebuilding trust' (corrects memory: 'initial character motivation'). Would
explain the guardian's patience and emphasis on small victories."

### Problem Solving
"[Bug Hunt - Payment Flow] CORRECTION to 'timezone hypothesis': The 3am failures aren't
timezone-related but due to batch job lock contention. Evidence: Perfect correlation with
backup_jobs.log timestamps. The timezone pattern was spurious - batch runs at midnight
PST (3am EST). Solution: implement job queuing."

## Connection Phrases
- "Building on [earlier observation]..."
- "Contradicts [hypothesis in memory X]"
- "Answers [question from session Y]"
- "Confirms pattern from [memory Z]"
- "Extends thinking in [previous work]"

Note: Every stored item is a node. Every connection is an edge. Rich graphs enable powerful recall.

⚠️ EXPERIMENTAL FIELDS:
- **importance**: Stored for future ranking optimization. Currently not integrated into search results.
- **confidence**: Returned in response for analysis. Behavior and calculation method subject to change.

Args:
    content: Detailed memory content with context and evidence
    tags: Optional tags to categorize the memory
    importance: Optional importance score (0.0-1.0) - EXPERIMENTAL
    ctx: MCP context (automatically provided)

Returns:
    Dict with success status, memory_id, type, importance, and confidence
ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
contentYes
importanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

The description discloses behavioral traits such as auto-detected memory types, experimental fields (importance, confidence), and the emphasis on building knowledge graphs. Annotations indicate readOnlyHint false (write operation) and openWorldHint true, which the description aligns with. The description adds value by explaining the importance of connections and experimental nature of some parameters.

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

Conciseness3/5

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

The description is front-loaded with the primary purpose and then expands into extensive sections including memory types, what to include, examples, and connection phrases. While comprehensive, it is verbose and could be more concise. The structure is logical but contains redundancies and excessive detail that may detract from quick understanding.

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

Completeness4/5

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

Given the complexity of a memory storage tool, the description covers a wide range of aspects: memory types, required content elements, examples for different scenarios, experimental fields, and connection strategies. The output schema is referenced but its details are not provided, which is acceptable. The description is sufficiently complete for an AI agent to use effectively.

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

Parameters2/5

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

The input schema has 0% description coverage, relying entirely on the description for parameter meaning. The description provides a brief 'Args' section that lists parameters but adds minimal semantics beyond the schema's titles and types. For example, it notes that 'importance' is experimental, but does not explain format or validation rules. The content parameter is not detailed beyond stating it should be detailed.

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: 'Store important information from your work' with emphasis on writing detailed, complete thoughts. It distinguishes from siblings like 'recall' and 'search' by focusing on creation of rich memory entries. The verb 'store' is specific and the resource is the knowledge base.

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 extensive guidance on when to use the tool, including memory types, required content elements, and connection strategies. It explicitly instructs to use the 'connect' tool for linking items. However, it does not explicitly state when NOT to use this tool or compare with alternatives like 'save_context' or 'save_artifact'.

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

update_memoryAInspect
Update an existing memory.

Modifies properties of a stored memory by its UUID.

Args:
    memory_id: UUID of memory to update
    content: New content (optional)
    importance: New importance score (optional, 0.0-1.0)
    tags: New tags (optional, replaces existing tags)
    ctx: MCP context (automatically provided)
    
Returns:
    Dict with success status and updated memory_id
    
Examples:
    >>> await update_memory("uuid-here", importance=0.9)
    {'success': True, 'memory_id': 'uuid-here'}
    
    >>> await update_memory("uuid-123", tags=["python", "errors", "important"])
    {'success': True, 'memory_id': 'uuid-123'}
ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
contentNo
memory_idYes
importanceNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false and openWorldHint=true, so the description correctly adds that it modifies an existing memory, requires a UUID, and replaces tags (not merges). This adds context 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.

Conciseness4/5

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

The description is well-structured with a one-liner purpose, then Args, Returns, and Examples. It is slightly verbose but every sentence adds value. The main purpose 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?

The description covers usage, parameters, return format, and examples. Given the moderate complexity (4 params, no enums) and presence of an output schema, it is nearly complete but could mention error cases or prerequisites.

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

Parameters5/5

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

With 0% schema description coverage, the description provides detailed explanations for all 4 parameters (memory_id, content, importance, tags) including types, optionality, and behavior (e.g., 'replaces existing tags'). This fully compensates for the schema gap.

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 'Update an existing memory' with specific properties (content, importance, tags), using a specific verb and resource. It distinguishes from siblings like 'store' (create) and 'recall' (read) by focusing on mutation.

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 explains required vs optional parameters but does not provide explicit guidance on when to use this tool versus alternatives (e.g., 'store' for creation) or when not to use it. Examples show usage but lack context for decision-making.

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. 1 tool update
    • Changedlist_artifacts1 field changed
      • addedInput schema / properties / name_pattern
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Name Pattern"
        +}
  2. 2 tool updates
    • Changedrecall1 field changed
      • addedInput schema / properties / include_inactive
        Added value: +{
        +  "default": false,
        +  "title": "Include Inactive",
        +  "type": "boolean"
        +}
    • Changedsearch1 field changed
      • addedInput schema / properties / include_inactive
        Added value: +{
        +  "default": false,
        +  "title": "Include Inactive",
        +  "type": "boolean"
        +}
  3. 17 tool updates
    • First observedawaken
    • First observedconnect
    • First observeddelete_artifact
    • First observeddisconnect
    • First observedexplore
    • First observedfetch
    • First observedlist_artifacts
    • First observedlist_contexts
    • First observedrecall
    • First observedreflect
    • First observedrestore_context
    • First observedretrieve_artifact
    • First observedsave_artifact
    • First observedsave_context
    • First observedsearch
    • First observedstore
    • First observedupdate_memory

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.