Skip to main content
Glama
tomschell
by tomschell

Decision intelligence for multi-agent workflows

🚨 The Problem: Context Evaporates

Multi-agent development is fast—but context gets lost at every handoff: • Planning sessions → compressed into short GitHub issues • Architecture debates → collapsed into one-line directives in Cursor • Implementation agents → see what to do, not why

Result: Tasks move quickly, but decisions lose their reasoning. Context exists somewhere—it just doesn't travel.

✅ The Solution: Auto-Captured Decision Context

Personal KG preserves the "why" behind every decision—automatically, without extra work.

Captured context includes: • Full reasoning chains • Alternatives considered + rejected • Constraints & trade-offs that shaped choices • Idea evolution across planning sessions • Nuanced context beyond specs

🔁 The Learning Loop

Personal KG isn't just storage—it's a continuous improvement engine: • Accountability → Every directive is traceable to its reasoning • Auditability → Agent actions are explainable and reviewable • Reflection & Analysis → See what worked, what failed, and improve continuously

🌊 Impact: From Compressed Tasks to Full Context

Before Personal KG • Stripped-down tasks • Fragmented context • Agents move fast but blind

After Personal KG • Tasks + reasoning, constraints, and alternatives • Rich context flows seamlessly across tools • Agents move fast with full understanding

👉 Personal KG = Never lose the why. Capture it once, use it everywhere.

Installation

NPM Package

The Personal KG MCP server is available as an NPM package:

npm install @tomschell/personal-kg-mcp

MCP Configuration

  1. Configure MCP Server in .cursor/mcp.json or your MCP client configuration:

{
  "mcpServers": {
    "personal-kg-mcp": {
      "command": "node",
      "args": [
        "node_modules/@tomschell/personal-kg-mcp/dist/server.js"
      ],
      "cwd": "/path/to/your/project",
      "env": {
        "PKG_STORAGE_DIR": ".kg",
        "PKG_AUTO_BACKUP_MINUTES": "0",
        "PKG_USE_ANN": "true",
        "PKG_GITHUB_INTEGRATION_ENABLED": "true",
        "PKG_MCP_CAPTURE_ENABLED": "true",
        "PKG_MCP_CAPTURE_TOOLS": "github",
        "PKG_MCP_CAPTURE_EXCLUDE": "",
        "PKG_MCP_CAPTURE_AUTO": "true"
      }
    }
  }
}
  1. Set up GitHub Integration (optional):

    • Create a GitHub Personal Access Token

    • Add to .env file: PKG_GITHUB_TOKEN=github_pat_your_token_here

    • Or set as environment variable

  2. Restart your MCP client (Cursor, Claude Desktop, etc.)

⚠️ Important: MCP servers are only loaded at session startup. After adding or modifying the MCP configuration, you must restart your Claude Code, Cursor, or Claude Desktop session for the tools to become available. Simply saving the config file is not enough.

Configuration Options

Environment Variable

Default

Description

PKG_STORAGE_DIR

.kg

Directory for storing knowledge graph data

PKG_AUTO_BACKUP_MINUTES

0

Auto-backup interval (0 = disabled)

PKG_USE_ANN

true

Use approximate nearest neighbor search

PKG_GITHUB_INTEGRATION_ENABLED

false

Enable GitHub issue/PR integration

PKG_MCP_CAPTURE_ENABLED

true

Auto-capture MCP tool calls

PKG_MCP_CAPTURE_TOOLS

github

Tools to capture (comma-separated)

PKG_MCP_CAPTURE_EXCLUDE

""

Tools to exclude (comma-separated)

PKG_MCP_CAPTURE_AUTO

true

Auto-capture without explicit calls

OPENAI_API_KEY

-

OpenAI API key for semantic embeddings

PKG_EMBEDDING_MODEL

text-embedding-3-small

OpenAI embedding model

Environment Setup

For a complete list of environment variables, see .env.example.

Setup Options:

  1. Conductor Workspaces (recommended for 1Password users):

    ./scripts/setup-conductor.sh

    This creates symlinks to your 1Password-managed environment files.

  2. Manual Setup:

    cp .env.example .env
    # Edit .env with your values
  3. MCP Config: Add environment variables directly to your MCP configuration (see above).

Related MCP server: VibeTape MCP Server

Quick Start

npm install @tomschell/personal-kg-mcp

Installation

  1. Configure MCP Server in .cursor/mcp.json:

{
  "mcpServers": {
    "personal-kg-mcp": {
      "command": "node",
      "args": [
        "node_modules/@tomschell/personal-kg-mcp/dist/server.js"
      ],
      "cwd": "/path/to/your/project",
      "env": {
        "PKG_STORAGE_DIR": ".kg",
        "PKG_AUTO_BACKUP_MINUTES": "0",
        "PKG_USE_ANN": "true",
        "PKG_GITHUB_INTEGRATION_ENABLED": "true",
        "PKG_MCP_CAPTURE_ENABLED": "true",
        "PKG_MCP_CAPTURE_TOOLS": "github",
        "PKG_MCP_CAPTURE_EXCLUDE": "",
        "PKG_MCP_CAPTURE_AUTO": "true"
      }
    }
  }
}
  1. Set up GitHub Integration (optional):

    • Create a GitHub Personal Access Token

    • Add to .env file: PKG_GITHUB_TOKEN=github_pat_your_token_here

    • Or set as environment variable

  2. Restart your MCP client (Cursor, Claude Desktop, etc.)

Basic Usage

Start with these essential tools:

Purpose

Tool

Session warmup

kg_session_warmup

Capture decisions/progress

kg_capture

Session summaries

kg_capture_session

Search

kg_search (mode: semantic)

Project overview

kg_get_project_state

Get context

kg_get_relevant_context

Track questions

