Skip to main content
Glama
angrysky56
by angrysky56

🧠 Project Synapse MCP Server

Autonomous Knowledge Synthesis Engine with LLM-WIKI Integration

Documentation

Project Synapse is an MCP (Model Context Protocol) server that combines a Neo4j 2026.x graph database with an Obsidian Markdown wiki to create a persistent, compounding knowledge base. Raw text is processed through a semantic pipeline into interconnected graph nodes with vector embeddings, while a human-readable wiki layer provides browsable, interlinked Markdown pages.

πŸ“š Documentation

For detailed information on setting up and using Project Synapse, please refer to the following guides:

Related MCP server: KG Memory

What This Is (and Isn't)

This is a knowledge system, not a code editor. It's for the thinking, research, and writing that surrounds projects β€” architecture decisions, domain research, design rationale, reference material, meeting notes.

Code lives in its repo. Knowledge about the code lives here.

Use cases:

  • Research deep-dives that accumulate over weeks/months

  • Project knowledge bases (why decisions were made, not just what)

  • Personal knowledge management (articles, books, podcast notes)

  • Collaborative brainstorming with AI as the wiki maintainer

Per-project setup: Create a separate Obsidian vault + GitHub repo for each project. Point the WIKI_VAULT_PATH env var at it. One Neo4j instance can serve multiple projects (graphs coexist).

Architecture

Web / Raw Sources
         β”‚
    [defuddle]          ← cleans web content before ingestion
         β”‚
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Semantic Pipeline   │────▢│  Neo4j Knowledge    β”‚
β”‚  (Montague Grammar,  β”‚     β”‚  Graph (entities,   β”‚
β”‚   NLP, embeddings)   β”‚     β”‚  facts, vectors)    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜     β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”
                              β”‚ Wiki Adapter  β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜
                                      β”‚
                              β”Œβ”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”
                              β”‚ Obsidian Vaultβ”‚
                              β”‚ (Markdown,    β”‚
                              β”‚  Git-synced)  β”‚
                              β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Key Features

Knowledge Graph (Neo4j 2026.x)

  • Native VECTOR type with ANN semantic search

  • Fulltext BM25 indexes for keyword search

  • Hybrid search (vector + BM25 score fusion)

  • Graph traversal for discovering hidden relationships

  • Montague Grammar parser for formal semantic analysis

  • Hybrid Extraction Pipeline: Merges LLM-based extraction (Gemma 2 9b via Ollama) with spaCy NER for high-precision entity and relationship discovery

  • Zettelkasten engine for autonomous insight generation

LLM-WIKI Integration

  • Bridges Obsidian Markdown vault with the Neo4j graph

  • Full page CRUD with YAML frontmatter

  • Automatic index generation and append-only log

  • Health checks: orphan detection, broken wikilinks, missing frontmatter

  • Delta-sync manifest (content hashing) for efficient graph sync

  • Based on Andrej Karpathy's LLM Wiki pattern

Web Content Ingestion (defuddle)

  • wiki_fetch_url fetches any URL, strips navigation/ads/clutter via defuddle, ingests into Neo4j, and archives to Clippings/ β€” one call, fully automated

  • wiki_ingest_raw auto-moves processed files from raw/ to Clippings/ β€” inbox stays clean

  • raw/ is a true inbox: empty after every session

Local-Only Embeddings (No Paid APIs)

  • sentence-transformers (default) β€” runs on GPU

  • Ollama (optional) β€” any local embedding model

  • All vectors stored natively in Neo4j via db.create.setNodeVectorProperty()

Quick Start

Prerequisites

  • Python 3.12+

  • Neo4j 2026.x (Community or Enterprise)

  • uv package manager (pip install uv)

  • Obsidian with the Git community plugin

  • A GitHub repo for the wiki vault (can be private)

  • Node.js + defuddle (for web content fetching β€” see below)

Neo4j Setup

# Ubuntu/Debian β€” see neo4j.com for other platforms
sudo apt install neo4j
sudo systemctl start neo4j
sudo systemctl enable neo4j
# Set password (default user: neo4j)
sudo neo4j-admin set-initial-password your_password

defuddle Setup

defuddle extracts clean markdown from web pages, stripping navigation, ads, and boilerplate before ingestion. Required for wiki_fetch_url.

# Install Node.js if not present (via nvm recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install --lts
nvm use --lts

# Install defuddle globally
npm install -g defuddle

# Verify
defuddle --version

Note: Synapse finds defuddle automatically via nvm paths even if it's not on your shell's PATH. If wiki_fetch_url reports defuddle not found, ensure it's installed in an nvm-managed Node version.

Obsidian Vault Setup

  1. Create a new vault in Obsidian (or clone your wiki repo)

  2. Install the Git community plugin (Settings β†’ Community Plugins β†’ Browse β†’ "Git")

  3. Configure Git plugin with your GitHub credentials

  4. The vault structure (raw/, wiki/, Clippings/, AGENTS.md) is created automatically by Synapse on first run

Installation

cd /path/to/your/workspace
git clone <repository-url> project-synapse-mcp
cd project-synapse-mcp
uv venv --python 3.12 --seed
source .venv/bin/activate
uv add -e .
uv run python -m spacy download en_core_web_sm
cp .env.example .env  # edit with your Neo4j password and vault path

Configuration

Edit .env:

NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
NEO4J_DATABASE=neo4j

# Embedding β€” local only, no paid APIs
EMBEDDING_PROVIDER=sentence-transformers  # or "ollama"
EMBEDDING_MODEL=sentence-transformers/all-mpnet-base-v2
EMBEDDING_DIMENSION=768

# Extraction β€” Montague (default) or "llm" (hybrid)
EXTRACTION_PROVIDER=montague
OLLAMA_EXTRACTION_MODEL=gemma2:9b
OLLAMA_TIMEOUT=120

# Wiki vault
WIKI_VAULT_PATH=/path/to/your/obsidian-vault
WIKI_GITHUB_REPO=https://github.com/user/wiki-repo

Claude Desktop / MCP Integration

Add to your MCP config:

{
  "mcpServers": {
    "project-synapse": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/project-synapse-mcp",
        "run",
        "python",
        "-m",
        "synapse_mcp.server"
      ]
    }
  }
}

