Skip to main content
Glama
ScottRBK

Forgetful

by ScottRBK

discover_forgetful_tools

Discover available tools and filter them by category to see what an AI agent can call in the Forgetful knowledge server.

Instructions

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

  • get_memory_entities: Get all entities linked to memory

  • 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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categoryNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it discloses that a category filter is optional, enumerates the category set, and promises the payload is rich enough to let an LLM call tools directly without how_to_use. It omits any note on read-only guarantees, permissions, or pagination, but for a zero-side-effect discovery call those gaps are minor.

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 purpose is correctly front-loaded in the first line, but the description then embeds a ~40-line tool catalog that is essentially the tool's own return payload, and separately restates the return dictionary despite an output schema existing. Structured and readable, yet much of that bulk is redundant with structured/output data rather than description-specific guidance.

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

Completeness5/5

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

An output schema exists, so the return-value detail is bonus rather than required, and the category semantics plus the three-step workflow fully cover how an agent should invoke and follow up on this tool. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the single parameter, and it does: it gives the allowed category values (user, memory, project, code_artifact, document, entity, linking) and marks the arg optional via 'optionally filtered'. That is meaningfully more than the bare schema type.

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?

States a specific verb+resource ('Discover available tools') and adds the filtering scope ('optionally filtered by category'). The embedded workflow plus the sibling tools (execute_forgetful_tool, how_to_use_forgetful_tool) make the role unambiguous: this is the catalog/discovery entry point, not the executor or the per-tool doc lookup.

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 Workflow section explicitly routes the agent: step 1 call this to see the catalog, step 2 call execute_forgetful_tool to run anything, step 3 fall back to how_to_use_forgetful_tool for parameter docs. Alternatives and their selecting conditions are named, though no explicit 'when not to call this' statement is given.

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