kg_open_questions

Link nodes

kg_edges (operation: create)

Configuration

The Personal KG MCP server is configured through environment variables set in .cursor/mcp.json.

Storage Configuration

PKG_STORAGE_DIR

  • Description: Directory path for Personal KG storage

  • Default: .kg

  • Example: "PKG_STORAGE_DIR": "data/knowledge/personal"

GitHub Integration

PKG_GITHUB_INTEGRATION_ENABLED

  • Description: Enable/disable GitHub integration in session warmup

  • Default: false (disabled by default for security)

  • Values: "true" or "false"

  • Note: Requires PKG_GITHUB_TOKEN to be set to actually enable

PKG_GITHUB_TOKEN

  • Description: GitHub Personal Access Token for Personal KG integration

  • Default: Not set

  • Security: Store in .env file, not in version control

MCP Capture Configuration

PKG_MCP_CAPTURE_ENABLED

  • Description: Enable/disable automatic capture of MCP tool calls

  • Default: true

PKG_MCP_CAPTURE_TOOLS

  • Description: Comma-separated list of MCP tool names to capture

  • Default: "github"

  • Example: "PKG_MCP_CAPTURE_TOOLS": "obsidian,notion,github"

PKG_MCP_CAPTURE_EXCLUDE

  • Description: Comma-separated list of MCP tool names to exclude

  • Default: "" (empty)

PKG_MCP_CAPTURE_AUTO

  • Description: Enable automatic capture without explicit calls

  • Default: "true"

Example Configuration

{
  "mcpServers": {
    "personal-kg-mcp": {
      "command": "node",
      "args": [
        "node_modules/@tomschell/personal-kg-mcp/dist/server.js"
      ],
      "cwd": "/path/to/your/project",
      "env": {
        "PKG_STORAGE_DIR": ".kg",
        "PKG_AUTO_BACKUP_MINUTES": "0",
        "PKG_USE_ANN": "true",
        "PKG_GITHUB_INTEGRATION_ENABLED": "true",
        "PKG_MCP_CAPTURE_ENABLED": "true",
        "PKG_MCP_CAPTURE_TOOLS": "github",
        "PKG_MCP_CAPTURE_EXCLUDE": "",
        "PKG_MCP_CAPTURE_AUTO": "true"
      }
    }
  }
}

Usage Guide

Tag Conventions

  • Normalised tags: proj:<name>, ws:<workstream>, ticket:<id>

  • Examples: proj:kg ws:kg-dev ticket:78

Agent Training Reminders

Important for Developers: The kg_session_warmup tool includes an agentTrainingReminders field. These reminders are NOT user-facing documentation - they are designed to train AI agents on proper development workflows during coding sessions.

Purpose:

  • Train agents on commit frequency and git best practices

  • Guide agents to follow project workflow conventions

  • Improve agent behavior through consistent guidance

  • Ensure code quality and proper git usage

Who sees this:

  • AI agents during session warmup (embedded in context)

  • Developers reading the code

  • NOT end users browsing documentation

Users benefit from these reminders indirectly through improved agent behavior, not by reading them directly.

Proactive Behavior

  1. Capture key moments with kg_capture (decisions, progress, insights, questions).

  2. At session boundaries use kg_capture_session (include next_actions[]).

  3. When resuming a topic call kg_get_relevant_context or kg_get_project_state.

  4. Track open questions with kg_open_questions and resolve with kg_resolve_question.

  5. Link entries with kg_edges (operation: "create", relation: "blocks" or "derived_from").

Core Tools

Capture

Tool

Args (required bold)

Notes

kg_capture

content, type, tags?, project?, workstream?, ticket?, importance?, visibility?, includeGit?, auto_link?, sessionId?

Primary knowledge creation

kg_capture_session

summary, duration?, artifacts?, next_actions[], visibility?, importance?

Session summaries

kg_link_session

sessionId, nodeId

Link session to node

kg_update_node

id, content?, tags?, importance?, visibility?

Update existing nodes

Search & Retrieval

Tool

Args

Notes

kg_search

query, mode∈text|semantic|time_range, tags?, type?, limit?, threshold?

Unified search

kg_query_context

topic

Summarize topic-relevant nodes

kg_get_relevant_context

query, project?, max_items?, include_questions?

Proactive context injection

kg_get_project_state

project

Overview, blockers, decisions

kg_session_warmup

project?, workstream?, limit?, discover?

Session context warmup

kg_list_tags

prefix?, minCount?, limit?

List all tags with counts

Node Operations

Tool

Args

Notes

kg_node

operation∈get|delete|find_similar, id, deleteEdges?, limit?, threshold?

Unified node ops

Relationships

Tool

Args

Notes

kg_edges

operation∈create|list|maintain, fromNodeId?, toNodeId?, relation?, nodeId?, maintainOp?

Unified edge ops

Question Tracking

Tool

Args

Notes

kg_open_questions

project?, include_stale?, limit?

List unresolved questions

kg_resolve_question

question_id, resolved_by_id, resolution_note?

Mark question resolved

Admin & Maintenance

Tool

Args

Notes

kg_admin

operation∈health|backup|validate|repair|export|import|rename_tag|merge_tags, ...

Unified admin ops

Analysis

Tool

Args

Notes

kg_analyze

operation∈clusters|emerging|path|graph_export, limit?, threshold?, startId?, endId?

Unified analysis ops

Relationship Type Guide

Relation

When to use

Example

references

Loose citation / mention

Session note references design doc

relates_to

General topical overlap

Two progress nodes on same feature

derived_from

Work or idea builds on another

Refactor derived_from original design decision

blocks

Hard dependency ordering

Bug fix blocks release task

duplicates

Identical or redundant content

Duplicate question captured twice

