Skip to main content
Glama
ScottRBK

Forgetful

by ScottRBK

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SERVER_PORTNoHTTP server port8020
EMBEDDING_MODELNoEmbedding modelBAAI/bge-small-en-v1.5
MAX_GRAPH_LIMITNoUpper bound for graph limit2000
MEMORY_TOKEN_BUDGETNoMax tokens for query results8000
MEMORY_NUM_AUTO_LINKNoAuto-link count3

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
discover_forgetful_toolsA

Discover available tools, optionally filtered by category

Returns enough information for LLMs to call tools directly without needing how_to_use.

Args: category: Optional category filter (user, memory, project, code_artifact, document, entity, linking) ctx: FastMCP Context (automatically injected)

Returns: Dictionary with: - tools_by_category: Tools grouped by category - total_count: Total number of tools - categories_available: List of available categories - filtered_by: Category filter applied (if any)

All Available Tools

User Tools - User profile and preferences

  • get_current_user: Get authenticated user info

  • update_user_notes: Store user preferences/notes

Memory Tools - Atomic knowledge storage (<400 words per memory)

  • create_memory: Store a single concept with auto-linking to similar memories (supports provenance tracking)

  • query_memory: Semantic search across memories (use query_context for better ranking)

  • get_memory: Retrieve memory by ID

  • update_memory: Modify memory fields (PATCH semantics, supports provenance tracking)

  • link_memories: Manually connect related memories bidirectionally

  • unlink_memories: Remove link between memories

  • mark_memory_obsolete: Soft-delete with audit trail and optional superseded_by

  • get_recent_memories: Get newest memories (timeline view)

Provenance Tracking (optional fields for create_memory/update_memory):

  • source_repo, source_files, source_url: Track where knowledge came from

  • confidence: Reliability score (0.0-1.0) for AI-generated content

  • encoding_agent, encoding_version: Track which agent/version created the memory

Project Tools - Organize memories by context/scope

  • create_project: Create project container (development, personal, work, etc.)

  • get_project: Retrieve project details

  • list_projects: List all projects with optional status/repo filter

  • update_project: Modify project metadata

  • delete_project: Remove project (memories preserved)

Code Artifact Tools - Reusable code snippets and patterns

  • create_code_artifact: Store code with language, tags, project link

  • get_code_artifact: Retrieve code artifact by ID

  • list_code_artifacts: List artifacts with project/language/tags filter

  • update_code_artifact: Modify artifact fields

  • delete_code_artifact: Remove artifact

Document Tools - Long-form content (>300 words)

  • create_document: Store detailed docs, analysis, guides

  • get_document: Retrieve document by ID

  • list_documents: List documents with project/type/tags filter

  • update_document: Modify document fields

  • delete_document: Remove document

Entity Tools - Real-world entities (people, orgs, devices)

  • create_entity: Create entity with type, aka (aliases), notes

  • get_entity: Retrieve entity by ID

  • list_entities: List entities with project/type/tags filter

  • search_entities: Text search by name or aka (aliases)

  • update_entity: Modify entity fields

  • delete_entity: Remove entity (cascades links)

  • link_entity_to_memory: Connect entity to memory

  • unlink_entity_from_memory: Remove entity-memory link

  • link_entity_to_project: Connect entity to project (organizational grouping)

  • unlink_entity_from_project: Remove entity-project link

  • get_entity_memories: Get all memories linked to entity

  • create_entity_relationship: Create relationship (part_of, depends_on, works_for, etc.)

  • get_entity_relationships: Get relationships for entity

  • update_entity_relationship: Modify relationship

  • delete_entity_relationship: Remove relationship

Workflow

  1. Call discover_forgetful_tools() to see this catalog

  2. Call execute_forgetful_tool(tool_name, {args}) to run any tool

  3. If needed, call how_to_use_forgetful_tool(tool_name) for full parameter docs

how_to_use_forgetful_toolB

Get detailed documentation for a specific tool

Returns complete documentation including JSON schema, multiple examples, and full parameter details.

Args: tool_name: Name of the tool to get documentation for ctx: FastMCP Context (automatically injected)

Returns: Detailed tool documentation with JSON schema

execute_forgetful_toolA

Execute any registered tool dynamically. Forgetful is a semantic memory system for LLMs.

Quick Start - One-Shot Examples (all required params shown)