MCP Tools

Knowledge Graph

Tool

Description

ingest_text

Process text through semantic pipeline β†’ Neo4j

query_knowledge

Vector semantic search with insight-first results

explore_connections

Graph traversal for hidden relationships

generate_insights

Autonomous Zettelkatten pattern detection

analyze_semantic_structure

Montague Grammar semantic analysis

Wiki (LLM-WIKI)

Tool

Description

wiki_fetch_url

Fetch URL β†’ defuddle clean β†’ ingest β†’ archive to Clippings/

wiki_ingest_raw

Ingest file from raw/ β†’ Neo4j + auto-move to Clippings/

wiki_write_page

Create/update wiki page with frontmatter (updates index write-through)

wiki_read_page

Read a wiki page by path supporting mode (meta, excerpt, full)

wiki_search

Keyword search across wiki pages returning excerpts and snippets

wiki_list_pages

List pages in a subdirectory with paginated limit, offset, and tag filters

wiki_update_index

Rebuild the wiki index (index.md)

wiki_sync_index

Manually sync/refresh the DuckDB page index database from disk

wiki_lint

Health check: orphans, broken links, missing/invalid frontmatter (runs via SQL)

Wiki Vault Structure

LLM-WIKI/
β”œβ”€β”€ AGENTS.md           # Agent schema doc β€” conventions and workflows
β”œβ”€β”€ raw/                # INBOX ONLY β€” unprocessed files; empty after each session
β”œβ”€β”€ raw-inbox.base      # Obsidian Base view of pending raw/ queue
β”œβ”€β”€ Clippings/          # Permanent archive β€” all processed sources land here
β”œβ”€β”€ wiki/
β”‚   β”œβ”€β”€ index.md        # Auto-generated page catalogue
β”‚   β”œβ”€β”€ log.md          # Append-only activity log
β”‚   β”œβ”€β”€ entities/       # People, tools, projects
β”‚   β”œβ”€β”€ concepts/       # Ideas, theories, patterns
β”‚   └── sources/        # Summaries of ingested sources

Content Lifecycle

You clip/save β†’ raw/          # your inbox
     or
Agent fetches β†’ wiki_fetch_url # web research
                    β”‚
              [defuddle clean]
                    β”‚
              [semantic pipeline] β†’ Neo4j
                    β”‚
              wiki_write_page β†’ wiki/sources/
                    β”‚
              auto-move β†’ Clippings/   # permanent archive

raw/ is always empty after a session. Clippings/ is the permanent record of everything that's been processed. Source pages in wiki/sources/ reference the original URL, not the file path.

Workflow

  1. Web research: wiki_fetch_url(url) β†’ fetches, cleans, ingests, archives in one call

  2. Manual clip: Drop into raw/, call wiki_ingest_raw(filename) β†’ auto-archives after ingest

  3. Query: query_knowledge (graph) or wiki_search (files) β†’ synthesize answer

  4. Lint: wiki_lint β†’ fix orphans, broken links, stale claims

  5. Rollback: Git handles version control via Obsidian Git plugin

Theoretical Foundation

  • Montague Grammar: Formal compositional semantics for meaning extraction

  • Zettelkasten Method: Atomic linked notes with emergent structure

  • Graph Theory: Community detection, centrality, path analysis

  • Karpathy LLM-WIKI: Persistent knowledge compilation vs stateless RAG

  • Vannevar Bush's Memex: Private associative knowledge with maintained trails

License

MIT β€” see LICENSE.


Project Synapse: From reactive RAG to persistent, compounding knowledge.

Available Tools

23 tools
analyze_semantic_structureB

Analyze the semantic structure of text using Montague Grammar parsing.

This tool provides insight into the formal semantic analysis capabilities and shows the logical form translations.

Args: text: Text to analyze semantically include_logical_form: Whether to include the formal logical representation

Returns: Semantic analysis with entities, relations, and optional logical forms

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
include_logical_formNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior1/5

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

No annotations are provided, and the description does not disclose whether the tool is read-only, has side effects, or requires special permissions. It only mentions that it 'provides insight' and 'shows' output, which is insufficient to understand its behavioral footprint.

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 brief and focused: two sentences that state the purpose and output. There is no redundant information or unnecessary fluff, making it easy for an agent to parse quickly.

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 simplicity and the presence of an output schema (not shown but indicated), the description covers the essential input and output details. It explains what the tool does, what it returns ('Semantic analysis with entities, relations, and optional logical forms'), and the key parameter options. It lacks mention of error conditions or edge cases, but these are not critical for a straightforward analysis 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 schema fully defines the parameters (text as required string, include_logical_form as optional boolean with default). The description adds a bit of semantic context ('Text to analyze semantically' and 'Whether to include the formal logical representation') but does not go beyond what the parameter names and types imply. Since schema coverage is complete, the baseline is 3, and the description provides minimal extra value.

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

Purpose5/5

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

The description clearly states a specific action ('Analyze the semantic structure of text') using a specific method ('Montague Grammar parsing'). It also distinguishes itself from sibling tools like wiki_search, ingest_text, and query_knowledge by focusing on formal semantic analysis rather than retrieval or ingestion.

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

Usage Guidelines1/5

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

The description provides no guidance on when this tool should be used over alternatives. It does not mention any conditions, limitations, or contrasting scenarios that would help an agent decide between this and other sibling tools.

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

debug_testB

Simple test tool to check if MCP server is working.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/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 disclosing side effects or behavior. The phrase 'test tool to check if MCP server is working' is vague and does not specify whether it performs any writes, makes network calls, or returns a simple status. This lack of detail fails to accurately convey the tool's behavior.

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, concise sentence that directly states the tool's purpose without any extraneous information. It is well-structured and easy to read, earning full marks for conciseness.

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?