Best-Practice Flow

  1. Start / resumekg_session_warmup({ project: "my-project" }) (discovery mode if no project)

  2. Before starting workkg_get_relevant_context({ query: "topic" }) for background

  3. During devkg_capture decisions, progress, insights, questions

  4. Track questionskg_open_questions to see unresolved items

  5. Link related workkg_edges({ operation: "create", ... })

  6. End sessionkg_capture_session with summary and next_actions

Claude Code Integration

Add these instructions to your project's CLAUDE.md to enable automatic knowledge graph usage:

## Knowledge Graph

This project uses personal-kg-mcp for decision tracking and context management.

### Session Start
- Run `kg_session_warmup` with project name at the start of each session
- Use discovery mode (no project) to see all available projects

### During Work
- Capture important decisions with `kg_capture` (type: "decision")
- Log progress on features with `kg_capture` (type: "progress")
- Record insights and learnings with `kg_capture` (type: "insight")
- Track open questions with `kg_capture` (type: "question")

### Context Retrieval
- Use `kg_get_relevant_context` before starting work on a topic
- Check `kg_open_questions` for unresolved items
- Use `kg_query_context` for topic summaries

### Session End
- Summarize work with `kg_capture_session`
- Include `next_actions` for continuity

For projects using personal-kg-mcp, add to your CLAUDE.md:

## Knowledge Graph
- **MCP Server**: personal-kg-mcp
- **Storage**: `.kg/` (gitignored)
- **Usage**: Capture decisions, track questions, maintain context across sessions
- **Session Start**: Always run `kg_session_warmup` with project name
- **Key Tools**: kg_capture, kg_session_warmup, kg_get_relevant_context, kg_open_questions

Examples

Session Warmup

{
  "tool": "kg_session_warmup",
  "args": { "project": "kg", "limit": 20 }
}

Capture Progress

{
  "tool": "kg_capture",
  "args": {
    "content": "Progress: added query tools for Issue 64",
    "type": "progress",
    "sessionId": "<sessionId>",
    "tags": ["proj:kg", "ws:kg-dev", "ticket:64"],
    "importance": "medium"
  }
}

Session Summary

{
  "tool": "kg_capture_session",
  "args": {
    "summary": "Completed KG tool analysis and documentation updates",
    "next_actions": ["Implement simplified system prompt", "Update .cursorrules"],
    "artifacts": ["Issue #215", "Updated documentation"]
  }
}
{
  "tool": "kg_edges",
  "args": {
    "operation": "create",
    "fromNodeId": "<decisionId>",
    "toNodeId": "<taskId>",
    "relation": "blocks"
  }
}

Get Context Before Starting

{
  "tool": "kg_query_context",
  "args": { "topic": "CI/CD pipeline improvements" }
}

Consolidated Tools (v3.0)

Tools have been consolidated for easier use:

Tool

Operations

Description

kg_analyze

clusters, emerging, path, graph_export

Analysis operations

kg_admin

health, backup, validate, repair, export, import, rename_tag, merge_tags

Admin/maintenance

kg_edges

create, list, maintain

Relationship management

kg_node

get, delete, find_similar

Node operations

kg_search

text, semantic, time_range

Unified search

New Features

  • kg_open_questions - Track unresolved questions with staleness detection

  • kg_resolve_question - Mark questions as resolved

  • kg_get_relevant_context - Proactive context injection for queries

Development

Building

cd packages/personal-kg-mcp
npm install
npm run build

Testing

npm test
npm run test:unit
npm test -- config.test.ts --run

Development Mode

npm run dev

Changelog

[2.1.0] - 2025-08-16

  • Configuration System: Centralized configuration management via environment variables

  • GitHub Integration: Configurable GitHub integration with secure token handling

  • MCP Capture: Configurable automatic capture of MCP tool calls

  • Security: GitHub integration disabled by default, secure token storage recommendations

[2.0.0] - 2025-08-14

  • Modular Architecture: Refactored from monolithic 1,625-line server to modular structure

  • Core Tools Module: kg_health, kg_capture, kg_capture_session, kg_link_session

  • Search Tools Module: kg_list_recent, kg_search, kg_semantic_search, kg_find_similar, kg_query_time_range, kg_query_context

  • Relationship Tools Module: 10 relationship management tools

  • Maintenance Tools Module: 5 maintenance tools

  • Analysis Tools Module: 4 analysis tools

  • Project Tools Module: 3 project tools

  • Deprecated Tools Module: 6 deprecated tools

  • Comprehensive Documentation: Detailed architecture guide

  • GitHub Repository: Standalone repository at https://github.com/tomschell/personal-kg-mcp

  • CI/CD Pipeline: GitHub Actions for testing, building, and deployment

[1.0.0] - 2025-01-01

  • Initial Personal KG MCP server implementation

  • 43 tools for knowledge graph management

  • File-based storage system

  • Vector similarity search

  • Relationship management

  • Session management

  • Project state tracking

License

MIT License - see LICENSE file for details.

Available Tools

17 tools
kg_adminA

Unified admin tool for maintenance operations. Supports: 'health' for system status, 'backup' for data protection, 'validate' for integrity checks, 'repair' for fixing issues, 'export'/'import' for data migration, 'rename_tag'/'merge_tags' for tag management, 'migrate_embeddings' for backfilling OpenAI embeddings.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo[migrate_embeddings] Regenerate embeddings even for nodes that already have them.
dryRunNo[rename_tag, merge_tags] Preview changes without applying.
newTagNo[rename_tag] New tag name.
oldTagNo[rename_tag] Tag to rename (exact match).
payloadNo[import] JSON string of exported knowledge graph data.
batchSizeNo[migrate_embeddings] Number of nodes to process per batch.
operationYesAdmin operation: 'health', 'backup', 'validate', 'repair', 'export', 'import', 'rename_tag', 'merge_tags'.
targetTagNo[merge_tags] Tag to merge into.
sourceTagsNo[merge_tags] Tags to merge (will be removed).
retentionDaysNo[backup] Days to keep backups before deletion (0 = forever).

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It fails to mention that operations like 'repair', 'import', and 'merge_tags' are mutating or potentially destructive. There are no warnings about side effects, reversibility, or required permissions. For a multi-operation admin tool, this is a significant gap.

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 a single sentence that efficiently lists all operations without unnecessary words. While it could benefit from bullet points, it is not overly verbose and front-loads the core purpose. The density is justified given the breadth of operations.

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

