NeoCoder Neo4j AI Workflow
Supports research analysis workflows including citation graph construction, academic paper processing, and multi-hop reasoning through arXiv research papers when used with the research incarnation.
Enables AI assistants to use Neo4j knowledge graphs as dynamic instruction manuals and project memory for standardized coding workflows, research analysis, and knowledge management with hybrid reasoning capabilities combining structured graph data with semantic search.
Integrates with WolframAlpha API for mathematical calculations, entity queries in chemistry/physics/geography/history, date and unit conversions, and formula solving to enhance the Lotka-Volterra ecological framework in knowledge graph operations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NeoCoder Neo4j AI Workflowanalyze this research paper and create a knowledge graph with citations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NeoCoder: Neo4j-Guided AI Coding Workflow
An MCP server implementation that enables AI assistants like Claude to use a Neo4j knowledge graph as their primary, dynamic "instruction manual" and project memory for standardized coding workflows.
NeoCoder: Hybrid AI Reasoning & Workflow System
An advanced MCP server implementation that combines Neo4j knowledge graphs, Qdrant vector databases, and sophisticated AI orchestration to create a hybrid reasoning system for knowledge management, research analysis, and standardized workflows.
Overview
NeoCoder implements a revolutionary Context-Augmented Reasoning system that goes far beyond traditional RAG (Retrieval-Augmented Generation) by combining:
Core Architecture:
Neo4j Knowledge Graphs - Authoritative structured facts, relationships, and workflows
Qdrant Vector Databases - Semantic search, similarity detection, and contextual understanding
MCP Orchestration - Intelligent routing between data sources with synthesis and citation
F-Contraction Synthesis - Dynamic knowledge merging that preserves source attribution
Key Capabilities:
Hybrid Knowledge Reasoning: Seamlessly combine structured facts with semantic context
Dynamic Knowledge Extraction: Process documents, code, and conversations into interconnected knowledge structures
Citation-Based Analysis: Every claim tracked to its source across multiple databases
Multi-Incarnation System: Specialized modes for coding, research, decision support, and knowledge management
Intelligent Workflow Templates: Neo4j-guided procedures with mandatory verification steps
Revolutionary Features:
🧠 Smart Query Routing: AI automatically determines optimal data source (graph, vector, or hybrid) 🔬 Research Analysis Engine: Process academic papers with citation graphs and semantic content ⚡ F-Contraction Processing: Dynamically merge similar concepts while preserving provenance 🎯 Context-Augmented Reasoning: Generate insights impossible with single data sources 📊 Full Audit Trails: Complete tracking of knowledge synthesis and workflow execution 🛡️ Production-Ready Process Management: Automatic cleanup, signal handling, and resource tracking to prevent process leaks 🔧 Enhanced Tool Handling: Robust async initialization with proper background task management
New from an idea I had- Lotka-Volterra Ecological Framework integrated into Knowledge Graph Incarnation
Related MCP server: Neo4j Memory Server
Process Management & Reliability
NeoCoder implements comprehensive process management following MCP best practices:
Signal Handlers: Proper SIGTERM/SIGINT handling for graceful shutdowns
Resource Tracking: Automatic tracking of processes, Neo4j connections, and background tasks
Zombie Cleanup: Active detection and cleanup of orphaned server instances
Memory Management: Prevention of resource leaks through proper cleanup patterns
Background Task Management: Safe handling of async initialization and concurrent operations
Connection Pooling: Efficient Neo4j driver management with automatic cleanup
Monitoring Commands
Use these tools to monitor server health:
get_cleanup_status()- View resource usage and cleanup statuscheck_connection()- Verify Neo4j connectivity and permissions
Quick Start
Prerequisites
Neo4j: Running locally or remote instance (for structured knowledge graphs)
Qdrant: Vector database for semantic search and embeddings (for hybrid reasoning)
Python 3.10+: For running the MCP server
uv: The Python package manager for MCP servers
Claude Desktop: For using with Claude AI
MCP-Desktop-Commander: Invaluable for CLI and filesystem operations
For the Lotka-Volterra Ecosystem and generally enhanced abilities-
wolframalpha-llm-mcp: really nice!
mcp-server-qdrant-enhanced: My qdrant-enhanced mcp server
Optional for more utility
This incarnation is still being developed
For Code Analysis Incarnation: AST/ASG: Currently needs development and an incarnation re-write
Get a free API key from WolframAlpha:
To get a free API key (AppID) for Wolfram|Alpha, you need to sign up for a Wolfram ID and then register an application on the Wolfram|Alpha Developer Portal.
Create a Wolfram ID: If you don't already have one, create a Wolfram ID at https://account.wolfram.com/login/create
Navigate to the Developer Portal: Once you have a Wolfram ID, sign in to the Wolfram|Alpha Developer Portal https://developer.wolframalpha.com/portal/myapps
Sign up for your first AppID: Click on the "Sign up to get your first AppID" button.
Fill out the AppID creation dialog: Provide a name and a simple description for your application.
Receive your AppID: After filling out the necessary information, you will be presented with your API key, also referred to as an AppID.
The Wolfram|Alpha API is free for non-commercial usage, and you get up to 2,000 requests per month.
Each application requires its own unique AppID.
The MCP server runs the Python code, bridging the gap between the Neo4j graph and the AI assistant ( e.g. Claude)