While the description is adequate for a simple diagnostic tool, it lacks context about what 'working' means or what the expected output is (e.g., a success message or a boolean). The existence of an output schema is noted but not detailed, so an agent might not fully understand what to expect from invoking this tool.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is 100% (empty). Per the baseline for 0 parameters, a score of 4 is appropriate since there are no parameters to describe and the description does not need to explain any.

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 purpose as a test to check if the MCP server is working, using the verb 'check' and resource 'MCP server'. It is distinct from sibling tools which focus on wiki or synapse operations, so it is easily differentiated. However, it is somewhat generic about what 'working' entails.

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 as a diagnostic tool but does not explicitly state when to use it versus other tools. Since all sibling tools have different domains, no direct alternative is obvious, but the absence of explicit usage scenarios leaves some ambiguity.

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

explore_connectionsB

Explore connections and relationships around a specific entity in the knowledge graph.

This tool implements the graph traversal capabilities for discovering non-obvious connections and patterns.

Args: entity: Entity name to explore from depth: How many relationship hops to explore (1-5) connection_types: Specific relationship types to follow

Returns: Visual representation of connections and discovered patterns

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
entityYes
connection_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, and the description does not explicitly state whether the operation is read-only, has side effects, or requires special permissions. While exploring graph connections implies a non-destructive action, the lack of any transparency about potential rate limits or data access restrictions leaves the agent uncertain.

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 concise and well-structured, with a brief overview followed by a purpose statement and parameter list. The only minor redundancy is the second sentence repeating the concept of 'exploring' from the first, but it adds value by specifying 'non-obvious connections'.

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

Completeness4/5

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

The description covers the core functionality, parameter meanings, and a general note on returns (visual representation of connections). It does not detail the output schema, but the context indicates one exists, and the tool's moderate complexity makes this absence acceptable. Alternative tools and behavioral details are not addressed, slightly reducing completeness.

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

Parameters5/5

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

All three parameters are thoroughly explained in the Args section: entity is the starting point, depth specifies the relationship hops with a range, and connection_types allows filtering by relationship type. This fully compensates for the schema lacking inline descriptions, giving the agent clear semantic meaning for each parameter.

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 explores connections and relationships around a specific entity in the knowledge graph, using a specific verb and resource. It distinguishes itself from sibling tools like query_knowledge or wiki_search by focusing on graph traversal and discovering non-obvious patterns, though it could be more explicit about the output format.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. It fails to mention conditions like 'use this when you need to find relationships' or exclude cases where query_knowledge might be more appropriate, leaving the agent to infer applicability from the purpose alone.

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

generate_insightsC

Trigger autonomous insight generation using the Zettelkasten engine.

This tool activates the autonomous synthesis engine to identify patterns and generate novel insights from the existing knowledge graph.

Args: topic: Optional topic to focus insight generation on confidence_threshold: Minimum confidence level for insights (0.0-1.0)

Returns: Generated insights with confidence scores and evidence trails

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo
confidence_thresholdNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description bears full responsibility for disclosing side effects, costs, or mutation behavior. It only says the tool 'activates' and 'generates', but does not clarify whether this is a read-only operation, whether it modifies the knowledge graph, or whether 'autonomous' implies background processing or external calls.

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

Conciseness3/5

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

The description is not excessively long, but it repeats 'autonomous' and 'engine' and phrases the same idea twice. The structure is clear with an action statement, parameter list, and return value, though the redundancy slightly reduces conciseness.

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 a simple input schema with two optional parameters and no nested objects, and the description includes a return summary. However, it does not provide enough context about expected output shape, failure modes, or how the returned insights relate to the knowledge graph, making it only moderately complete.

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

Parameters2/5

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

The schema provides no descriptions, so the description must compensate. It offers minimal explanations for 'topic' and 'confidence_threshold' (e.g., 'focus insight generation' and 'minimum confidence level'), but does not elaborate on how these parameters affect results, what default values do, or how the threshold is applied.

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 a specific action ('Trigger autonomous insight generation') and a specific resource ('Zettelkasten engine'). It also emphasizes generating novel insights from the existing knowledge graph, which helps distinguish it from sibling tools like query_knowledge or explore_connections, though it does not explicitly name them.

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus the many sibling tools. It implies usage for autonomous insight generation, but it lacks concrete scenarios, prerequisites, or exclusions that would help an agent choose between generate_insights and alternatives like query_knowledge or analyze_semantic_structure.

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

ingest_textB

Ingest and process text into the knowledge graph using semantic analysis.

This tool performs the core knowledge synthesis pipeline:

  1. Semantic parsing using Montague Grammar

  2. Entity extraction and relationship identification

  3. Storage in the Neo4j knowledge graph

  4. Automatic insight generation triggers

Args: text: Raw text to process and analyze source: Source identifier for provenance tracking metadata: Additional metadata about the text

Returns: Processing summary with entities and relationships extracted

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
sourceNouser_input
metadataNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal that the tool writes to the Neo4j knowledge graph and triggers insight generation, indicating side effects. However, it does not mention reversibility, idempotency, or failure modes, and the description stops short of outlining any permissions or rate limits.

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

Conciseness4/5

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

The description is well-structured with a clear purpose statement, numbered pipeline steps, and an Args section. The numbered steps provide a logical flow, but the overall length is slightly verboseβ€”some steps could be condensed without losing meaning. The purpose is front-loaded, which is good.

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 moderately complex with three parameters, one required, and no output schema provided. The description covers the main pipeline and return type, but lacks details on expected text format, size limits, error handling, or the structure of the returned summary. Given that an output schema is declared as present (though not shown), the description could reasonably delegate return details, but it leaves gaps around constraints and edge cases.

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. It does so by listing each parameter (text, source, metadata) with a short explanation of its purpose (raw text, provenance, additional metadata). This adds meaningful context beyond the schema's type/default information, though the descriptions are brief and do not specify formats or constraints.

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 ingests and processes text into a knowledge graph via semantic analysis, with a concrete resource and verb. It lists specific pipeline steps (Montague Grammar, entity extraction, Neo4j storage) that distinguish it from generic 'ingest' tools, though it does not explicitly name sibling tools like wiki_ingest_raw or synapse_remember to highlight differences.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description explains what it does but lacks any conditional context, such as 'use this for raw text ingestion' or exclusions like 'for structured data, use query_knowledge'. An agent must infer appropriate usage from the resource name alone.

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

query_knowledgeA

Query the knowledge graph for facts and insights using natural language.