Completeness2/5

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

Given the complexity of a 9-operation tool with no output schema, the description is too thin. It explains what each operation does in a phrase but does not cover prerequisites, side effects, return formats, or safety implications. The schema helps with parameters but not with tool-level context, leaving the description incomplete.

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

Parameters3/5

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

The input schema provides 100% coverage with descriptions for all parameters, so the baseline is 3. The tool description adds no parameter-specific meaning beyond what the schema already contains; it only lists operation names. This is acceptable because the schema 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 it is an 'Unified admin tool for maintenance operations' and enumerates all supported operations. This distinguishes it from sibling tools like kg_search and kg_capture, which are domain-specific operations. The purpose is explicit and specific.

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 each operation, e.g., 'health' for system status, 'backup' for data protection, 'export'/'import' for data migration. While it does not explicitly mention alternatives or exclusions, the admin/maintenance framing implies it is for system-level tasks rather than regular knowledge graph queries. This meets the standard for clear context without exclusions.

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

kg_analyzeA

Unified analysis tool. Supports: 'clusters' for topic grouping, 'emerging' for trend detection, 'graph_export' for full export, 'path' for finding connections between nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
endIdNo[path] Target node ID.
limitNo[clusters, emerging] Maximum nodes to analyze.
startIdNo[path] Starting node ID.
maxDepthNo[path] Maximum hops to search.
operationYesAnalysis operation: 'clusters', 'emerging', 'graph_export', 'path'.
thresholdNo[clusters] Similarity threshold (higher = stricter grouping).
windowDaysNo[emerging] Days to look back for recent activity.

TDQS

A3.6/5.0
Behavior2/5

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

There are no annotations, so the description carries full burden for behavioral disclosure. It only states high-level operation purposes without revealing whether operations are read-only, potential side effects (e.g., export scope), parameter dependencies (e.g., path requiring start and end IDs), or output characteristics. This is a significant gap for a tool with multiple modes.

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

Conciseness5/5

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

The description is a single sentence that efficiently lists the four operations with crisp labels and purposes. No filler words, front-loaded with the core 'Unified analysis tool' phrase, and each clause earns its place. Extremely concise and well-structured.

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

Completeness2/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, 4 operations, no annotations, and no output schema, the description is too sparse. It does not explain return formats, prerequisites (e.g., path requires startId/endId), operation-specific caveats (e.g., clusters threshold effects, emerging windowDays semantics), or edge cases. This leaves significant gaps for an agent to safely invoke the tool.

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%, and each parameter already has a detailed description including operation-specific prefixes. The description adds little beyond what the schema provides, though it does map operations to their conceptual meanings, which indirectly reinforces parameter usage. Baseline 3 is appropriate since 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 identifies the tool as a unified analysis tool and enumerates specific operations with concise purposes: 'clusters' for topic grouping, 'emerging' for trend detection, 'graph_export' for full export, and 'path' for finding connections. This is specific and differentiates the tool's capabilities, though it doesn't explicitly contrast with siblings.

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 each operation, effectively guiding selection among the four modes. It does not explicitly mention exclusions or alternatives among sibling tools, but the enumerated operations offer sufficient usage direction for an agent to choose appropriately.

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

kg_captureA

Primary tool for capturing knowledge nodes. Use this to record decisions, progress updates, insights, questions, and ideas. Automatically creates relationships, normalizes tags, and links to sessions. This is your main entry point for adding knowledge to the graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFree-form tags for categorization. Will be normalized (lowercase, dash-separated). Examples: 'frontend', 'api-design', 'bug-fix'.
typeNoType of knowledge node: 'idea' for thoughts/concepts, 'decision' for choices made, 'progress' for work updates, 'insight' for learnings/discoveries, 'question' for open questions, 'session' for session summaries.idea
ticketNoTicket/issue ID for automatic tagging. Will be normalized and prefixed as 'ticket:123'.
contentYesThe main content of the knowledge node. Be specific and include context. This is the primary information being captured.
projectNoProject name for automatic tagging. Will be normalized and prefixed as 'proj:project-name'.
auto_linkNoWhether to automatically create relationships to related nodes based on content similarity and tags.
sessionIdNoID of a session node to link this capture to. Used for grouping related work within a session.
importanceNoImportance level: 'high' for critical decisions/blockers, 'medium' for regular work, 'low' for minor notes.medium
includeGitNoWhether to capture current Git context (branch, commit hash). Useful for linking knowledge to specific code states.
visibilityNoVisibility level: 'private' (only you), 'team' (shared with team), 'public' (fully public). Defaults to private.
workstreamNoWorkstream name for automatic tagging. Will be normalized and prefixed as 'ws:workstream-name'.
link_to_sessionNoWhether to create a relationship to the specified session. Only applies if sessionId is provided.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses key automatic behaviors (relationship creation, tag normalization, session linking) which adds value, but it omits other side effects, return format, or error handling, 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 three sentences, front-loaded with the primary purpose, and contains no redundant or filler content. Every sentence adds meaningful information.

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?

Although the schema covers parameters thoroughly, the tool is complex (12 params) with no output schema or annotations. The description covers the use case and automatic behaviors but does not mention return values or potential side effects, leaving some contextual gaps.

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