Memory Operations:

  • Search: execute_forgetful_tool("query_memory", {"query": "search terms", "query_context": "why searching"})

  • Create: execute_forgetful_tool("create_memory", {"title": "Short title", "content": "Memory content (<2000 chars)", "context": "Why this matters", "keywords": ["kw1", "kw2"], "tags": ["tag1"], "importance": 7, "project_ids": [1]})

  • Create with provenance: execute_forgetful_tool("create_memory", {"title": "...", "content": "...", "context": "...", "keywords": [...], "tags": [...], "importance": 7, "source_repo": "owner/repo", "source_files": ["src/main.py"], "confidence": 0.85, "encoding_agent": "claude-sonnet-4"})

  • Update: execute_forgetful_tool("update_memory", {"memory_id": 1, "content": "new content"})

  • Get: execute_forgetful_tool("get_memory", {"memory_id": 1})

  • Link: execute_forgetful_tool("link_memories", {"memory_id": 1, "related_ids": [2, 3]})

  • Unlink: execute_forgetful_tool("unlink_memories", {"source_id": 1, "target_id": 2})

  • Obsolete: execute_forgetful_tool("mark_memory_obsolete", {"memory_id": 42, "reason": "Outdated approach", "superseded_by": 100})

Project Organization:

  • List: execute_forgetful_tool("list_projects", {})

  • Create: execute_forgetful_tool("create_project", {"name": "Project Name", "description": "What this project is about", "project_type": "development"})

  • Get: execute_forgetful_tool("get_project", {"project_id": 1})

  • Query: execute_forgetful_tool("query_memory", {"query": "search terms", "query_context": "why searching", "project_ids": [1]})

Entities (people, orgs, devices):

  • Create: execute_forgetful_tool("create_entity", {"name": "Sarah Chen", "entity_type": "Individual", "notes": "Backend developer", "aka": ["Sarah", "S.C."]})

  • Search: execute_forgetful_tool("search_entities", {"query": "Sarah"}) # Searches name AND aka

  • Link to memory: execute_forgetful_tool("link_entity_to_memory", {"entity_id": 1, "memory_id": 1})

  • Unlink from memory: execute_forgetful_tool("unlink_entity_from_memory", {"entity_id": 1, "memory_id": 1})

  • Link to project: execute_forgetful_tool("link_entity_to_project", {"entity_id": 1, "project_id": 1})

  • Unlink from project: execute_forgetful_tool("unlink_entity_from_project", {"entity_id": 1, "project_id": 1})

Documents (long-form content >300 words):

  • Create: execute_forgetful_tool("create_document", {"title": "Doc Title", "description": "Brief summary", "content": "Long content...", "document_type": "text", "project_id": 1})

Code Artifacts (reusable snippets):

  • Create: execute_forgetful_tool("create_code_artifact", {"title": "Snippet Title", "description": "What this does", "code": "def example(): pass", "language": "python", "project_id": 1})

Linking Best Practices

Always link related items for discoverability:

  • When creating documents, link atomic memories: create_memory(..., document_ids=[doc_id])

  • When creating code artifacts, link to memories: create_memory(..., code_artifact_ids=[artifact_id])

  • Link memories to each other: link_memories(memory_id=1, related_ids=[2, 3])

  • Link entities to memories: link_entity_to_memory(entity_id=1, memory_id=1)

  • Link entities to projects: link_entity_to_project(entity_id=1, project_id=1)

Tool Categories

memory | project | entity | document | code_artifact | linking | user

Use discover_forgetful_tools(category?) for full parameter details and optional params.


Args: tool_name: Name of the tool to execute arguments: Dictionary of arguments to pass to the tool ctx: FastMCP Context (automatically injected)

Returns: Tool execution result (format depends on the specific tool)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation3/5

The three exposed tools have clear names, but discover already returns enough detail to call tools without how_to_use, and execute's description embeds a large quick-start guide, so documentation and execution boundaries are blurred. The buried catalog also contains several similar retrieval verbs (query_memory, get_memory, get_recent_memories) that rely on descriptions to separate.

Naming Consistency4/5

Names follow a consistent snake_case verb-first pattern with a forgetful_tool(s) suffix: discover_forgetful_tools, how_to_use_forgetful_tool, execute_forgetful_tool. Minor inconsistency is plural vs singular and the multi-word phrasal verb how_to_use, but the pattern is predictable.

Tool Count3/5

Three exposed tools is thin for a system that claims dozens of operations across seven categories, although the discover+execute pattern intentionally compresses the surface. This pushes a huge catalog and examples into descriptions, making the count feel less like 3 well-chosen tools and more like one mega-dispatcher plus helpers.

Completeness4/5

The catalog covers CRUD for projects, documents, code artifacts, and entities, plus semantic memory search, linking, relationships, and provenance, so the underlying domain is broadly covered. Gaps include no hard-delete memory (only mark obsolete) and no general filtered list of all memories beyond recent/query, but these are workable.

Maintenance

ActivityMaintained
ResponsivenessWithin a week