This tool provides the conversational interface to the knowledge base, prioritizing synthesized insights over raw facts.

Args: query: Natural language query include_insights: Whether to include AI-generated insights max_results: Maximum number of results to return

Returns: Query results with facts, insights, and reasoning trails

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo
include_insightsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

Since no annotations are provided, the description carries the full burden of disclosing behavior. It mentions returning results but does not state whether the operation is read-only or has any side effects, nor does it describe limitations or error behavior.

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 and well-structured, beginning with a clear purpose statement, followed by a list of arguments and return values. It avoids redundancy and presents information in a logical order.

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 covers the essential purpose and parameters, but lacks details on usage context, output schema specifics, and edge cases. Given the absence of annotations, some safety and behavior information is missing, leaving the description only partially complete.

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

Parameters4/5

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

The input schema has no descriptions for its parameters, so the description's Args section serves as the sole explanation. It provides brief but meaningful explanations for query, include_insights, and max_results, adding value beyond the bare schema fields.

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 'Query the knowledge graph for facts and insights using natural language' and further specifies it provides the conversational interface to the knowledge base. This concise purpose statement clearly distinguishes the tool from its siblings.

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

Usage Guidelines2/5

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

The description does not explicitly state when to use this tool over alternatives like wiki_search or synapse_recall. It only hints at a focus on synthesized insights, but lacks clear guidance on appropriate use cases or exclusions.

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

synapse_causal_windowA

Find candidate causes by temporal correlation.

Surfaces facts whose valid_from falls in the window [before - within_days, before] and that share at least one entity with facts about effect_entity.

This is exactly the "track everything you ate to find what caused the headaches" pattern β€” you record symptom onset, you record meals and medications, then this tool surfaces co-occurring events as candidates. The tool returns correlation; the human (or a downstream reasoning step) decides what caused what.

Args: effect_entity: The thing whose causes you're hunting (e.g. "headache", "rash", "build failure"). before: ISO date/datetime β€” when the effect was observed. within_days: How far back to search. Default 30.

Returns: Ranked list of candidate cause-effect pairings with day deltas.

ParametersJSON Schema
NameRequiredDescriptionDefault
beforeYes
within_daysNo
effect_entityYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

Annotations are not provided, so the description carries the responsibility. It describes the tool's query behavior (surfaces facts, returns ranked list) and implies it is read-only by stating it returns results and does not mention modifications. However, it does not explicitly state that the tool has no side effects or that it does not modify data. For a causal-window query tool, the lack of explicit side-effect disclosure leaves minor ambiguity.

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

Conciseness4/5

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

The description is well-organized: a one-sentence summary, a technical explanation of the matching criteria, an illustrative analogy, a note on correlation vs causation, and a clear Args list. The analogy adds helpful context but could be considered slightly verbose. Overall, it is concise and each sentence contributes to understanding the tool's function and usage.

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

Completeness4/5

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

The description covers the tool's purpose, behavior, parameters, and the nature of results (ranked list). Since an output schema exists, the description does not need to detail return fields. It omits edge cases or error handling, but these are not typically required for basic tool invocation. The provided information is sufficient for an agent to decide when and how to use it.

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

Parameters5/5

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

Despite the schema having no property descriptions, the tool description includes an Args section that explains all three parameters: effect_entity (the thing whose causes you're hunting), before (ISO date/datetime when effect was observed), and within_days (how far back to search, with default). This provides both meaning and usage context, fully covering the schema gaps.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Find candidate causes') and identifies the resource (facts) and the mechanism (temporal correlation, valid_from window, entity sharing). It also distinguishes itself from other tools by explicitly framing the correlation-vs-causation role. This is more specific than a generic 'search' and leaves no ambiguity about what the tool accomplishes.

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 concrete usage scenario ('track everything you ate to find what caused the headaches') and clarifies that the tool returns correlation, not causation, which sets expectations for interpretation. However, it does not explicitly mention alternative tools (e.g., synapse_timeline or explore_connections) or state when not to use this tool. It gives enough guidance for typical use but lacks direct comparisons.

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

synapse_invalidateA

Mark a previously-recorded fact as no longer true.

Sets valid_to rather than deleting β€” the historical record stays intact, but the fact is no longer "currently true" for default queries.

Args: subject/predicate/object: The triple to invalidate. ended: ISO date/datetime when the fact stopped being true. Defaults to now if omitted.

Returns: Number of facts affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
endedNo
objectYes
subjectYes
predicateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, but the description discloses key side effects: it sets valid_to rather than deleting, preserves history, affects default queries, and returns the number of affected facts. It does not cover error behavior or idempotency, but the main mutation is well explained.

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 compact and well-structured with short paragraphs for behavior, arguments, and return value. No redundant or extraneous text.

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

Completeness4/5

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

The description covers the operation, all parameters, the return value, and the semantic implication for queries. It could mention what happens if no matching triple exists, but for a simple invalidation tool the provided context is sufficient.

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

Parameters5/5

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

Every parameter is explained in the Args section: subject/predicate/object form the triple to invalidate, and ended is the ISO date/time defaulting to now. This fully compensates for the empty schema descriptions.

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

Purpose5/5

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

Clearly identifies the action: invalidating a previously-recorded fact in the knowledge graph by setting valid_to, with the distinction that the historical record remains intact and only default queries change. This differentiates it from query/recall 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 implies when to use it ('previously-recorded fact' no longer true) and contrasts with deletion, but does not explicitly name sibling tools or state when not to use it. Still, the intended use case is clear enough.

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

synapse_memory_statsA

Quick stats: how many temporal facts are stored, time span covered.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 disclosing behavior. It states the output (count and time span) but does not explicitly declare that the operation is read-only or non-mutating. It also does not mention behavior when no temporal facts exist or any potential side effects. Since it is called 'stats', it likely is read-only, but that is not stated, which is a gap in 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 a single short sentence that front-loads the purpose ('Quick stats') and immediately specifies the key outputs. There is no filler or wasted words. It is concise and appropriately structured for a zero-parameter utility tool.

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

Completeness4/5

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