Parameters3/5

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

The input schema has 100% parameter descriptions, so the baseline is 3. The tool description adds no parameter-specific meaning beyond what the schema already provides, so no extra credit is warranted.

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

Purpose5/5

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

The description clearly identifies the tool as the primary capture mechanism for knowledge nodes, enumerates specific record types (decisions, progress, insights, questions, ideas), and positions it as the main entry point, effectively distinguishing it from sibling tools like kg_capture_session.

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 states explicitly when to use the tool ('Use this to record decisions, progress updates, insights, questions, and ideas') and frames it as the primary entry point, but it does not mention alternatives or exclusion cases.

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

kg_capture_sessionA

Captures session summaries with structured metadata. Use at the end of work sessions to record what was accomplished, artifacts created, and next actions. Essential for maintaining context between sessions and tracking progress over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYesConcise summary of what was accomplished in this session. Focus on outcomes and key decisions.
durationNoHow long the session lasted (e.g., '2 hours', '45 minutes'). Helps track time investment.
artifactsNoList of deliverables created (e.g., ['Updated API docs', 'Fixed auth bug', 'Deployed v1.2'])
importanceNoSession importance: 'high' for major milestones, 'medium' for regular work, 'low' for minor sessions.medium
visibilityNoVisibility level for the session summary. Defaults to private.
next_actionsNoSpecific tasks for next session. These become your starting context when you resume work.

TDQS

A3.7/5.0
Behavior2/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 implies a write operation ('captures') and persistence ('maintaining context'), but does not disclose side effects, permissions, whether existing summaries are overwritten, or the response format. This is a significant gap for a state-changing 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 two sentences, front-loaded with the core action, and both sentences provide useful context: one describing what the tool does, the other when to use it. There is no fluff 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?

The tool has six parameters and no output schema, so the description must cover behavior and outcomes. It explains purpose and usage context well, but does not mention what happens after capture (e.g., return value, retrieval method, or if it creates a new session entry). Adequate but with clear 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 coverage is 100%, with detailed descriptions for all six parameters. The description mentions 'what was accomplished, artifacts created, and next actions' which loosely maps to summary, artifacts, and next_actions, but it adds no semantic detail beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('captures') and resource ('session summaries'), and adds context ('at the end of work sessions') that distinguishes it from generic capture tools like kg_capture. It clarifies the exact purpose and scope of the tool.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool ('Use at the end of work sessions') and the intended outcomes (record accomplishments, artifacts, next actions). However, it does not explicitly mention alternatives or when not to use it, falling short of a full exclusionary guide.

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

kg_diagnosticA

Generate a diagnostic HTML dashboard for debugging knowledge graph context selection, search results, and node visibility. Opens in browser to help understand why certain nodes are included/excluded from context.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoFilter to a specific project (optional)
output_pathNoCustom output path for the HTML file. Defaults to .kg/diagnostic.html
open_browserNoWhether to open the dashboard in the default browser

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions 'Opens in browser' and generates an HTML file, which are key behaviors. However, it does not explicitly state whether the tool modifies any data or requires specific permissions. Since it is a diagnostic tool, the risk is low, but the description could be more explicit about the read-only nature and the generated file location (though that is covered in the schema).

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

Conciseness5/5

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

The description consists of two concise sentences, front-loaded with the main purpose and followed by the key behavioral note about opening in the browser. Every word earns its place; no fluff or repetition.

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

Completeness4/5

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

The description explains what the tool does, why it would be used, and what the output behavior is (HTML dashboard opened in browser). It lists the three diagnostic areas. Although no output schema exists, the description provides sufficient expectations. Slightly more detail on what the dashboard contains (e.g., visualizations or logs) would make it fully complete, but it is adequate for a diagnostic tool.

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

Parameters3/5

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

All three parameters have descriptions in the schema, covering their purpose and defaults (e.g., 'project' filter, 'output_path' custom location, 'open_browser' default true). The tool description does not add additional parameter detail, but the schema coverage is 100%, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states it 'Generate a diagnostic HTML dashboard for debugging knowledge graph context selection, search results, and node visibility.' This is a specific verb+resource with three explicit areas of focus, distinguishing it from sibling tools like kg_search or kg_get_relevant_context which are functional operations rather than debugging aids.

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 a clear use case: 'to help understand why certain nodes are included/excluded from context.' This implies when to use the tool (when debugging context selection), though it does not explicitly mention alternatives or exclusionary conditions. The context is clear enough for an agent to infer appropriate usage.

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

kg_edgesA

Unified tool for relationship operations. Supports: 'create' to link nodes, 'list' to view relationships, 'maintain' for cleanup and rebuilding.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo[maintain] Maximum nodes to process.
nodeIdNo[list] Filter edges by node ID (shows edges connected to this node).
relationNo[create] Relationship type: references, relates_to, derived_from, blocks, duplicates.
toNodeIdNo[create] Target node ID.
operationYesEdge operation: 'create' to link nodes, 'list' to view edges, 'maintain' for maintenance.
fromNodeIdNo[create] Source node ID.
maintainOpNo[maintain] Maintenance type: rebuild, prune, reclassify, comprehensive.comprehensive
pruneThresholdNo[maintain] Strength threshold for pruning (lower = more aggressive).
rebuildThresholdNo[maintain] Similarity threshold for rebuilding (higher = stricter).

TDQS

A3.6/5.0
Behavior2/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 hints at destructive behavior only through 'maintain for cleanup and rebuilding' but never discloses reversibility, side effects, what gets removed, or whether create involves validation. This is minimal disclosure.

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, front-loaded with the tool's unifying purpose and a compact list of supported operations. Every phrase adds information; no filler.

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