Installation
1. Clone the repository
git clone https://github.com/angrysky56/NeoCoder-neo4j-ai-workflow.git
cd NeoCoder-neo4j-ai-workflow2. Set up Python and the virtual environment
Make sure you have pyenv and uv installed.
pyenv install 3.11.12 # if not already installed
pyenv local 3.11.12
uv venv
source .venv/bin/activate3. Install dependencies
uv pip install -e '.[dev,docs,gpu]'4. Start Neo4j and Qdrant
Neo4j: Start your Neo4j server (locally or remote). Default connection:
bolt://localhost:7687
Neo4j connection parameters:
URL:
bolt://localhost:7687(default)Username:
neo4j(default)Password: Your Neo4j database password
Database:
neo4j(default)Set credentials via environment variables if needed:
NEO4J_URLNEO4J_USERNAMENEO4J_PASSWORDNEO4J_DATABASE
Qdrant: For persistent Qdrant storage, use this Docker command (recommended):
docker run -p 6333:6333 -p 6334:6334 \ -v "$(pwd)/qdrant_storage:/qdrant/storage:z" \ qdrant/qdrantThis will store Qdrant data in a
qdrant_storagefolder in your project directory.
5. (Optional) VS Code users
Open the Command Palette (
Ctrl+Shift+P), select Python: Select Interpreter, and choose.venv/bin/python.
It should auto-install when using the config- not sure anymore haven't tried that and some dependencies are rather large.
Potential Quickstart- lol sorry
Recommended: Claude Desktop Integration:
Configure Claude Desktop by adding the following to your
claude-app-config.json:
{
"mcpServers": {
"neocoder": {
"command": "uv",
"args": [
"--directory",
"/your-path-to/NeoCoder-neo4j-ai-workflow",
"run",
"mcp_neocoder"
],
"env": {
"NEO4J_URL": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "your-neo4j-password-here",
"NEO4J_DATABASE": "neo4j",
"LOG_LEVEL": "INFO",
"MCP_TRANSPORT": "stdio",
"PYTHONUNBUFFERED": "1"
}
}
}
}
Important: The password in this configuration must match your Neo4j database password.
Otherwise- Install dependencies: Quick Troubleshooting:
If you see errors about missing packages, double-check that your
.venvis activated and you are using the correct Python version.If you need to reset your environment, you can remove
.venvand repeat the steps above.Can't conect to DB? Install neo4j Desktop and QDRANT. Make sure they are running. NEO4J requires a password set.
docker pull qdrant/qdrant
docker run -p 6333:6333 -p 6334:6334 \
-v "$(pwd)/qdrant_storage:/qdrant/storage:z" \
qdrant/qdrantYou are now ready to use NeoCoder with full Neo4j and Qdrant hybrid Lotka-Volterra Ecosystem reasoning!
Suggested system prompt
> **System Instruction:** You are an AI assistant integrated with a Neo4j knowledge graph that defines our standard procedures and tracks project changes.
>
> **Your Core Interaction Loop:**
> 1. **Identify Task & Keyword:** Determine the action required (e.g., fix a bug -> `FIX`).
> 2. **Consult the Hub:** If unsure about keywords or process, start by querying `:AiGuidanceHub {id: 'main_hub'}` for guidance and links to best practices or other guides.
> 3. **Retrieve Instructions:** Formulate a Cypher query to fetch the `steps` from the current `:ActionTemplate` matching the keyword (e.g., `MATCH (t:ActionTemplate {keyword: 'FIX', isCurrent: true}) RETURN t.steps`). Execute this query.
> 4. **Execute Guided Workflow:** Follow the retrieved `steps` meticulously. This includes reviewing project READMEs, implementing changes, and critically:
> 5. **Perform Verification:** Execute the testing steps defined in the template. **ALL required tests MUST pass before you consider the task complete.**
> 6. **Record Completion (Post-Testing):** Only if tests pass, formulate and execute the Cypher query specified in the template to create a `:WorkflowExecution` node, linking it appropriately. Do NOT record if tests failed.
> 7. **Finalize Updates:** Update the project's README content (in Neo4j or the file) as per the template's instructions.
>
> **Strict Rule:** Always prioritize instructions retrieved from the Neo4j graph over your general knowledge for workflow procedures. Use the graph as your single source of truth for *how* tasks are done here.
---
> **knowledge_graph_incarnation with integrated Lotka Volterra Special System Instruction:** You are an AI assistant integrated with a sophisticated hybrid reasoning system that combines Neo4j knowledge graphs, Qdrant vector databases, and MCP orchestration for advanced knowledge management and workflow execution.
>
> **Your Core Capabilities:**
> 1. **Standard Coding Workflows:** Use Neo4j-guided templates for structured development tasks
> 2. **Hybrid Knowledge Reasoning:** Combine structured facts (Neo4j) with semantic search (Qdrant) for comprehensive analysis
> 3. **Dynamic Knowledge Synthesis:** Apply F-Contraction principles to merge and consolidate knowledge from multiple sources
> 4. **Multi-Modal Analysis:** Process research papers, code, documentation, and conversations into interconnected knowledge structures
> 5. **Citation-Based Reasoning:** Provide fully attributed answers with source tracking across databases
>
> **Your Core Interaction Loop:**
> 1. **Identify Task & Context:** Determine the required action and select appropriate incarnation/workflow
> 2. **Consult Guidance Hubs:** Query incarnation-specific guidance hubs for specialized capabilities and procedures
> 3. **Execute Hybrid Workflows:** For knowledge tasks, use KNOWLEDGE_QUERY template for intelligent routing between graph and vector search
> 4. **Apply Dynamic Synthesis:** Use KNOWLEDGE_EXTRACT template to process documents into both structured (Neo4j) and semantic (Qdrant) representations
> 5. **Ensure Quality & Citations:** All knowledge claims must be properly cited with source attribution
> 6. **Record & Learn:** Log successful executions for system optimization and learning
>
> **Hybrid Reasoning Protocol:**
> - **Graph-First**: Use Neo4j for authoritative facts, relationships, and structured data
> - **Vector-Enhanced**: Use Qdrant for semantic context, opinions, and nuanced information
> - **Intelligent Synthesis**: Combine both sources with conflict detection and full citation tracking
> - **F-Contraction Merging**: Dynamically merge similar concepts while preserving source attribution
>
> **Strict Rules:**
> - Always prioritize structured facts from Neo4j over semantic information
> - Every claim must include proper source citations
> - Use incarnation-specific tools and templates as single source of truth for procedures
> - Apply F-Contraction principles when processing multi-source information
---
Instructions for WolframAlpha use
- WolframAlpha understands natural language queries about entities in chemistry, physics, geography, history, art, astronomy, and more.
- WolframAlpha performs mathematical calculations, date and unit conversions, formula solving, etc.
- Convert inputs to simplified keyword queries whenever possible (e.g. convert "how many people live in France" to "France population").
- Send queries in English only; translate non-English queries before sending, then respond in the original language.
- Display image URLs with Markdown syntax: ![URL]
- ALWAYS use this exponent notation: `6*10^14`, NEVER `6e14`.
- ALWAYS use {"input": query} structure for queries to Wolfram endpoints; `query` must ONLY be a single-line string.
- ALWAYS use proper Markdown formatting for all math, scientific, and chemical formulas, symbols, etc.: '$$\n[expression]\n$$' for standalone cases and '\( [expression] \)' when inline.
- Never mention your knowledge cutoff date; Wolfram may return more recent data.
- Use ONLY single-letter variable names, with or without integer subscript (e.g., n, n1, n_1).
- Use named physical constants (e.g., 'speed of light') without numerical substitution.
- Include a space between compound units (e.g., "Ω m" for "ohm*meter").
- To solve for a variable in an equation with units, consider solving a corresponding equation without units; exclude counting units (e.g., books), include genuine units (e.g., kg).
- If data for multiple properties is needed, make separate calls for each property.
- If a WolframAlpha result is not relevant to the query:
-- If Wolfram provides multiple 'Assumptions' for a query, choose the more relevant one(s) without explaining the initial result. If you are unsure, ask the user to choose.
-- Re-send the exact same 'input' with NO modifications, and add the 'assumption' parameter, formatted as a list, with the relevant values.
-- ONLY simplify or rephrase the initial query if a more relevant 'Assumption' or other input suggestions are not provided.
-- Do not explain each step unless user input is needed. Proceed directly to making a better API call based on the available assumptions.Multiple Incarnations
NeoCoder supports multiple "incarnations" - different operational modes that adapt the system for specialized use cases while preserving the core Neo4j graph structure. In a graph-native stack, the same Neo4j core can manifest as very different "brains" simply by swapping templates and execution policies.
Key Architectural Principles
The NeoCoder split is highly adaptable because:
Neo4j stores facts as first-class graph objects
Workflows live in template nodes
Execution engines simply walk the graph
Because these three tiers are orthogonal, you can freeze one layer while morphing the others—turning a code-debugger today into a lab notebook or a learning management system tomorrow. This design echoes Neo4j's own "from graph to knowledge-graph" maturation path where schema, semantics, and operations are deliberately decoupled.
Common Graph Schema Motifs
All incarnations share these core elements:
Element | Always present | Typical labels / rels |
Actor | human / agent / tool |
|
Intent | hypothesis, decision, lesson, scenario |
|
Evidence | doc, metric, observation |
|
Outcome | pass/fail, payoff, grade, state vector |
|
Available Incarnations:
base_incarnation (default) - Original NeoCoder, Tool, Templates and Incarnations Workflow management
research_incarnation - Scientific research platform for hypothesis tracking and experiments
Register hypotheses, design experiments, capture runs, and publish outcomes
Neo4j underpins provenance pilots for lab workflows with lineage queries
decision_incarnation - Decision analysis and evidence tracking system
Create decision alternatives with expected-value metrics
Bayesian updater agents re-compute metric posteriors when new evidence arrives
Transparent, explainable reasoning pipelines
data_analysis_incarnation - Complex system modeling and simulation
Model components with state vectors and physical couplings
Simulate failure propagation using path queries
Optional quantum-inspired scheduler for parameter testing
knowledge_graph_incarnation - Advanced Hybrid Reasoning System
Hybrid Knowledge Queries: Combine Neo4j structured data with Qdrant semantic search
Dynamic Knowledge Extraction: Process documents into both graph and vector representations
F-Contraction Synthesis: Intelligently merge similar concepts while preserving source attribution
Citation-Based Reasoning: Full source tracking across multiple databases
Research Analysis Engine: Specialized workflows for academic paper processing
Smart Query Routing: AI automatically determines optimal data source strategy
Cross-Database Navigation: Seamless linking between structured facts and semantic content
Conflict Detection: Identify and flag inconsistencies between sources
Real-Time Knowledge Synthesis: Dynamic graph construction from conversations and documents
code_analysis_incarnation - Code analysis using Abstract Syntax Trees
Parse and analyze code structure using AST and ASG tools
Track code complexity and quality metrics
Compare different versions of code
Generate documentation from code analysis
Identify code smells and potential issues
Each incarnation provides its own set of specialized tools that are automatically registered when the server starts. These tools are available for use in Claude or other AI assistants that connect to the MCP server.
Implementation Roadmap
NeoCoder features an implementation roadmap that includes:
LevelEnv ↔ Neo4j Adapter: Maps events to graph structures and handles batch operations
Amplitude Register (Quantum Layer): Optional quantum-inspired layer for superposition states
Scheduler: Prioritizes tasks based on entropy and impact scores
Re-using TAG assets: Leverages existing abstractions for vertical information hiding
Starting with a Specific Incarnation
# List all available incarnations
python -m mcp_neocoder.server --list-incarnations
# Start with a specific incarnation
python -m mcp_neocoder.server --incarnation continuous_learningIncarnations can also be switched at runtime using the switch_incarnation() tool:
switch_incarnation(incarnation_type="complex_system")Dynamic Incarnation Loading
NeoCoder features a fully dynamic incarnation loading system, which automatically discovers and loads incarnations from the incarnations directory. This means:
No hardcoded imports: New incarnations can be added without modifying server.py
Auto-discovery: Just add a new file with the format
*_incarnation.pyto the incarnations directoryAll tools available: Tools from all incarnations are registered and available, even if that incarnation isn't active
Easy extension: Create new incarnations with the provided template
Creating a New Incarnation
To create a new incarnation:
Create a new file in the
src/mcp_neocoder/incarnations/directory with the naming patternyour_incarnation_name_incarnation.pyUse this template structure:
"""
Your incarnation name and description
"""
import json
import logging
import uuid
from typing import Dict, Any, List, Optional, Union
import mcp.types as types
from pydantic import Field
from neo4j import AsyncTransaction
from .polymorphic_adapter import BaseIncarnation, IncarnationType
logger = logging.getLogger("mcp_neocoder.incarnations.your_incarnation_name")
class YourIncarnationNameIncarnation(BaseIncarnation):
"""
Your detailed incarnation description here
"""
# Define the incarnation type - must match an entry in IncarnationType enum
incarnation_type = IncarnationType.YOUR_INCARNATION_TYPE
# Metadata for display in the UI
description = "Your incarnation short description"
version = "0.1.0"
# Initialize schema and add tools here
async def initialize_schema(self):
"""Initialize the schema for your incarnation."""
# Implementation...
# Add more tool methods below
async def your_tool_name(self, param1: str, param2: Optional[int] = None) -> List[types.TextContent]:
"""Tool description."""
# Implementation...Add your incarnation type to the
IncarnationTypeenum inpolymorphic_adapter.pyRestart the server, and your new incarnation will be automatically discovered
See incarnations.md for detailed documentation on using and creating incarnations.
Available Templates
NeoCoder comes with these standard templates:
FIX - Guidance on fixing a reported bug, including mandatory testing and logging
REFACTOR - Structured approach to refactoring code while maintaining functionality
DEPLOY - Guidance on deploying code to production environments with safety checks
FEATURE - Structured approach to implementing new features with proper testing and documentation
TOOL_ADD - Process for adding new tool functionality to the NeoCoder MCP server
CYPHER_SNIPPETS - Manage and use Cypher snippets for Neo4j queries
CODE_ANALYZE - Structured workflow for analyzing code using AST and ASG tools
KNOWLEDGE_QUERY - Hybrid Knowledge Query System for intelligent multi-source reasoning
KNOWLEDGE_EXTRACT - Dynamic Knowledge Extraction & Synthesis with F-Contraction merging
Advanced Hybrid Reasoning System
NeoCoder features a revolutionary Context-Augmented Reasoning architecture that combines multiple data sources for unprecedented knowledge synthesis capabilities.
Hybrid Query Architecture
The KNOWLEDGE_QUERY template implements a sophisticated 3-step reasoning process:
Step 1: Smart Query Router
Intent Classification: AI analyzes queries to determine optimal data source strategy
Query Types:
Graph-centric: "Who works with whom?", "Show dependency chain"
Vector-centric: "What are opinions on X?", "Find discussions about Y"
Hybrid: "What did [person from graph] say about [semantic topic]?"
Execution Planning: Designs multi-step plans for complex hybrid queries
Step 2: Parallelized Data Retrieval
Neo4j Queries: Execute Cypher queries for structured facts and relationships
Qdrant Searches: Perform semantic searches across document collections
Sequential Optimization: For hybrid queries, use graph results to refine vector searches
Step 3: Cross-Database Synthesizer
Intelligent Synthesis: Combine structured facts with semantic context
Source Prioritization: Neo4j facts as authoritative, Qdrant for nuance and opinion
Mandatory Citations: Every claim attributed to specific sources
Conflict Detection: Identify and flag inconsistencies between data sources
Dynamic Knowledge Extraction (F-Contraction)
The KNOWLEDGE_EXTRACT template implements dynamic knowledge synthesis inspired by graph contraction principles:
Core F-Contraction Concepts:
Vertices as Concepts: Each distinct concept becomes a graph entity
Edges as Relationships: Track co-occurrence and explicit connections
Dynamic Merging: LLM-powered detection of duplicate/similar concepts
Source Preservation: Maintain pointers to all original sources after merging
Knowledge Processing Pipeline:
Document Ingestion: Parse PDFs, text, code, conversations
Dual Storage: Chunk text for Qdrant, extract entities for Neo4j
Entity Extraction: Identify Papers, Authors, Concepts, Methods, etc.
Relationship Discovery: Find citations, dependencies, semantic connections
F-Contraction Merging: Intelligently consolidate similar entities
Cross-Reference Mapping: Link graph entities to vector document chunks
Quality Validation: Ensure consistency and completeness
Research Analysis Engine
Specialized capabilities for academic and technical document processing:
Citation Graph Construction: Build networks of paper relationships
Multi-Hop Reasoning: "Trace evolution of transformer architecture through citation links"
Conflict Analysis: "How does definition of X in Paper A differ from Paper B?"
Temporal Synthesis: Track concept evolution across time and sources
Cross-Domain Integration: Combine findings from multiple research domains
Benefits of Hybrid Reasoning
Unprecedented Synthesis: Answers impossible with single data sources
Source Transparency: Complete audit trail from raw data to conclusions
Conflict Awareness: Explicit handling of contradictory information
Semantic Enrichment: Structured facts enhanced with contextual understanding
Dynamic Learning: Knowledge base improves through F-Contraction merging
Research Acceleration: Rapid analysis of complex academic literature
Architecture
Knowledge Graph Structure
:AiGuidanceHub: Central navigation hub for the AI
:ActionTemplate: Templates for standard workflows (FIX, REFACTOR, etc.)
:Project: Project data including README and structure
:File/Directory: Project file structure representation
:WorkflowExecution: Audit trail of completed workflows
:BestPracticesGuide: Coding standards and guidelines
:TemplatingGuide: How to create/modify templates
:SystemUsageGuide: How to use the graph system
MCP Server Tools
The MCP server provides the following tools to AI assistants:
Core Tools
check_connection: Verify Neo4j connection status
get_guidance_hub: Entry point for AI navigation
get_action_template: Get a specific workflow template
list_action_templates: See all available templates
get_best_practices: View coding standards
get_project: View project details including README
list_projects: List all projects in the system
log_workflow_execution: Record a successful workflow completion
get_workflow_history: View audit trail of work done
add_template_feedback: Provide feedback on templates
run_custom_query: Run direct Cypher queries
write_neo4j_cypher: Execute write operations on the graph
Incarnation Management Tools
get_current_incarnation: Get the currently active incarnation
list_incarnations: List all available incarnations
switch_incarnation: Switch to a different incarnation
suggest_tool: Get tool suggestions based on task description
Each incarnation provides additional specialized tools that are automatically registered when the incarnation is activated.
Knowledge Graph & Hybrid Reasoning Tools
The Knowledge Graph incarnation provides advanced hybrid reasoning capabilities that combine structured graph data with semantic vector search:
Core Knowledge Management:
create_entities: Create multiple entities with observations and proper Neo4j labeling
create_relations: Connect entities with typed relationships and timestamps
add_observations: Add timestamped observations to existing entities
delete_entities: Remove entities with cascading deletion of relationships
delete_observations: Targeted removal of specific observation content
delete_relations: Remove specific relationships while preserving entities
read_graph: View entire knowledge graph with entities, observations, and relationships
search_nodes: Full-text search across entity names, types, and observation content
open_nodes: Get detailed entity information with incoming/outgoing relationships
Advanced Hybrid Reasoning Tools:
KNOWLEDGE_QUERY Workflow: Intelligent hybrid querying system
Smart query routing (graph-centric, vector-centric, or hybrid)
Parallelized data retrieval from Neo4j and Qdrant
Cross-database synthesis with mandatory citation tracking
Conflict detection and source prioritization
KNOWLEDGE_EXTRACT Workflow: Dynamic knowledge extraction with F-Contraction
Document ingestion with metadata extraction
Dual storage: text chunks in Qdrant, entities in Neo4j
LLM-powered entity extraction and relationship discovery
F-Contraction merging of similar concepts with source preservation
Cross-reference mapping between graph and vector data
Quality validation and extraction reporting
Research Analysis Capabilities:
Citation Graph Construction: Build paper-author-institution networks
Multi-Hop Synthesis: Trace concept evolution through connected sources
Temporal Analysis: Track changes and developments over time
Conflict Resolution: Handle contradictory information from multiple sources
Source Attribution: Complete provenance tracking from raw data to conclusions
Integration Features:
Qdrant Collections: Seamless integration with vector databases for semantic search
Cross-Database Navigation: Bi-directional linking between structured and semantic data
Memory Integration: Connect with long-term memory systems for continuity
MCP Orchestration: Advanced tool coordination and workflow management
Cypher Snippet Toolkit
The MCP server includes a toolkit for managing and searching Cypher query snippets:
list_cypher_snippets: List all available Cypher snippets with optional filtering
get_cypher_snippet: Get a specific Cypher snippet by ID
search_cypher_snippets: Search for Cypher snippets by keyword, tag, or pattern
create_cypher_snippet: Add a new Cypher snippet to the database
update_cypher_snippet: Update an existing Cypher snippet
delete_cypher_snippet: Delete a Cypher snippet from the database
get_cypher_tags: Get all tags used for Cypher snippets
This toolkit provides a searchable repository of Cypher query patterns and examples that can be used as a reference and learning tool.
Tool Proposal System
The MCP server includes a system for proposing and requesting new tools:
propose_tool: Propose a new tool for the NeoCoder system
request_tool: Request a new tool feature as a user
get_tool_proposal: Get details of a specific tool proposal
get_tool_request: Get details of a specific tool request
list_tool_proposals: List all tool proposals with optional filtering
list_tool_requests: List all tool requests with optional filtering
This system allows AI assistants to suggest new tools and users to request new functionality, providing a structured way to manage and track feature requests.