Given that the tool has no parameters, an output schema exists (though its contents are not shown), and the description covers the essential returned metrics (count and time span), the description is largely complete. It does not mention whether the stats are scoped to any subset or if they reflect the entire memory store, but that is likely implicit given no parameters. Minor omission of edge-case behavior (e.g., empty store) prevents a perfect score.

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?

There are zero parameters, so the baseline is 4 per the scoring rules. The description does not need to add parameter details since there are none. The schema coverage is 100% (empty properties), and the description correctly focuses on what the tool does rather than parameters.

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 states the tool returns quick stats about temporal facts (count) and time span. It is specific about the resource (temporal facts) and the output metrics. It distinguishes from sibling tools like synapse_recall or synapse_timeline, which are likely query or retrieval operations, by focusing on aggregate statistics.

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 getting a quick overview of stored temporal facts, but it does not explicitly state when to prefer this over alternatives like synapse_timeline or query_knowledge. No exclusion criteria or context is provided. For a simple stats tool, the intended use is fairly obvious, but the absence of any guidance on alternatives or edge cases leaves room for ambiguity.

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

synapse_recallA

Look up time-stamped facts about an entity.

Args: entity: Name to look up. Matches subject, object, or both depending on direction. as_of: ISO date/datetime β€” if given, only facts valid at this point in time are returned. Omit for "currently true" facts. direction: "outgoing" (entity is the subject), "incoming" (entity is the object), or "both" (default).

Returns: Newline-separated list of facts with timestamps. Empty if none found.

ParametersJSON Schema
NameRequiredDescriptionDefault
as_ofNo
entityYes
directionNoboth

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the tool returns a newline-separated list of facts with timestamps, and that an empty result means no facts were found, which covers normal behavior. It does not mention error cases, but the read-only nature is implied by 'look up' and 'returns.'

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 tightly organized into Args and Returns sections with no filler. Every sentence adds relevant detail about invocation or output.

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 is sufficient to call the tool correctly for common cases: all parameters, defaults, and output format are specified. It lacks examples or error behavior, but those are not essential for this simple lookup tool.

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

Parameters5/5

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

All three parameters are explicitly explained in the docstring: entity matches subject/object depending on direction, as_of is an ISO datetime filtering temporal validity, and direction defines outgoing/incoming/both with its default. This fully compensates for the empty schema descriptions.

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 looks up time-stamped facts about an entity, using a specific verb and resource. It is distinguishable from sibling tools like query_knowledge or synapse_timeline by focusing on entity-specific temporal facts, though it does not explicitly contrast itself with them.

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

Usage Guidelines2/5

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

No guidance is given on when to prefer this tool over alternatives such as query_knowledge, synapse_timeline, or explore_connections. The description explains mechanics but not use cases or when not to use it.

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

synapse_rememberA

Record a time-stamped fact in Synapse's episodic memory.

Use this whenever something is worth remembering across sessions: decisions, observations, "Ty said X on date Y", health/diet/symptom log entries, project milestones.

Args: subject: Who or what the fact is about. Free-form name. predicate: The relationship verb. snake_case preferred (e.g. "started_taking", "moved_to", "decided_to_use"). object: The other side of the relation. valid_from: ISO date or datetime when the fact became true. If omitted, "now" is used. Bare dates β†’ midnight UTC. valid_to: ISO date or datetime when the fact stopped being true. Omit for still-current facts. confidence: 0–1. Default 1.0 for explicit user statements; lower when the agent is inferring. source: Where this fact came from. Defaults to "agent:claude" for things Claude is recording. Use "user" or a filename for facts from explicit user statements or document ingestion. note: Free-form context. Stored in metadata for later recall.

Returns: The fact id (stable content hash β€” safe to call twice).

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
objectYes
sourceNoagent:claude
subjectYes
valid_toNo
predicateYes
confidenceNo
valid_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden. It discloses idempotency ('safe to call twice'), the return value (fact id), default values for confidence and source, and date semantics (bare dates β†’ midnight UTC). This is comprehensive behavioral context beyond what the schema offers.

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 longer than average but well-structured: an opening purpose, a 'Use this when' block, a parameter list, and a return note. Every section earns its place, though it could be tightened slightly without loss of clarity.

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

Completeness5/5

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

For a complex tool with 8 parameters, no annotations, and no schema descriptions, the description covers all essential aspects: purpose, usage context, parameter semantics, defaults, return behavior, and idempotency. Nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