Completeness2/5

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

For a 9-parameter, 3-operation unified tool with no annotations and no output schema, the description is underspecified: it doesn't explain operation-dependent parameter groups, required fields beyond the schema, or return/error behavior. The operation list alone isn't enough given the tool's complexity.

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

Parameters3/5

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

The input schema has 100% description coverage, including operation-specific tags like '[create]' and '[maintain]', so the schema already carries parameter semantics. The tool description itself adds no parameter meaning beyond naming the operations, so baseline 3 applies.

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

Purpose5/5

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

The description opens with 'Unified tool for relationship operations' and specifies three concrete verbs: 'create' to link nodes, 'list' to view relationships, 'maintain' for cleanup/rebuilding. This clearly distinguishes kg_edges from sibling node/tag/search tools as the relationship/edge manager.

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

Usage Guidelines4/5

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

It provides clear per-operation guidance ('create' to link, 'list' to view, 'maintain' for cleanup/rebuilding), but does not name alternatives or explicitly say when not to use this tool relative to kg_link_session or kg_node. The context is clear but exclusions are absent.

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

kg_get_project_stateA

Provides a comprehensive overview of a project's current state including active focus areas, recent decisions, open questions, blockers, and completed tasks. Perfect for project status checks and planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectYesProject name to analyze (will be normalized to 'proj:project-name' tag format)

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It lists what the overview includes but does not state whether the operation is read-only, what the return format is, or any limitations. This is adequate but not rich.

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

Conciseness5/5

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

The description is two sentences, front-loaded with content and ends with usage context. No wasted words.

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 one-parameter tool with no output schema, the description gives a good sense of what is included but omits details about the return structure. It is largely complete but could benefit from noting how the overview is presented.

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 fully describes the single parameter 'project' including normalization details. The description itself adds no extra parameter semantics, so the baseline score of 3 applies.

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

Purpose4/5

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

The description clearly states the tool provides a comprehensive overview of a project's current state and lists specific content areas (active focus areas, decisions, open questions, blockers, completed tasks). It is specific to a project state but does not explicitly differentiate from sibling tools like kg_get_relevant_context or kg_query_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?

The phrase 'Perfect for project status checks and planning' provides clear usage context. However, it does not mention when not to use this tool or alternatives, which would be needed for a 5.

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

kg_get_relevant_contextA

Retrieves relevant past context for a given query. Returns brief summaries of related decisions, insights, and open questions. Perfect for proactive context injection before starting work on a topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe topic or task to find relevant context for
projectNoOptional project name to scope the search (normalized to 'proj:project-name')
max_itemsNoMaximum number of context items to return
include_questionsNoWhether to include open questions in the context

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It accurately indicates a read-only retrieval action and describes the nature of returned data, but does not explicitly state side-effect-free behavior, authentication needs, or how relevance is determined. This is adequate but not richly transparent.

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 filler. The first sentence states the core function, the second adds practical usage context. Information is front-loaded and every word earns its place.

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

Completeness4/5

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

For a moderate-complexity tool with full parameter documentation and no output schema, the description covers the what, the output nature, and the when. It is complete enough for an agent to select and invoke correctly, though a note on return format or empty results would fully round it out.

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 baseline is 3. The description does not add any parameter-level detail beyond the schema, but none is needed since all parameters are already well-documented in the input 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 opens with a specific verb and resource: 'Retrieves relevant past context for a given query.' It further clarifies the output content (summaries of decisions, insights, open questions), distinguishing it from sibling tools like kg_search or kg_get_project_state by highlighting proactive context injection.

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?

Clearly states the intended use case: 'Perfect for proactive context injection before starting work on a topic.' This gives explicit context for when to use the tool, though it does not name alternative tools or exclusion cases, which would elevate it to a 5.

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

kg_list_tagsA

Lists all tags in the knowledge graph with usage counts. Use to discover available tags, find inconsistencies, or identify commonly used categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of tags to return
prefixNoFilter tags by prefix (e.g., 'proj:', 'ws:', 'ticket:')
minCountNoMinimum usage count to include a tag

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It states that tags are listed with usage counts and suggests use cases, but it does not disclose important behaviors such as whether zero-count tags are included (minCount defaults to 1), how results are sorted, or any potential rate limits or access requirements. This is a significant gap for a tool with no annotation support.

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 long, front-loaded with the core function, and follows with usage guidance. Every word earns its place, making it concise and well-structured.

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

Completeness4/5

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

Despite having no annotations or output schema, the description adequately covers purpose and use cases for a relatively simple read-only list tool. The schema covers all parameters with defaults and constraints. However, it does not describe the return structure or any edge cases, which would be nice but is not critical for a tool of this simplicity.

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 parameters are fully documented in the schema. The description does not add any additional semantic meaning beyond what the schema already provides, and the baseline of 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Lists') and clearly identifies the resource ('all tags in the knowledge graph') with a distinctive detail ('with usage counts'). It is unambiguous and distinguishes itself from sibling tools like kg_search or kg_edges, which serve different purposes.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool ('discover available tags, find inconsistencies, or identify commonly used categories') but does not mention when not to use it or suggest alternatives. This provides clear context but lacks explicit exclusions.

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

kg_nodeA

Unified tool for node operations. Supports three operations: 'get' to retrieve a node with its relationships, 'delete' to remove a node, 'find_similar' to find semantically similar nodes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the knowledge node to operate on.
limitNo[find_similar] Maximum number of similar nodes to return.
operationYesOperation to perform: 'get' retrieves node details, 'delete' removes the node, 'find_similar' finds similar nodes.
thresholdNo[find_similar] Minimum similarity score (0-1). Higher = stricter matching.
deleteEdgesNo[delete] Whether to also delete all relationships connected to this node.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description bears the full burden of behavioral disclosure. It explains that 'get' retrieves relationships, 'delete' removes a node, and 'find_similar' finds semantically similar nodes, but it does not mention consequences like irreversible deletion or relationship handling beyond what the schema already documents via deleteEdges.

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 at two sentences, front-loads the tool's purpose, and structures the operations in a clear list. Every sentence contributes value without redundancy.

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