Customizing Templates
Templates are stored in the templates directory as .cypher files. You can edit existing templates or create new ones.
To add a new template:
Create a new file in the
templatesdirectory (e.g.,custom_template.cypher)Follow the format of existing templates
Initialize the database to load the template into Neo4j
The 'Cypher Snippet Toolkit' tools operate on the graph structure defined below
Below is a consolidated, Neo4j 5-series–ready toolkit you can paste straight into Neo4j Browser, Cypher shell, or any driver.
It creates a mini-documentation graph where every (:CypherSnippet) node stores a piece of Cypher syntax, an example, and metadata; text and (optionally) vector indexes make the snippets instantly searchable from plain keywords or embeddings.
1 · Schema & safety constraints
// 1-A Uniqueness for internal IDs
CREATE CONSTRAINT cypher_snippet_id IF NOT EXISTS
FOR (c:CypherSnippet)
REQUIRE c.id IS UNIQUE; // Neo4j 5 syntax
// 1-B Optional tag helper (one Tag node per word/phrase)
CREATE CONSTRAINT tag_name_unique IF NOT EXISTS
FOR (t:Tag)
REQUIRE t.name IS UNIQUE;2 · Indexes that power search
// 2-A Quick label/property look-ups
CREATE LOOKUP INDEX snippetLabelLookup IF NOT EXISTS
FOR (n) ON EACH labels(n);
// 2-B Plain-text index (fast prefix / CONTAINS / = queries)
CREATE TEXT INDEX snippet_text_syntax IF NOT EXISTS
FOR (c:CypherSnippet) ON (c.syntax);
CREATE TEXT INDEX snippet_text_description IF NOT EXISTS
FOR (c:CypherSnippet) ON (c.description);
// 2-C Full-text scoring index (tokenised, ranked search)
CREATE FULLTEXT INDEX snippet_fulltext IF NOT EXISTS
FOR (c:CypherSnippet) ON EACH [c.syntax, c.example];
// 2-D (OPTIONAL) Vector index for embeddings ≥Neo4j 5.15
CREATE VECTOR INDEX snippet_vec IF NOT EXISTS
FOR (c:CypherSnippet) ON (c.embedding)
OPTIONS {indexConfig: {
`vector.dimensions`: 384,
`vector.similarity_function`: 'cosine'
}};If your build is ≤5.14, call db.index.vector.createNodeIndex instead.
3 · Template to store a snippet
:params {
snippet: {
id: 'create-node-basic',
name: 'CREATE node (basic)',
syntax: 'CREATE (n:Label {prop: $value})',
description:'Creates a single node with one label and properties.',
example: 'CREATE (p:Person {name:$name, age:$age})',
since: 5.0,
tags: ['create','insert','node']
}
}
// 3-A MERGE guarantees idempotence
MERGE (c:CypherSnippet {id:$snippet.id})
SET c += $snippet
WITH c, $snippet.tags AS tags
UNWIND tags AS tag
MERGE (t:Tag {name:tag})
MERGE (c)-[:TAGGED_AS]->(t);Parameter maps keep code reusable and prevent query-plan recompilation.
4 · How to search
4-A Exact / prefix match via TEXT index
MATCH (c:CypherSnippet)
WHERE c.name STARTS WITH $term // fast TEXT index hit
RETURN c.name, c.syntax, c.example
ORDER BY c.name;4-B Ranked full-text search
CALL db.index.fulltext.queryNodes(
'snippet_fulltext', // index name
$q // raw search string
) YIELD node, score
RETURN node.name, node.syntax, score
ORDER BY score DESC
LIMIT 10;4-C Embedding similarity (vector search)
WITH $queryEmbedding AS vec
CALL db.index.vector.queryNodes(
'snippet_vec', 5, vec // top-5 cosine hits
) YIELD node, similarity
RETURN node.name, node.syntax, similarity
ORDER BY similarity DESC;5 · Updating or deleting snippets
// 5-A Edit description
MATCH (c:CypherSnippet {id:$id})
SET c.description = $newText,
c.lastUpdated = date()
RETURN c;
// 5-B Remove a snippet cleanly
MATCH (c:CypherSnippet {id:$id})
DETACH DELETE c;Both operations automatically maintain index consistency – no extra work required.
6 · Bulk export / import (APOC)
CALL apoc.export.cypher.all(
'cypher_snippets.cypher',
{useOptimizations:true, format:'cypher-shell'}
);This writes share-ready Cypher that can be replayed with cypher-shell < cypher_snippets.cypher.
Quick-start recap
Run Section 1 & 2 once per database to set up constraints and indexes.
Use Section 3 (param-driven) to add new documentation entries.
Query with Section 4, and optionally add vector search if you store embeddings.
Backup or publish with Section 6.
With these building blocks you now have a living, searchable "Cypher cheat-sheet inside Cypher" that always stays local, versionable, and extensible. Enjoy friction-free recall as your query repertoire grows!
Note: A full reference version of this documentation that preserves all original formatting is available in the /docs/cypher_snippets_reference.md file.
Created by angrysky56 Claude 3.7 Sonnet Gemini 2.5 Pro Preview 3-25 ChatGPT o3
Code Analysis
A comprehensive analysis of the NeoCoder codebase is available in the /analysis directory. This includes:
Architecture overview
Incarnation system analysis
Code metrics and structure
Workflow template analysis
Integration points
Recommendations for future development
Recent Updates
2025-06-24: Revolutionary Hybrid Reasoning System (v2.0.0)
BREAKTHROUGH: Implemented Context-Augmented Reasoning architecture combining Neo4j + Qdrant + LLM synthesis
NEW:
KNOWLEDGE_QUERYaction template - 3-step hybrid reasoning system:Smart Query Router: AI classifies intent and plans execution strategy
Parallelized Data Retrieval: Seamlessly queries both Neo4j and Qdrant
Cross-Database Synthesizer: Intelligent synthesis with mandatory citation tracking
NEW:
KNOWLEDGE_EXTRACTaction template - F-Contraction knowledge synthesis:Dynamic document processing into both graph and vector representations
LLM-powered entity extraction and relationship discovery
Intelligent concept merging while preserving source attribution
Cross-reference mapping between structured and semantic data
ENHANCED: Knowledge Graph incarnation with advanced hybrid capabilities:
Fixed guidance hub transaction errors for seamless user experience
Implemented sophisticated research analysis workflows
Added conflict detection and source prioritization
Full integration with Qdrant vector databases for semantic search
ARCHITECTURE: Established foundation for Context-Augmented Reasoning that goes far beyond traditional RAG
VALIDATION: Successfully tested with real research paper corpus demonstrating citation graphs + semantic analysis
IMPACT: Enables unprecedented knowledge synthesis impossible with single data sources
2025-06-14: Fixed Critical Async/Event Loop Management Issues (v1.4.1)
CRITICAL FIX: Resolved async context manager protocol errors in
safe_neo4j_sessionfunctionRoot Cause: AsyncMock in tests and some driver configurations returned coroutines instead of async context managers
Solution: Added
_handle_session_creationhelper function to detect and properly handle both coroutines and context managersImpact: Eliminates "TypeError: 'coroutine' object does not support the asynchronous context manager protocol" errors
Testing: Added comprehensive test suite (
test_event_loop_fix.py) to prevent regressionCompatibility: Maintains full backward compatibility with existing Neo4j driver usage
Files Modified:
src/mcp_neocoder/event_loop_manager.py,tests/test_event_loop_fix.py
2025-04-27: Added Code Analysis Incarnation with AST/ASG Support (v1.4.0)
Added new
code_analysis_incarnation.pyfor deep code analysis using AST and ASG toolsImplemented Neo4j schema for storing code structure and analysis results
Added CODE_ANALYZE action template with step-by-step workflow
Created specialized tools for code analysis:
analyze_codebase: Analyze entire directory structuresanalyze_file: Deep analysis of individual filescompare_versions: Compare different versions of codefind_code_smells: Identify potential code issuesgenerate_documentation: Auto-generate code documentationexplore_code_structure: Navigate code structuresearch_code_constructs: Find specific patterns in code
Integrated with external AST/ASG tools
Added proper documentation in guidance hub
Updated IncarnationType enum to include CODE_ANALYSIS type
2025-04-27: Eliminated Knowledge Graph Transaction Error Messages (v1.3.2)
Completely eliminated error messages related to transaction scope issues in knowledge graph functions
Implemented server-side error message interception and replacement for a smoother user experience
Added a new safer execution pattern for all database operations:
Created
_safe_execute_writemethod to eliminate transaction scope errors in write operationsCreated
_safe_read_querymethod to ensure proper transaction handling for read operationsImproved entity count tracking for accurate operation feedback
Enhanced error recovery to continue operations even when JSON parsing fails
Simplified and improved all knowledge graph tool implementations
Maintained full backward compatibility with existing knowledge graph data
Enhanced guidance hub with clearer usage examples
2025-04-27: Fixed Knowledge Graph Transaction Scope Issues (v1.3.1)
Fixed critical issue with knowledge graph functions returning "transaction out of scope" errors
Implemented a transaction-safe approach for all knowledge graph operations
Updated all knowledge graph tools to properly handle transaction contexts:
Fixed
create_entitiesto properly return resultsFixed
create_relationswith a simplified approachFixed
add_observationsto ensure data is committedFixed
delete_entities,delete_observations, anddelete_relationsfunctionsFixed
read_graphto fetch data in multiple safe transactionsFixed
search_nodeswith a more robust query approachFixed
open_nodesto query entity details safely
Enhanced guidance hub with clear examples of knowledge graph tool usage
Improved error handling throughout knowledge graph operations
Maintained backward compatibility with existing knowledge graph data
2025-04-26: Fixed Knowledge Graph API Functions (v1.3.0)
Fixed the issue with Knowledge Graph API functions not properly integrating with Neo4j node labeling system
Implemented properly labeled entities with :Entity label instead of generic :KnowledgeNode
Added full set of knowledge graph management functions:
create_entities: Create entities with proper labeling and observationscreate_relations: Connect entities with typed relationshipsadd_observations: Add observations to existing entitiesdelete_entities: Remove entities and their connectionsdelete_observations: Remove specific observations from entitiesdelete_relations: Remove relationships between entitiesread_graph: View the entire knowledge graph structuresearch_nodes: Find entities by name, type, or observation contentopen_nodes: Get detailed information about specific entities
Added fulltext search support with fallback for non-fulltext environments
Added proper schema initialization with constraints and indexes for knowledge graph
Updated guidance hub content with usage instructions for the new API functions
2025-04-25: Expanded Incarnation Documentation (v1.2.0)
Added detailed documentation on the architectural principles behind multiple incarnations
Enhanced description of each incarnation type with operational patterns and use cases
Added information about common graph schema motifs across incarnations
Included implementation roadmap for integrating quantum-inspired approaches
2025-04-24: Fixed Incarnation Tool Registration (v1.1.0)
Fixed the issue where incarnation tools weren't being properly registered on server startup
Fixed circular dependency issues with duplicate class definitions
Added explicit tool method declaration support via
_tool_methodsclass attributeImproved the tool discovery mechanism to ensure all tools from each incarnation are properly detected
Enhanced event loop handling to prevent issues during server initialization
Added comprehensive logging to aid in troubleshooting
Fixed schema initialization to properly defer until needed
See the CHANGELOG.md file for detailed implementation notes.
License
MIT License
Available Tools
30 toolsadd_template_feedbackA
Provide feedback about an action template to improve it.
| Name | Required | Description | Default |
|---|---|---|---|
| rating | No | Optional rating (1-5) | |
| keyword | Yes | Keyword of the template (e.g., FIX, REFACTOR) | |
| feedback | Yes | The feedback to provide about the template | |
| suggestions | No | Specific suggestions for improvements |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 of behavioral disclosure. It only states the action without revealing whether the feedback is stored, if it modifies the template, or if special permissions are required. This is a significant gap for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the core purpose without any unnecessary words. It is front-loaded and immediately tells the reader what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool has a complete schema and an output schema, the description is minimal. It does not explain what happens when feedback is submitted, any side effects, or when to use the tool. Given the lack of annotations, the description is adequate but not fully complete for a mutating operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides full coverage of all parameters with clear descriptions (e.g., 'Optional rating (1-5)', 'Specific suggestions for improvements'). The description adds no additional parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 ('provide feedback') and resource ('action template'), and the intent ('to improve it'). It effectively distinguishes itself from sibling tools, none of which focus on feedback.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage at a high level (when you want to give feedback) but lacks explicit guidance on when to use versus alternatives or any prerequisite conditions. There are no direct sibling alternatives for feedback, but the guidance is still only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_connectionB
Check the Neo4j connection status and database access permissions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 doesn't state whether this is a read-only check, what specific permissions are tested, or what the response looks like such as a boolean or detailed report. The minimal wording leaves significant ambiguity for a tool that could affect agent decisions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no filler. It is appropriately sized for a zero-parameter health check tool, though it could include a bit more context without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description is minimally adequate. However, it lacks usage context, such as when to call get_connection_status or how to interpret 'database access permissions,' leaving some gaps for an agent deciding whether to invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the baseline is 4. The description doesn't add parameter details, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks Neo4j connection status and database access permissions, using a specific verb ('check') and resource. It is distinct from sibling tools like run_custom_query or write_neo4j_cypher, though it doesn't 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description only states what it does, not under what circumstances an agent should invoke it (e.g., before running queries) or when other tools are more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cypher_snippetC
Add a new Cypher snippet to the database.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | Yes | ||
| tags | No | ||
| since | No | ||
| syntax | Yes | ||
| example | No | ||
| description | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 only that the tool adds a snippet, but not behavioral details such as uniqueness constraints, required fields, failure modes, or idempotency. This is a significant gap for a create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. While it is under-specified, the conciseness itself is appropriate; the issue is lack of content, not verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to provide context on parameter meanings or edge cases. With 7 parameters and no schema descriptions, the tool is not adequately contextualized for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description provides no paramater semantics. Fields like 'since', 'tags', and 'example' have no explanation in either the schema or the description, leaving the agent to guess their meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add') and the resource ('a new Cypher snippet'), distinguishing it from sibling tools like update_cypher_snippet and delete_cypher_snippet. The verb+resource combination is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. It only states what it does, with no mention of prerequisites, exclusions, or why one would choose create over update.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_cypher_snippetC
Delete a Cypher snippet from the database.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It fails to mention whether deletion is permanent, if it can be undone, or if there are any side effects. The description adds no behavioral context beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence but is under-specified rather than efficiently concise. It essentially restates the tool name and provides no extra information to justify its brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation, the description lacks essential context such as irreversibility, error handling, or required permissions. Even with an output schema present, the description is inadequate for an agent to use the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single parameter 'id' with zero description coverage, and the tool description does not elaborate on its meaning or required format. The agent must infer that 'id' refers to a snippet identifier without any confirmation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and resource (Cypher snippet), which distinguishes it from sibling tools like create, get, update, and list. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use or when-not-to-use guidance is provided. There is no mention of prerequisites, alternatives, or consequences, so the agent cannot determine the appropriate context for invoking this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_action_templateA
Retrieve detailed steps for a specific action template by keyword.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword for the template (e.g., FIX, REFACTOR) | |
| version | No | Specific version to retrieve (if not specified, gets current version) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only says 'retrieve detailed steps,' which is a read operation, but it does not mention side effects, error behavior, version fallback semantics, or any permissions/rate limits. The description adds little beyond the tool's name and schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word earns its place, making it appropriately concise and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters and an output schema, so the description doesn't need to explain return values. However, the lack of annotations and absence of guidance about when to use this over related tools (e.g., list_action_templates) leaves gaps. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'keyword' and 'version' already described in the schema. The description's mention of 'by keyword' aligns with the schema but adds no new meaning. Baseline 3 is appropriate because the schema fully documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Retrieve detailed steps for a specific action template by keyword.' It identifies the verb (retrieve), the resource (detailed steps for a specific action template), and the method (by keyword). This unambiguously distinguishes it from sibling tools like list_action_templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a specific keyword and need detailed steps, but it does not explicitly state when to use this tool versus alternatives or provide any exclusions. The phrase 'by keyword' gives a prerequisite but no comparison to siblings like list_action_templates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_best_practicesC
Get the best practices guide for coding workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Specific best practice category |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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, yet it only states a basic retrieval action. It does not mention side effects, permissions, return format, or any other behavioral traits, leaving the agent without enough information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that communicates the core purpose without unnecessary words. It is appropriately sized and front-loaded, with clear structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although the tool is simple and an output schema exists, the description lacks essential usage context. It fails to mention the optional category parameter, when to use this tool versus similar siblings, or what the best practices guide specifically contains, making selection ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the single 'category' parameter, so the baseline is 3. The tool description does not add any extra meaning about the parameter, but the schema already provides sufficient detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a best practices guide for coding workflows, using a specific verb and resource. However, it does not explicitly distinguish this from similar siblings like get_guidance_hub, preventing a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool, no mention of alternatives, and no exclusions. It is a single purpose statement without contextual instructions for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cleanup_statusA
Get current cleanup and resource status for monitoring.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of disclosing behavioral traits. The description only says it gets status, implying a read-only operation, but it does not explicitly state safety (e.g., no side effects), authorization requirements, or what exactly 'cleanup and resource status' covers. This is a significant gap for a monitoring tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and resource. It contains no unnecessary words. Though very brief, it effectively communicates the core purpose without waste, earning a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and a simple purpose, the description is minimally adequate. However, without annotations and with no output details, it leaves ambiguity about what 'cleanup and resource status' actually includes and how the result is structured. The context is not fully complete, but the tool's simplicity and the existence of an output schema partially compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema imposes no burden. Per guidelines, a baseline of 4 is appropriate for no-parameter tools, as there are no parameter semantics to clarify. The description adds no parameter details, but none are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get current cleanup and resource status for monitoring.' It uses a specific verb ('Get') and resource ('cleanup and resource status'), making the purpose unambiguous. It is distinguishable from sibling tools like get_project or get_current_incarnation because it uniquely targets cleanup and resource status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for monitoring' implies the tool is used to observe cleanup and resource state, providing a clear context for when to use it. However, it does not explicitly mention alternatives or when NOT to use it. There is no guidance on how this tool relates to other get_* tools, so usage guidance is only partially provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_incarnationA
Get the currently active incarnation type.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral disclosure burden. It implies a read-only operation but provides no details about side effects, error conditions, or what happens if no incarnation is active. The simplicity of a getter is clear, but the description is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose. No wasted words or irrelevant details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters) and the presence of an output schema, the description is largely sufficient. It doesn't explain the concept of 'incarnation,' but that is likely domain knowledge. The description adequately covers the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which earns a baseline score of 4. The description adds no parameter-specific information, but none is needed since there are no inputs to clarify.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('currently active incarnation type'), clearly distinguishing it from sibling tools like list_incarnations and switch_incarnation. It communicates exactly what is returned without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as list_incarnations. The context signals show related siblings, but the description does not mention them or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cypher_snippetA
Get a specific Cypher snippet by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 'Get' signals a read operation, but it does not disclose behavior for missing IDs, permissions, or side effects. The output schema provides return structure, but behavioral details are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It immediately conveys the action, resource, and identifier.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description is minimally viable. It explains the basic operation but lacks contextual guidance on when to use it relative to siblings and edge-case behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 clarify the single 'id' parameter. It only says 'by ID', which maps directly to the parameter name without adding format, constraints, or context. This is minimal compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Get', the target 'specific Cypher snippet', and the identifier 'by ID'. It distinguishes from sibling tools like list_cypher_snippets and search_cypher_snippets by emphasizing a single, specific item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you already have the snippet ID, which is clear context. However, it does not explicitly exclude alternatives like search_cypher_snippets or mention when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cypher_tagsA
Get all tags used for Cypher snippets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It only says 'Get all tags...' without mentioning that this is a read-only operation, whether any authentication is required, how tags are aggregated, or what the response shape will be. The minimal wording adds no behavioral context beyond the tool name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 with no unnecessary padding. It is front-loaded and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema present), the description is largely sufficient. However, it lacks a brief note about the scope (e.g., tags across all snippets) or mention of related tools, but these are not critical for a simple read-only tag listing. The presence of an output schema reduces the need to explain return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so by the rubric the baseline is 4. The description correctly omits parameter details since there are none, and no additional semantic information is needed for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get all tags used for Cypher snippets' clearly states the action (get all) and the resource (tags for Cypher snippets), distinguishing it from sibling tools that deal with snippets themselves. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided regarding when to use this tool versus alternatives like search_cypher_snippets or list_cypher_snippets. The description only states what it does, leaving usage context entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_guidance_hubA
Get the AI Guidance Hub content, which serves as the central entry point for navigation.
The guidance hub provides the main entry point for AI assistants to understand
what capabilities are available and how to navigate the system.
If an incarnation is active, its specialized hub will be returned instead.
Returns:
MCP response containing the hub content
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral transparency. It discloses the notable behavior that an active incarnation will return its specialized hub instead, and states the return type as an MCP response. This goes beyond a simple read-only operation, though it does not cover potential errors or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the primary purpose. The second sentence reinforces the hub's role but is somewhat redundant with the first. The 'Returns' line is trivially redundant given the output schema, but overall the structure is clear and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema present), the description is complete. It explains the main purpose, the incarnation-specific override, and the return type. There are no missing elements that would prevent an agent from selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides full coverage (100%). The baseline score of 4 applies, and the description does not need to add parameter details. The mention of 'incarnation' behavior indirectly relates to context but does not conflict with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Get the AI Guidance Hub content' clearly identifying the verb and resource, and further positions it as 'the central entry point for navigation,' which distinguishes it from sibling tools like get_best_practices and get_current_incarnation. The special-case mention of incarnation-specific hubs adds unique functionality clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool by describing it as the 'main entry point for AI assistants to understand what capabilities are available,' suggesting it should be invoked for initial navigation. However, it does not explicitly mention alternative tools or provide exclusion criteria, leaving room for more explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_projectA
Get details about a specific project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | ID of the project to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states 'Get details,' which implies a read-only operation, but does not mention error cases (e.g., not found), authentication requirements, or any side effects. This is a minimal disclosure with notable gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately states the action and resource. It is front-loaded with the key information and contains zero superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description does not need to explain return values. With one parameter fully documented in the schema and a simple retrieval operation, the description is largely complete. It could add edge-case handling, but for such a straightforward tool it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: the only parameter, project_id, has a clear description in the schema ('ID of the project to retrieve'). The tool description adds no additional parameter meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get details about a specific project' uses a specific verb ('get') and resource ('project'), clearly indicating a single-item retrieval. It naturally distinguishes itself from sibling tool list_projects by emphasizing 'specific' rather than a collection, even without naming alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context: use this tool when you need a single project's details, especially compared to list_projects. However, it does not explicitly state when to use it over alternatives or mention any exclusions, leaving the agent to infer the appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_proposalA
Get a specific tool proposal by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the tool proposal to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only says 'Get', which implies a read operation but does not state whether it is read-only, what happens if the ID does not exist, or any permission requirements. This lacks transparency for a tool that could fail or have side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the action and resource. Every word earns its place, and there is no unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description is minimally complete. However, it lacks guidance on when to use this versus list_tool_proposals or how to handle potential errors. It does not fully contextualize the tool within its sibling group.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the 'id' parameter fully described. The description adds no extra meaning beyond the schema, only repeating that it retrieves by ID. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving a specific tool proposal by its ID. The verb 'Get' and resource 'tool proposal' are specific and unambiguous. It distinguishes itself from list_tool_proposals by specifying 'by ID', so the agent can tell this is for single-item retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a specific proposal ID, contrasting with listing operations. However, it does not explicitly mention alternatives or when not to use this tool. The context is clear but lacks explicit exclusion or comparison with sibling tools like list_tool_proposals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_requestA
Get a specific tool request by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the tool request to retrieve |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 of behavioral disclosure. It only says 'Get a specific tool request by ID' without mentioning read-only behavior, error handling (e.g., 404 if not found), permission requirements, or what fields are returned. The verb 'Get' implies a safe read, but the description adds no substantive behavioral context beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that immediately conveys the tool's purpose. There is no wasted wording or redundant detail, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter get-by-ID tool, the description is minimally adequate: the parameter is fully documented, and an output schema exists to define the return value. However, it lacks behavioral transparency and explicit usage guidance, which leaves minor gaps in the complete context an agent would need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as the single 'id' parameter is described as 'ID of the tool request to retrieve.' The tool description's 'by ID' adds no additional semantic value beyond the schema, so it earns the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('tool request'), and the scope ('by ID'). This distinguishes it immediately from sibling tools like list_tool_requests (which lists all) and get_tool_proposal (a different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by ID' implies the tool should be used when a specific request ID is known, but no explicit exclusions or alternatives are mentioned. It does not name sibling tools like list_tool_requests, so guidance is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_workflow_historyB
View history of workflow executions, optionally filtered.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of workflow executions to return | |
| project_id | No | Filter by project ID | |
| action_keyword | No | Filter by action template keyword |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It only says 'View history' which implies read-only, but does not explicitly state side effects, result ordering, or any other behavioral traits. This is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant words. It is appropriately front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is adequate for a simple read tool, especially with full parameter coverage and an output schema. However, it lacks any usage context or caveats (e.g., ordering, pagination), which could be important for correct invocation. A 3 reflects this balance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides detailed descriptions for all three parameters (limit, project_id, action_keyword) with 100% coverage. The description adds no additional meaning beyond the generic 'optionally filtered', so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('View') and the resource ('history of workflow executions'), and mentions optional filtering. It is distinct from sibling tools like log_workflow_execution, which is the write counterpart.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided about when to use this tool versus alternatives. The usage is implied by the verb 'View' but there are no exclusions or references to other tools, leaving the agent without clear decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_action_templatesA
List all available action templates.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | No | Filter by specific keyword | |
| current_only | No | Only return current templates |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the disclosure burden. It only states 'List all available action templates' without mentioning the return format, the default current_only=true filter (which ironically may conflict with 'all'), or any prerequisites or side effects. This leaves significant behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single five-word sentence, perfectly front-loaded and free of any filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with an output schema and fully documented parameters, the description is mostly sufficient. It lacks mention of filtering behavior and differentiation from get_action_template, but the schema and tool name compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides complete descriptions and defaults for both keyword and current_only parameters (100% coverage), so the description adds no extra value. Baseline 3 applies because the schema fully handles parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource 'action templates', clearly distinguishing it from the sibling get_action_template by indicating it returns all templates rather than a single one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the verb 'List' but the description provides no explicit guidance on when to use this tool versus alternatives like get_action_template. No exclusions or context for selection are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cypher_snippetsC
List all available Cypher snippets with optional filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | ||
| limit | No | ||
| offset | No | ||
| since_version | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 not mention that this is a read-only operation, nor does it describe pagination, sorting, or the response format. The phrase 'optional filtering' hints at behavior but lacks specifics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that conveys the core purpose. However, it is under-specified, bordering on terse, as it omits important details such as the available filters. It is not excessively wordy, but it sacrifices clarity for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters, no schema descriptions, and no annotations, the description is insufficiently complete. It fails to explain the filtering options, pagination behavior, or the nature of the returned snippets. The presence of an output schema does not cover usage semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 4 parameters with 0% description coverage, so the description must compensate by explaining the filtering criteria and pagination. However, it only says 'optional filtering' without naming tag, since_version, limit, or offset. No additional meaning is provided beyond the schema's defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and resource (all available Cypher snippets) with optional filtering. It is specific enough to understand the basic purpose, though it does not explicitly distinguish from sibling 'search_cypher_snippets'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as search_cypher_snippets or get_cypher_snippet. It does not mention context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_incarnationsB
List all available incarnations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full responsibility for behavioral disclosure. It implies a read-only operation but does not explicitly state this, nor does it mention any authentication requirements, side effects, or return format details. The word 'all' provides some scope transparency but not enough to understand tool behavior beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that effectively states the tool's purpose without unnecessary words. It is under-specified relative to more complex tools but is appropriately sized for a simple list operation. It is not overly verbose, but it lacks additional context that could improve usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (no parameters) and has an output schema, the description's brevity is partly justified. However, it does not mention what the output represents, whether it is ordered, or how it relates to sibling tools like get_current_incarnation or switch_incarnation. It is minimally complete but leaves the agent guessing about practical usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, which yields a baseline score of 4. Since there are no parameters to explain, the description does not need to add parameter semantics, and the schema confirms an empty parameter object. The description’s simplicity is appropriate here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List all available incarnations' uses a clear verb (list) and resource (incarnations), indicating a straightforward read operation. It is distinguishable from siblings like get_current_incarnation and switch_incarnation, which clearly serve different purposes. However, it lacks details on what 'available' means or how this listing fits into the broader workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 listing all incarnations is appropriate, nor any exclusions or references to sibling tools. The description simply states the action without contextual advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsB
List all available projects.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of projects to return | |
| language | No | Filter by programming language |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It says 'all available projects,' but the schema includes a 'limit' parameter with a default of 10, implying the tool does not actually return all projects by default. It also fails to mention default behavior, pagination, or filtering semantics, which is a notable 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence with no filler or redundancy. It is front-loaded and communicates the core action immediately, earning a high conciseness score even though it lacks depth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, the description is minimally viable but incomplete. It omits critical context such as the default limit, language filtering, pagination, and how it relates to sibling tools. The conflict between 'all' and the limit parameter further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, as both parameters ('limit' and 'language') have descriptions in the input schema. The tool description adds no additional parameter insight, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List all available projects.' It clearly indicates this is a listing operation, distinct from the singular 'get_project' sibling tool. However, it does not explicitly state how it differs from other list tools or mention the scope/filtering options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used when you need to view all projects, but it provides no explicit guidance on when to use it versus alternatives like get_project or other list tools. It would benefit from noting that get_project is for a single project and that filtering/pagination parameters are available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_proposalsA
List all tool proposals with optional filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of proposals to return | |
| status | No | Filter by status (Proposed, Approved, Implemented, Rejected) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 states the basic operation ('List') but does not disclose whether the operation is read-only, any permissions needed, pagination behavior, or ordering. The word 'List' implies non-mutation, but this is not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that conveys the essential function and scope without any wasted words. It is front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple list tool with only two optional parameters and an output schema present. The description is sufficient for an agent to understand the primary use case and invoke it correctly. Minor gaps like whether it scopes to a project/incarnation are not critical given the simplicity and existing schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (limit, status) are already well-documented. The description's phrase 'optional filtering' adds minimal context by indicating that status is the filter, but it does not add any detail beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('tool proposals') and clarifies scope with 'all' and 'optional filtering'. This clearly distinguishes it from siblings like get_tool_proposal (single proposal) and propose_tool (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'List all tool proposals' implies the tool is for retrieving a collection of proposals, but it does not explicitly name alternatives or exclusions (e.g., 'use get_tool_proposal for a single proposal'). Usage guidance is present but only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tool_requestsB
List all tool requests with optional filtering.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of requests to return | |
| status | No | Filter by status (Submitted, In Review, Implemented, Rejected) | |
| priority | No | Filter by priority (LOW, MEDIUM, HIGH) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 transparency. It merely says 'List all tool requests' which implies a read-only operation, but it doesn't disclose any additional behavioral details like pagination, sorting, or potential side effects. The description adds little beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words, front-loading the key information. It is efficient and easy to understand, earning a high score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema and fully described parameters, the description is minimally adequate. However, it lacks any elaboration on ordering, default behavior, or access constraints, which would be helpful given the absence of annotations. It completes the task but doesn't exceed expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear descriptions for limit, status, and priority. The description only mentions 'optional filtering' without elaborating on the parameters, so it adds no extra meaning beyond what the schema already provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists tool requests with optional filtering, using a specific verb and resource. It doesn't explicitly differentiate from sibling tools like list_tool_proposals or get_tool_request, but the mention of 'all' and 'optional filtering' gives it reasonable specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as get_tool_request for a specific request or list_tool_proposals for proposals. It simply states what it does without any exclusions or contextual hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_workflow_executionA
Record a successful workflow execution (ONLY after passing tests).
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Additional notes about the workflow execution | |
| summary | Yes | Summary of what was done | |
| project_id | Yes | ID of the project | |
| tests_passed | No | Whether all required tests passed | |
| files_changed | Yes | List of files that were modified | |
| action_keyword | Yes | Keyword of the action template used (e.g., FIX, REFACTOR) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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 usage condition (after tests) but does not detail side effects, persistence, auth requirements, or whether it can be called multiple times. It is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the verb and object, and includes the key condition. Every word contributes, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple logging tool with full schema coverage and an output schema, the description sufficiently covers the core purpose and usage condition. It could mention repeated calls or idempotency, but the current level is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every parameter documented. The description adds no parameter-level details beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Record' and object 'workflow execution', clearly stating the tool's action. The condition 'ONLY after passing tests' adds precision and distinguishes it from read-only siblings like get_workflow_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit condition for use: 'ONLY after passing tests'. This clearly implies when it should be used, though it does not mention alternative tools or situations where it should not be used beyond that condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
propose_toolB
Propose a new tool for the NeoCoder system.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Proposed tool name | |
| rationale | Yes | Rationale for why this tool would be valuable | |
| parameters | Yes | List of parameter definitions for the tool | |
| description | Yes | Description of the tool's functionality | |
| example_usage | No | Optional example of how the tool would be used | |
| implementation_notes | No | Optional technical notes for implementation |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as whether the proposal is persisted, reviewed, or requires permissions. The description is too terse to inform the agent about side effects or outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is appropriately concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and the schema covers parameters, but the description lacks context about expected usage flows, prerequisites, or what happens after proposing. An output schema exists but is not visible here; still, the description could be more informative for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters. The description adds no additional semantic meaning beyond the schema, which meets the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Propose') and resource ('new tool for the NeoCoder system'), making the primary purpose evident. However, it does not differentiate from sibling tools like 'suggest_tool' or 'request_tool', so it lacks explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 like 'suggest_tool' or 'request_tool'. There is no mention of contexts, exclusions, or alternatives, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_toolC
Request a new tool feature for the NeoCoder system.
| Name | Required | Description | Default |
|---|---|---|---|
| priority | No | Priority of the request (LOW, MEDIUM, HIGH) | MEDIUM |
| use_case | Yes | How you would use this tool | |
| description | Yes | Description of the desired tool functionality | |
| requested_by | No | Name of the person requesting the tool |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only mentions 'Request' without detailing side effects, whether it persists data, required permissions, or what the response looks like. This is minimal but not entirely absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and front-loaded, but it is under-specified. It lacks essential context, making it more under-specified than appropriately concise. It earns a middle score for brevity without sacrificing the little meaning it does convey.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters and an output schema, the description should at least clarify the purpose and any relevant context, but it does not. It fails to explain when to use it or what the request entails, leaving significant gaps in understanding for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all four parameters. The description itself adds no parameter-specific meaning, so it meets the baseline of 3 but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Request' and the resource 'new tool feature' for the NeoCoder system. It conveys the core purpose without ambiguity, though it does not explicitly differentiate from sibling tools like 'propose_tool' or 'suggest_tool'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 simply states what it does, without any context on prerequisites, typical scenarios, or exclusions. This leaves the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_custom_queryB
Run a custom Cypher query for advanced operations.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Custom Cypher query to execute | |
| params | No | Query parameters |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions running a custom query but does not disclose that arbitrary Cypher can mutate data, delete records, or have side effects, nor does it mention permission requirements. This is a significant gap for a potentially destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the action. However, it is so minimal that it lacks richness. Still, it is appropriately sized for a simple tool, so it earns a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's ability to execute arbitrary Cypher, the description is incomplete. It lacks warnings about side effects, guidance on parameter use, and when to invoke this tool versus safer alternatives. Even though the schema covers parameters and output, the contextual risk profile is not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents both parameters (query and params), so the baseline is 3. The description adds no additional meaning beyond the schema, such as how params are used or examples. Therefore, the score remains at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a custom Cypher query, using a specific verb and resource. It distinguishes itself as a general-purpose query runner for advanced operations, but does not explicitly contrast with siblings like write_neo4j_cypher.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for advanced operations' implies usage for scenarios beyond standard tool capabilities, but it offers no explicit guidance on when to choose this over alternatives such as write_neo4j_cypher or standard CRUD tools. There are no exclusions or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cypher_snippetsC
Search for Cypher snippets by keyword, tag, or pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query_text | Yes | ||
| search_type | No | text |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the full burden and offers very little. It discloses no behavioral traits such as how search_type changes the search (text, tag, pattern), whether matching is exact or fuzzy, case sensitivity, or how limit affects results. The description essentially restates the tool's name and adds no insight into its inner workings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler words. It front-loads the action and resource. While it's brief, it's structurally efficient for the limited content it provides, earning a solid score for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a simple schema and an output schema present, the description still falls short. It does not explain search semantics, how to choose between text/tag/pattern, or the behavior of limit. The lack of usage guidance and parameter explanation makes the tool incomplete for an agent to invoke correctly in various scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 mentions 'keyword, tag, or pattern' which loosely maps to search_type but doesn't explain the exact meaning of query_text, limit, or how search_type selects the search mode. Limit is entirely ignored. This minimal mention does not sufficiently clarify the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search' and the resource 'Cypher snippets' with specific criteria ('by keyword, tag, or pattern'). This distinguishes it from sibling tools like list_cypher_snippets (which probably lists all) and get_cypher_snippet (which retrieves one), though it doesn't explicitly name these alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It doesn't mention that this should be used over list_cypher_snippets for filtering or when a user needs to find snippets by specific search terms. The description simply states what it does, not the context of use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_toolB
Suggest the appropriate tool based on a task description.
| Name | Required | Description | Default |
|---|---|---|---|
| task_description | Yes | Description of the task you're trying to accomplish |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only restates the basic behavior without disclosing any additional behavioral traits, such as whether the suggestion is based on heuristics, whether multiple suggestions are returned, or any side effects. Since no annotations are provided, the description carries the full burden and falls short.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that gets straight to the point. It is concise and well-structured with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description covers the essential purpose and input. However, it lacks usage guidance and makes no attempt to address when to use the tool, which is a notable gap for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter (task_description) with a clear description, and the tool description aligns with it. There is no additional semantic information beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: suggesting an appropriate tool given a task description. It uses a specific verb and resource, making the core purpose unambiguous. However, it does not explicitly differentiate from sibling tools like propose_tool or request_tool, though the name provides some distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention any prerequisites, exclusions, or cases where another tool would be more appropriate. It simply states the function without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
switch_incarnationC
Switch the server to a different incarnation.
| Name | Required | Description | Default |
|---|---|---|---|
| incarnation_type | Yes | Type of incarnation to switch to |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without revealing potential side effects, reversibility, authentication requirements, or whether the switch disrupts ongoing operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no redundant wording. It is front-loaded and appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the output schema and simple parameter set, the description lacks essential context about the consequences of switching, when it should be invoked, and how it relates to the get/list incarnation tools. The description is too minimal for a state-changing operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, so the baseline is 3. The description does not add additional meaning to 'incarnation_type', but the schema already provides a clear title and description, so no deduction is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Switch') on a specific resource ('server') to a different 'incarnation', which distinguishes it from sibling read-only tools like get_current_incarnation and list_incarnations. However, it does not elaborate on what an incarnation is or the implications of switching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives such as get_current_incarnation or list_incarnations. There is no mention of prerequisites, side effects, or when not to use it, leaving the agent to infer usage solely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_cypher_snippetC
Update an existing Cypher snippet.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| name | No | ||
| tags | No | ||
| since | No | ||
| syntax | No | ||
| example | No | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only implies modification ('Update') and existence ('existing'), but does not disclose partial vs full update behavior, error handling, idempotency, or permission requirements. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is appropriately concise, though it omits crucial detail. The efficiency is good, but the structure is minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 7 parameters, an output schema, and no annotations, the description is woefully incomplete. It does not explain the update semantics, whether the snippet must exist, or what fields are updatable. The presence of an output schema reduces the need to describe return values, but the description still fails to provide necessary behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 7 parameters with 0% description coverage, and the tool description provides no parameter context. It does not mention which fields can be updated, that 'id' is required, or any defaults. The description adds no value beyond the schema's parameter names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Update') and resource ('an existing Cypher snippet'), which distinguishes it from sibling tools like create, delete, or list. It is concise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any exclusions. It does not mention that this should be used only for existing snippets or that other tools should be used for creation or deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_neo4j_cypherB
Execute a WRITE Cypher query (for creating/updating data).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Cypher query to execute (CREATE, DELETE, MERGE, etc.) | |
| params | No | Query parameters |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool performs writes but omits that it can also delete data (as shown in the schema) and does not mention side effects, irreversibility, or transaction behavior. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose efficiently. The parenthetical 'for creating/updating data' is slightly misleading because it excludes DELETE, but overall the description is appropriately concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple schema and an output schema, so return values need no explanation. However, the description lacks critical context for a write tool: it does not mention that DELETE is allowed, nor does it address side effects, prerequisites, or when to avoid this tool. The description is insufficient for an agent to fully understand the tool's impact.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with meaningful descriptions for both query and params. The description adds no parameter-specific detail beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes a WRITE Cypher query for creating/updating data, using a specific verb and resource. The uppercase 'WRITE' distinguishes it from read-only query tools, and the tool name reinforces the intent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool should be used for write operations (creating/updating data) but does not explicitly say when not to use it or mention alternatives like run_custom_query for read queries. The guidance is implicit rather than explicit.
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. Dates show when Glama detected each change.
30 tool updates
v1.0.1- First observed
add_template_feedback - First observed
check_connection - First observed
create_cypher_snippet - First observed
delete_cypher_snippet - First observed
get_action_template - First observed
get_best_practices - First observed
get_cleanup_status - First observed
get_current_incarnation - First observed
get_cypher_snippet - First observed
get_cypher_tags - First observed
get_guidance_hub - First observed
get_project - First observed
get_tool_proposal - First observed
get_tool_request - First observed
get_workflow_history - First observed
list_action_templates - First observed
list_cypher_snippets - First observed
list_incarnations - First observed
list_projects - First observed
list_tool_proposals - First observed
list_tool_requests - First observed
log_workflow_execution - First observed
propose_tool - First observed
request_tool - First observed
run_custom_query - First observed
search_cypher_snippets - First observed
suggest_tool - First observed
switch_incarnation - First observed
update_cypher_snippet - First observed
write_neo4j_cypher
TDQS
Most tools have distinct purposes, but several pairs overlap: propose_tool/request_tool have nearly identical descriptions, and run_custom_query/write_neo4j_cypher both execute Cypher queries with unclear boundaries. get_guidance_hub and get_best_practices also serve similar informational roles.
All tool names follow a consistent snake_case verb_noun pattern, with predictable use of get, list, create, update, delete, and switch. This consistency makes the toolset easy to navigate.
With 30 tools, the server exceeds the 25-tool threshold and feels heavy for a single server. While the breadth is ambitious, many tools could be consolidated (e.g., separate proposal/request workflows) to reduce cognitive load.
The domain is broad but incompletely covered. Snippets have full CRUD, but action templates lack create/update/delete, projects are read-only, and tool proposals/requests have no update/delete operations. These gaps create dead ends in workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- ContextaOAuthcc.contexta
Persistent memory and knowledge graph for AI assistants — keyword + vector + graph search.
Persistent memory and knowledge graphs for AI agents. Hybrid search, context checkpoints, and more.
Search your knowledge bases from any AI assistant using hybrid RAG.
Shared semantic graph for AI reviews, classification and structured memory across AI assistants.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides AI assistants with enhanced reasoning capabilities through structured thinking, persistent knowledge graph memory, and intelligent tool orchestration for complex problem-solving.202561MIT
- AlicenseNot gradedqualityDmaintenanceProvides AI assistants with persistent graph-based memory capabilities using Neo4j, enabling semantic search, relationship tracking, and knowledge organization across multiple project contexts.1,58431MIT
- AlicenseAqualityCmaintenanceEnables AI agents to store, retrieve, and connect information in a Neo4j graph database as persistent memory, with semantic relationships, natural language search, and temporal tracking across conversations.9069MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Neo4j graph databases through natural language, supporting Cypher queries, schema management, data manipulation, and graph algorithms.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/angrysky56/NeoCoder-neo4j-ai-workflow'
If you have feedback or need assistance with the MCP directory API, please join our Discord server