The schema has 0% description coverage, so the description is the sole source of parameter meaning. It explains every parameter (subject, predicate, object, valid_from, valid_to, confidence, source, note) with formats, defaults, and intended usage. It adds substantial value beyond the schema's bare type definitions.

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 states a specific verb ('record') and resource ('time-stamped fact in Synapse's episodic memory'), with concrete examples of use cases. It clearly differentiates from siblings like synapse_recall, synapse_timeline, and synapse_invalidate by focusing on writing rather than reading or deletion.

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 explicitly says when to use this tool ('whenever something is worth remembering across sessions') and lists categories (decisions, observations, health logs, milestones). It doesn't mention when not to use it or contrast with alternatives, but the context is clear enough for an agent to decide.

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

synapse_timelineA

Chronological view of remembered facts.

Args: entity: Scope to one entity, or None for the global timeline. limit: Max number of rows. Default 50.

Returns: Time-ordered fact list, oldest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
entityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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. It discloses the ordering ('oldest first') and the entity scoping behavior ('Scope to one entity, or None for the global timeline'). It does not explicitly state that it is read-only, but the word 'view' implies it. It adds useful behavioral context beyond 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 is a compact docstring with a clear opening purpose, followed by parameter explanations and a returns line. Every sentence earns its place; it is front-loaded with the core purpose and contains no 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?

The tool is simple (two optional parameters) and an output schema exists, so the description need not explain return values. It covers both parameters and the ordering behavior, which is sufficient for an agent to call it correctly. It does not mention edge cases or error handling, but these are not critical for a read-only timeline view.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully explain the parameters. It does so: 'entity' is described as scoping to one entity or the global timeline, and 'limit' is described as max rows with a default of 50. This adds meaningful semantics that the schema lacks.

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 states 'Chronological view of remembered facts' which clearly indicates a specific resource (remembered facts) and a specific behavior (chronological ordering). It is not a tautology and is distinguishable from siblings like synapse_recall or explore_connections by its explicit chronological focus, though it does not explicitly name alternatives.

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 when a chronological overview of facts is needed, but it does not provide explicit when-to-use or when-not-to-use guidance, nor does it reference any sibling tools. The context is inferred from the wording rather than stated directly.

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

wiki_cluster_pagesA

Cluster wiki pages by semantic similarity using GAAC (TF-IDF).

Identifies:

  • Natural topic clusters β€” pages that belong together

  • Missing links β€” same-cluster pages with no wikilink between them

  • Merge candidates β€” pages so similar they may be redundant (sim > 0.7)

Args: n_clusters: Number of clusters (auto = sqrt of page count if omitted).

ParametersJSON Schema
NameRequiredDescriptionDefault
n_clustersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It explains the algorithm (GAAC, TF-IDF), the similarity threshold for merge candidates, and the default behavior for n_clusters, but it does not explicitly state whether the operation is read-only or has side effects. This missing safety information prevents a higher score.

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

Conciseness5/5

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

The description is concise and well-structured, using bullet points to list the identified outputs. It conveys the necessary information in three short sentences plus a parameter note, with no redundancy or fluff.

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

Completeness4/5

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

Given the presence of an output schema and the relative simplicity of a clustering tool, the description is largely complete. It covers the input parameter, algorithm, and expected outputs. It could mention whether the tool operates on all wiki pages or a subset and whether it modifies data, but these are minor gaps.

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

Parameters5/5

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

The input schema only provides the parameter name and type, with no description. The tool description compensates fully by explaining the meaning of n_clusters and its default behavior ('auto = sqrt of page count if omitted'), adding significant semantic value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Cluster wiki pages by semantic similarity using GAAC (TF-IDF).' It also enumerates specific outputs (natural topic clusters, missing links, merge candidates), making it distinct from sibling tools like wiki_search or wiki_read_page.

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

Usage Guidelines2/5

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

The description does not explicitly state when to use this tool versus alternatives. There is no comparison to sibling tools such as wiki_search or analyze_semantic_structure, leaving the agent to infer the appropriate context from the purpose.

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

wiki_fetch_urlA

Fetch a URL with defuddle (clean markdown extraction), save to raw/, ingest into the knowledge graph, and archive to Clippings/.

Use this when researching the web β€” it strips navigation and clutter, leaving only the article content. Much cleaner than raw web_fetch.

Args: url: The URL to fetch and process. ingest: If True (default), immediately ingest into Neo4j after saving. Set False to save to raw/ only for manual review first.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
ingestNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the side effects: fetching a URL, saving to raw/, ingesting into Neo4j, and archiving to Clippings/. It also explains the conditional behavior of the ingest parameter, but it does not mention permissions or reversibility.

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 tight and structured: one pipeline sentence, one usage sentence, then a short Args list. There is some repetition of the ingest behavior in both the pipeline and parameter sections, but it is not padded or confusing.

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?

An output schema exists, so return values are not a missing piece. The description covers the main flows: default full ingestion and ingest=False partial save. Omitting prerequisites like public reachability or the relationship to sibling tools is a minor gap, not a blocking one.

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

Parameters5/5

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

The schema has 0% description coverage, so the description must convey parameter meaning, and it does. 'url: The URL to fetch and process' is sufficient, while 'ingest' explains the default True behavior and explicitly says that setting False saves to raw/ for manual review first. This goes well beyond the schema's bare types and default.

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 a specific pipeline β€” 'Fetch a URL with defuddle (clean markdown extraction), save to raw/, ingest into the knowledge graph, and archive to Clippings/' β€” so the action and resources are concrete. It also contrasts with 'raw web_fetch', helping to differentiate the tool, though that particular alternative is not in the sibling list.

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?

'Use this when researching the web β€” it strips navigation and clutter' is explicit about the intended use case, and 'Much cleaner than raw web_fetch' names a comparison point. However, it does not say when not to use this tool nor how to route between this and sibling tools like wiki_ingest_raw.

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

wiki_hits_analysisA

Compute HITS hub and authority scores on the wiki wikilink graph.

Authorities = pages cited by many others β€” load-bearing knowledge nodes. Hubs = pages that link to many good authorities β€” navigation layers.

Use to identify which pages need deepening (high authority) and which need comprehensive link coverage (high hub).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden of explaining behavior. It explains what the scores mean and how to interpret them, but it does not explicitly state whether the tool is read-only or if it has any side effects on the wiki graph. This leaves some ambiguity.

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 compact and well-structured: a single defining sentence followed by two clarifying sentences that explain the output interpretation and usage. No redundant or irrelevant content.

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

Completeness4/5

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

For a tool with no parameters, the description adequately covers purpose and interpretation of results. It could mention the output format or whether scores are normalized, but this is not essential for an agent to decide when to use the tool.

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

Parameters5/5

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

The tool has no parameters, so there is no parameter information to add. The description does not need to clarify inputs, and nothing is missing.

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

Purpose5/5

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

The description clearly states the specific action ('Compute HITS hub and authority scores') and the precise subject ('wiki wikilink graph'), distinguishing it from sibling tools like wiki_search or wiki_cluster_pages.

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 concrete use cases: identifying pages needing deepening (high authority) and pages needing comprehensive link coverage (high hub). It does not explicitly name alternatives, but the usage guidance is clear enough for an agent to decide when to invoke this tool.

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

wiki_ingest_rawA

Read a raw source file and ingest it into both the knowledge graph and wiki.

Reads from raw/, runs it through the Synapse semantic pipeline, stores in Neo4j, and creates a summary page in wiki/sources/.

Args: filename: Filename inside the raw/ directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It transparently discloses that the operation writes to both Neo4j and a wiki page, and details the pipeline. It does not mention idempotency, error handling, or permissions, but the core write behavior is clear. This is adequate for a single-step ingestion 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 tight sentences plus an args line, with the core purpose front-loaded. Every sentence earns its placeβ€”purpose, pipeline steps, and parameter clarificationβ€”without redundancy.

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

Completeness5/5

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

The description is complete for a single-parameter tool with an output schema. It covers the input location, the transformation steps, the output locations, and the parameter semantics. An agent can invoke it correctly without additional context.

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

Parameters4/5

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

The description adds meaning beyond the schema by specifying that 'filename' refers to a file inside the raw/ directory, which the schema's bare 'Filename' does not convey. For a single parameter, this is sufficient context, though it could be more explicit about accepted formats or extensions.

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

Purpose5/5

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

The description clearly states the tool's action ('ingest a raw source file') and its destinations (knowledge graph and wiki), with concrete steps (reads from raw/, runs Synapse pipeline, stores in Neo4j, creates summary page). This distinguishes it from siblings like ingest_text and wiki_write_page, which target different inputs or outputs.

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 the tool is for files in the raw/ directory, which is a usage context. However, it does not explicitly compare with alternatives (e.g., ingest_text for direct text, wiki_write_page for manual page creation) or state when not to use it. This leaves some ambiguity for an agent choosing between similar tools.

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

wiki_lintA

Run a health check on the wiki vault.

Detects orphan pages, broken wikilinks, and missing frontmatter.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

The description implies a read-only operation ('health check') but does not explicitly state that the tool makes no modifications or side effects. Given the absence of annotations, the description carries the full burden but leaves the behavioral guarantees somewhat vague.

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 highly conciseβ€”only two sentencesβ€”and avoids unnecessary words or repetition. It front-loads the action ('Run a health check') and lists the key detection capabilities efficiently.

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 provides enough context for an agent to understand the tool's scope and trigger appropriate usage. It does not mention output format or return details, but for a zero-parameter health check, this omission is minor and does not hinder correct invocation.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to describe. With no parameter list, the baseline of 4 applies, and the description correctly omits any irrelevant parameter details.

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

Purpose5/5

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

The description clearly states the tool's purpose: running a health check on the wiki vault and explicitly lists the specific issues it detects (orphan pages, broken wikilinks, missing frontmatter). This distinguishes it from all sibling tools, which focus on other operations like search, memory, or URL fetching.

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 makes the intent obvious, so an agent knows when to use this tool (when a wiki health check is needed). While it doesn't explicitly contrast with alternatives, no sibling tool offers a similar linting/health-check function, so the guidance is implicitly sufficient.

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

wiki_list_pagesB

List all markdown pages in the wiki vault with pagination.

Args: subdir: Subdirectory to list ('wiki' or 'raw'). limit: Maximum pages to return (default 50, max 200). offset: Offset for pagination. tag: Filter by tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo
limitNo
offsetNo
subdirNowiki

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions pagination and subdirectory choices, but does not disclose ordering, whether it returns full page content or just metadata, rate limits, or any side effects. The description gives only minimal behavioral context beyond the bare listing operation.

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 concise and front-loaded with the purpose statement. The Args block is a compact, standard format that efficiently covers all parameters. It could be slightly more structured, but it contains no waste and is easy to scan.

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?

An output schema exists, which lightens the burden of explaining return values. However, the description still lacks details on pagination behavior (e.g., whether offset is zero-based, how total count is conveyed), error handling, or whether the listing is alphabetical or by some other order. For a tool with no annotations, this is a notable gap, but the output schema and simplicity of the operation keep it from being severely incomplete.

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

Parameters4/5

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

The schema has zero descriptions (0% coverage), so the description must compensate. It does so by explaining each parameter: subdir ('wiki' or 'raw'), limit (default 50, max 200), offset (pagination), and tag (filter). This adds meaningful semantics that the schema lacks, making parameter usage clear.

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 states a specific verb and resource: 'List all markdown pages in the wiki vault with pagination.' This clearly conveys the core operation and scope. However, it does not explicitly differentiate from sibling tools like wiki_search or wiki_read_page, though the verb 'list' and pagination hint at distinctiveness.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of scenarios where wiki_search would be more appropriate, nor any exclusions or prerequisites. The description only states what it does, leaving usage context entirely to inference.

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

wiki_read_pageB

Read a wiki page.

Args: path: Relative path from vault root (e.g. 'wiki/concepts/rag.md'). mode: What to return: - "meta": metadata/frontmatter only (from index, 0 file reads) - "excerpt": metadata + first 500 characters of page body (from index) - "full": complete page content (reads file from disk)

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoexcerpt
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

The description makes clear this is a read operation and notes whether each mode reads from disk or an index, which gives some behavioral transparency. However, with no annotations, it does not mention error cases, missing paths, or permissions.

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 and well organized, using a short intro and bullet-like lines for mode values. No unnecessary words or redundant 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?

The description provides enough to invoke the tool with correct parameters and understand the mode options, but does not discuss return format, potential errors, or how it relates to sibling read/search tools. Since an output schema exists, the lack of return detail is acceptable, but some contextual guidance 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?

Both parameters are covered in the description: path is defined as relative to the vault root, and mode lists all three accepted values with their return behavior. This adds meaningful detail beyond the bare schema.

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 reads a wiki page, and the mode parameter specifies the level of content to return. It is distinct enough from sibling tools like wiki_search and wiki_list_pages, though it does not explicitly contrast them.

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

Usage Guidelines2/5

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

The description explains the three modes and their performance implications, but does not explicitly state when to use this tool versus alternatives such as wiki_search or wiki_list_pages. Usage context is implied rather than stated.

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

wiki_sync_indexA

Refresh the wiki index database from disk.

Runs automatically on server start and after write operations. Call manually if files were changed outside Synapse (e.g., Obsidian edits, git pull).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

The description discloses that the tool is automatic on certain events and explains the manual invocation scenario, but it does not mention any potential side effects such as whether it overwrites in-memory changes or if it is safe for concurrent calls. Since there are no annotations, this lack of explicit safety details leaves some behavioral transparency gap.

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, with the first sentence stating the action and the second providing the context for manual use. It is concise, front-loaded, and contains no redundant words.

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

Completeness5/5

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

For a simple index refresh tool, the description fully covers its purpose, automatic behavior, and manual invocation scenario. It also includes examples of external changes (Obsidian edits, git pull) that warrant a manual call, making the tool's context clear without needing to explain return values since an output schema is present.

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?

There are no parameters, so the schema fully covers all inputs. The description does not need to add parameter information, and it does not introduce any ambiguity about expected inputs.

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 purpose as refreshing the wiki index database from disk, using the specific verb 'refresh' and identifying the resource. It also provides a condition for manual invocation (files changed outside Synapse), which helps distinguish its intended use from other tools that might modify the index.

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

Usage Guidelines5/5

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

It explicitly states that the tool runs automatically on server start and after write operations, and advises calling it manually only when files were changed outside Synapse (e.g., Obsidian edits, git pull). This gives clear guidance on when to use it versus relying on automatic triggers, and hints that it should not be called manually for normal Synapse updates.

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

wiki_update_indexB

Rebuild the wiki index from all wiki pages.

Args: deep: If True, performs a disk-level verification of all indexed files.

ParametersJSON Schema
NameRequiredDescriptionDefault
deepNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects and behavior. It states that the tool rebuilds the index and optionally performs disk-level verification, but it does not mention whether the operation is destructive, overwrites existing data, or has performance implications. This lack of detail reduces 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 concise and well-structured, with a one-sentence purpose followed by a clear parameter explanation. No unnecessary words or redundant information are present.

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

Completeness3/5

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

For a simple tool, the description covers the core action and parameter. However, it lacks critical context about side effects, relationship to similar sibling tools (e.g., wiki_sync_index), and potential use cases. This leaves some gaps for an agent deciding whether and how to invoke it.

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

Parameters4/5

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

The single parameter 'deep' is clearly explained in the Args section: 'If True, performs a disk-level verification of all indexed files.' This provides sufficient semantic meaning beyond the raw schema, which contains no description for the parameter.

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 purpose: rebuilding the wiki index from all wiki pages. The verb 'rebuild' and resource 'wiki index' are specific. However, it does not distinguish itself from the similarly named sibling 'wiki_sync_index', which may cause ambiguity.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives such as wiki_sync_index or wiki_lint. It mentions rebuilding from all wiki pages and the deep flag, but leaves the decision-making to the agent without context on appropriate scenarios.

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

wiki_write_pageB

Write or update a wiki page with frontmatter.

Args: path: Relative path (e.g. 'wiki/entities/neo4j.md'). body: Markdown body content. summary: One-line summary for the index. tags: Comma-separated tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
pathYes
tagsNo
summaryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden for behavioral disclosure, but it only says 'write or update' and mentions frontmatter. It does not state whether existing pages are overwritten or merged, whether parent directories are created, or what happens to existing frontmatter fields.

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

Conciseness5/5

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

The description is extremely concise, with a single opening sentence followed by a compact argument list. No unnecessary text is present, and the core purpose is front-loaded.

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

Completeness3/5

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

For a simple write tool the description is mostly adequate, and the output schema presumably covers return values. However, the relationship between summary/tags and the frontmatter is left implicit, and the tool's behavior relative to the wiki index and other siblings is not clarified.

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

Parameters4/5

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

The Args section provides meaningful descriptions for all four parameters, including an example for path and clear statements for body, summary, and tags. Since the schema has no descriptions, this compensates well, though body constraints could be more detailed.

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 action (write or update), the resource (wiki page), and a key feature (frontmatter). It does not explicitly distinguish from sibling tools like wiki_update_index or wiki_ingest_raw, but the focus on page-level writing is evident.

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

Usage Guidelines2/5

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

No guidance is provided about when to choose this tool over alternatives or what scenarios call for it. There is no mention of not using it for index updates, bulk ingestion, or other related operations.

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. 23 tool updatesv0.1.0
    • First observedanalyze_semantic_structure
    • First observeddebug_test
    • First observedexplore_connections
    • First observedgenerate_insights
    • First observedingest_text
    • First observedquery_knowledge
    • First observedsynapse_causal_window
    • First observedsynapse_invalidate
    • First observedsynapse_memory_stats
    • First observedsynapse_recall
    • First observedsynapse_remember
    • First observedsynapse_timeline
    • First observedwiki_cluster_pages
    • First observedwiki_fetch_url
    • First observedwiki_hits_analysis
    • First observedwiki_ingest_raw
    • First observedwiki_lint
    • First observedwiki_list_pages
    • First observedwiki_read_page
    • First observedwiki_search
    • First observedwiki_sync_index
    • First observedwiki_update_index
    • First observedwiki_write_page

TDQS

B3.4/5.0

Scored across 23 tools

Disambiguation3/5

The tools are grouped into wiki, knowledge graph, and memory domains, but several have blurry boundaries: wiki_sync_index vs wiki_update_index, synapse_recall vs synapse_timeline, and ingest_text vs wiki_ingest_raw could cause misselection. Descriptions help clarify most overlaps, but not all.

Naming Consistency4/5

Most tools follow verb_noun snake_case with clear wiki_ and synapse_ prefixes, but the core knowledge graph tools (ingest_text, query_knowledge, explore_connections) lack a shared prefix and debug_test breaks the pattern. The naming is mostly consistent but not fully systematic.

Tool Count3/5

23 tools is in the heavy range and requires a lot of surface area to navigate, though each tool has a plausible role in the wiki/knowledge-graph/memory system. It is borderline: not overwhelming, but more than is clearly necessary.

Completeness4/5

The set covers wiki read/write/indexing, knowledge graph ingestion and querying, and episodic memory lifecycle management including invalidation and causal analysis. Minor gaps exist (no wiki page deletion, no explicit knowledge graph entity update/delete), but core workflows are well covered.

Maintenance

ActivitySlowing
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that transforms markdown notes into an AI-powered knowledge graph. It enables LLM clients to explore, analyze, and diagnose knowledge graphs through tools for node explanation, path finding, causal chain analysis, and wiki health reporting.
    5
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that implements a heavily typed knowledge graph memory system with AI-powered entity and relation extraction, enabling structured knowledge storage and retrieval from unstructured text using predefined or custom ontologies.
    9
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that compiles any text into a verifiable, graph-based knowledge base using deterministic chunking and parallel extraction of epistemology primitives.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that turns any compatible AI agent into a Zettelkasten partner for creating atomic notes, forming semantic links, detecting clusters, and synthesizing insights from your existing knowledge.
    19
    1
    MIT