Completeness4/5

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

The description adequately covers the three operations and their high-level behaviors, but it lacks details about return values or output structure. Given the tool's moderate complexity and the absence of an output schema, a bit more context (e.g., what each operation returns) could improve completeness, though the current level is sufficient for basic understanding.

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 already has 100% parameter coverage, so the description adds little beyond the schema. It does not clarify parameter interactions or operation-specific applicability beyond the schema's own descriptions. The baseline of 3 is appropriate because the description does not harm but also does not enhance the schema's semantics.

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

Purpose4/5

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

The description clearly states the tool's scope ('unified tool for node operations') and enumerates the three supported operations with their specific actions. This provides a clear sense of what the tool does, though it does not explicitly distinguish itself from sibling tools like kg_update_node.

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

Usage Guidelines3/5

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

The description implies usage for node retrieval, deletion, and similarity search by listing the operations, but it does not provide explicit guidance on when to choose this tool over alternatives (e.g., kg_update_node for updates, kg_search for general search). The usage is inferred rather than stated.

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

kg_open_questionsA

Lists unresolved questions with aging information. Questions are considered 'stale' after 3 days. Use to track what needs follow-up and identify forgotten questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of questions to return
projectNoFilter by project name (will be normalized to 'proj:project-name' format)
include_staleNoInclude questions older than 3 days (marked as stale)

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses the stale-after-3-days rule and implies a read-only list operation via the verb 'Lists,' but it does not explicitly state the absence of side effects, output format, or ordering. It adds some context but lacks full behavioral transparency.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and every sentence earns its place. It is concise, clear, and free of filler.

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

Completeness4/5

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

For a simple list tool with three optional parameters and no output schema, the description gives a solid overview: purpose, usage, and a specific aging rule. It does not fully describe return values or ordering, but the absence of an output schema makes that less critical. Overall, it is fairly 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 coverage is 100%, so the parameters are already well-documented. The description adds only marginal context by referencing 'aging information' and the stale threshold, which the include_stale parameter description also covers. No new syntax or format details are provided.

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 'Lists' and the resource 'unresolved questions,' adding the specific scope of 'aging information' and the stale threshold. This distinguishes it from sibling tools like kg_resolve_question, which resolves questions, and kg_search, which searches broadly.

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 a clear use case: 'Use to track what needs follow-up and identify forgotten questions.' However, it does not explicitly mention alternatives or when not to use this tool, such as noting that kg_resolve_question should be used for resolving questions.

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

kg_query_contextA

Reconstructs context around a specific topic by analyzing related knowledge nodes. Use to understand the full context and background of a particular subject area.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic or subject area to reconstruct context for (e.g., 'deployment', 'api-design', 'bug-fix')

TDQS

A3.5/5.0
Behavior2/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 of behavioral disclosure. It tells what the tool does but does not reveal any behavioral traits such as read-only nature, output format, limitations, or side effects. For a query-like tool, it should at least indicate that it does not modify data or describe what the result includes.

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 long, front-loaded with the core action, and contains no filler. Every sentence earns its place: the first explains what it does, and the second gives a usage context.

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

Completeness3/5

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

The tool is simple (one required parameter) and the description covers the purpose and usage. However, with no output schema and no annotations, the description should provide more context about what the tool returns (e.g., a list of related nodes or a graph) and any behavior assumptions. It is adequate but leaves gaps.

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

Parameters3/5

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

The schema already provides 100% coverage for the single parameter 'topic' with a clear description and examples. The tool description adds no additional meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states what the tool does: 'Reconstructs context around a specific topic by analyzing related knowledge nodes.' It uses a specific verb ('reconstructs') and resource ('context around a topic'), which is clear and distinct. However, it does not explicitly differentiate itself from sibling tools like kg_get_relevant_context, which may serve a similar purpose.

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 says 'Use to understand the full context and background of a particular subject area,' which provides clear guidance on when to use this tool. It lacks explicit exclusions or alternatives, but the stated use-case is specific and helpful.

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

kg_resolve_questionA

Marks a question as resolved by linking it to a decision, insight, or other node that answers it. Creates a 'resolved_by' relationship.

ParametersJSON Schema
NameRequiredDescriptionDefault
question_idYesID of the question node to resolve
resolved_by_idYesID of the node that resolves this question (typically a decision or insight)
resolution_noteNoOptional note explaining how this resolves the question

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing side effects. It clearly states the mutation ('Creates a resolved_by relationship'), which is useful. However, it does not disclose reversibility, idempotency, or whether the question must be in a specific state, leaving some behavioral uncertainty for a write operation.

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 long, front-loads the core purpose, and includes no filler. Every word contributes to understanding the tool's function and effect.

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 tool with three parameters, no nested objects, and no output schema, the description provides adequate context: what it does, what relationship it creates, and what types of nodes are eligible. It does not explain return values or edge cases, but these are not critical for correct invocation given the schema covers parameters.

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 explains all parameters well. The description only echoes what the schema says about 'resolved_by_id' being a decision/insight, adding no meaningful extra semantics. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Marks... as resolved') and clearly identifies the resource (question node) and the mechanism (linking to a decision/insight and creating a 'resolved_by' relationship). It distinguishes this from generic tools like kg_update_node or kg_link_session by focusing on the resolution semantics.

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

Usage Guidelines4/5

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

The description clearly implies the use case: when a question has been answered by a decision or insight and should be marked resolved. It provides context but does not explicitly state when not to use it or name alternative tools, so it misses the top score for explicit exclusions.

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

kg_session_warmupA

Start every session with this tool! Loads comprehensive context about your project including recent work, active questions, and blockers. Essential for maintaining continuity between work sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of recent nodes to include in the warmup context
compactNoReturn minimal response (skip agentTrainingReminders, groupedWork) to reduce token usage.
projectNoProject name (will be normalized to 'proj:project-name' tag format). Optional - if not provided, discovery mode is enabled.
discoverNoEnable discovery mode to explore available projects and recent activity. Automatically enabled if no project specified.
workstreamNoOptional workstream within the project for more focused context

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the transparency burden. It discloses that the tool loads comprehensive context and lists what it includes, implying a read-oriented operation, but it does not clarify side effects, permission requirements, or session state changes. This adds some value beyond the schema but lacks rich behavioral detail.

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 punchy sentences with the usage imperative front-loaded. No filler; every phrase contributes either usage guidance or a content summary.

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

Completeness3/5

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

The description conveys the core purpose and content categories, and the schema documents the parameters and modes. However, because there is no output schema, the description does not fully explain the response structure or how 'discovery mode' and 'compact' affect the output, leaving some ambiguity for a 5-parameter tool.

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

Parameters3/5

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

The input schema covers all 5 parameters with descriptions, so the description need not repeat parameter semantics. The description adds no parameter-level details, but with 100% schema coverage, the baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly identifies the tool as a session-start context loader, listing specific content categories (recent work, active questions, blockers) and framing it as a continuity/warmup mechanism. It does not explicitly name sibling alternatives, but the verb+resource combination and 'session warmup' framing distinguish it from generic searches or project-state queries.

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 when-to-use guidance ('Start every session with this tool!', 'Essential for maintaining continuity between work sessions'). It does not offer exclusions or mention alternative tools, so it stops short of full 5-level guidance.

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

kg_update_nodeA

Updates an existing knowledge node. Use to modify content, tags, importance, or visibility of a node. Supports partial updates - only specified fields are changed.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesID of the node to update
tagsNoReplace all tags with this array
contentNoReplace the node's content entirely
mergeTagsNoAdd these tags to existing tags (set union)
importanceNoUpdate importance level
removeTagsNoRemove these specific tags
visibilityNoUpdate visibility level
appendContentNoAppend text to the existing content

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It usefully discloses that updates are partial ('only specified fields are changed'), which is valuable behavioral context. Yet it says nothing about permissions, reversibility, return values, or failure modes—important gaps for a mutation 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?

Two sentences, front-loaded with the core action and supported fields. Every word serves a purpose, and the partial-update clarification earns its place. This is appropriately 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 moderate complexity (8 params, no annotations, no output schema), the description plus the fully described schema is largely complete. It states what the tool does, what can be changed, and the partial-update behavior. A mention of response/error behavior or permissions would make it fully complete.

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

Parameters3/5

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

The input schema already describes all 8 parameters, so schema description coverage is 100%, which sets a baseline of 3. The description adds only the general partial-update note, not field-specific meaning, so it neither improves nor harms the parameter semantics.

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

Purpose5/5

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

The description opens with 'Updates an existing knowledge node,' clearly identifying the specific verb and resource. It also enumerates the editable fields (content, tags, importance, visibility) and notes partial-update support, which distinguishes it from sibling tools like kg_capture or kg_node.

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 'Use to modify content, tags, importance, or visibility of a node,' giving a clear condition for use. However, it does not mention when not to use the tool or name alternative tools, so it stops short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv1.2.0
    • First observedkg_admin
    • First observedkg_analyze
    • First observedkg_capture
    • First observedkg_capture_session
    • First observedkg_diagnostic
    • First observedkg_edges
    • First observedkg_get_project_state
    • First observedkg_get_relevant_context
    • First observedkg_link_session
    • First observedkg_list_tags
    • First observedkg_node
    • First observedkg_open_questions
    • First observedkg_query_context
    • First observedkg_resolve_question
    • First observedkg_search
    • First observedkg_session_warmup
    • First observedkg_update_node

TDQS

A3.8/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but some overlap exists: kg_search, kg_query_context, and kg_get_relevant_context all retrieve information in different ways, and kg_capture vs kg_capture_session have similar names. The detailed descriptions help disambiguate, but an agent could still misselect between context retrieval tools.

Naming Consistency3/5

All tools share the 'kg_' prefix, but the naming pattern is mixed: some are verb_noun (kg_list_tags, kg_update_node), some are bare verbs (kg_capture, kg_search), and some are noun-based unified tools (kg_edges, kg_admin, kg_node). This inconsistency makes the set feel less predictable, though the prefix provides a common thread.

Tool Count4/5

With 17 tools, the server is slightly above the ideal range of 3-15, but the count is reasonable for a personal knowledge graph managing nodes, relationships, sessions, questions, and admin operations. The tools collectively cover a broad domain without being excessive.

Completeness5/5

The tool surface covers the full lifecycle: creation (kg_capture), retrieval (kg_search, kg_node get), update (kg_update_node), deletion (kg_node delete), plus relationship management, session handling, question tracking, project state, admin, and diagnostics. No obvious gaps prevent an agent from performing core knowledge graph operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides observability for multi-agent workflows by tracking hierarchical task structure, architectural decisions, reasoning, encountered problems, code modifications with Git diffs, and temporal metrics.
    9
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to learn from their work by recording tasks, extracting patterns, detecting mistakes, and proactively surfacing insights, all using the agent's own model through a cooperative intelligence pattern.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives AI agents persistent memory, handoffs, and shared context across sessions, enabling seamless continuity and multi-agent collaboration.
    20
    69
    -