data: {"jsonrpc": "2.0", "method": "server/info", "params": {"name": "juniper-axis", "version": "1.0.0", "capabilities": {"tools": true}}}

data: {"jsonrpc": "2.0", "method": "tools/list", "params": {"tools": [{"name": "read_graph", "description": "Read the entire knowledge graph with all entities and relationships. Returns complete graph including all stored entities and their relationships.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "create_entities", "description": "Create multiple new entities in the knowledge graph with their associated observations.", "inputSchema": {"type": "object", "properties": {"entities": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string", "description": "Entity name"}, "type": {"type": "string", "description": "Entity type (person, company, etc.)"}, "observations": {"type": "array", "items": {"type": "string"}, "description": "List of observations/facts about the entity"}}, "required": ["name", "type"]}, "description": "List of entities to create"}}, "required": ["entities"]}}, {"name": "create_relations", "description": "Create relationships between existing entities in the knowledge graph.", "inputSchema": {"type": "object", "properties": {"relations": {"type": "array", "items": {"type": "object", "properties": {"source": {"type": "string", "description": "Source entity name"}, "target": {"type": "string", "description": "Target entity name"}, "relationType": {"type": "string", "description": "Relationship type (e.g., WORKS_AT, LIVES_IN)"}}, "required": ["source", "target", "relationType"]}, "description": "List of relations to create"}}, "required": ["relations"]}}, {"name": "add_observations", "description": "Add new observations/facts to existing entities.", "inputSchema": {"type": "object", "properties": {"observations": {"type": "array", "items": {"type": "object", "properties": {"entityName": {"type": "string", "description": "Name of existing entity"}, "observations": {"type": "array", "items": {"type": "string"}, "description": "New observations to add"}}, "required": ["entityName", "observations"]}, "description": "List of observation additions"}}, "required": ["observations"]}}, {"name": "delete_entities", "description": "Delete entities and all their associated relationships from the knowledge graph.", "inputSchema": {"type": "object", "properties": {"entityNames": {"type": "array", "items": {"type": "string"}, "description": "List of entity names to delete"}}, "required": ["entityNames"]}}, {"name": "delete_observations", "description": "Delete specific observations from existing entities.", "inputSchema": {"type": "object", "properties": {"deletions": {"type": "array", "items": {"type": "object", "properties": {"entityName": {"type": "string"}, "observations": {"type": "array", "items": {"type": "string"}}}, "required": ["entityName", "observations"]}, "description": "List of observations to delete from entities"}}, "required": ["deletions"]}}, {"name": "delete_relations", "description": "Delete specific relationships between entities.", "inputSchema": {"type": "object", "properties": {"relations": {"type": "array", "items": {"type": "object", "properties": {"source": {"type": "string"}, "target": {"type": "string"}, "relationType": {"type": "string"}}, "required": ["source", "target", "relationType"]}, "description": "List of relations to delete"}}, "required": ["relations"]}}, {"name": "search_memories", "description": "Search for entities in the knowledge graph using fulltext search across names, types, and observations.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Fulltext search query"}}, "required": ["query"]}}, {"name": "find_memories_by_name", "description": "Find specific entities by their exact names.", "inputSchema": {"type": "object", "properties": {"names": {"type": "array", "items": {"type": "string"}, "description": "List of exact entity names to find"}}, "required": ["names"]}}, {"name": "get_neo4j_schema", "description": "List all nodes, their attributes and their relationships in the Neo4j database. Requires APOC plugin.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "read_neo4j_cypher", "description": "Execute a read-only Cypher query against the Neo4j database.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Cypher query (must be read-only)"}, "params": {"type": "object", "description": "Query parameters", "default": {}}}, "required": ["query"]}}, {"name": "write_neo4j_cypher", "description": "Execute a write Cypher query against the Neo4j database (CREATE, MERGE, SET, DELETE).", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Cypher write query"}, "params": {"type": "object", "description": "Query parameters", "default": {}}}, "required": ["query"]}}, {"name": "list_aura_instances", "description": "List all Neo4j Aura database instances.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "get_aura_instance", "description": "Get details of a specific Aura instance.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}}, "required": ["instance_id"]}}, {"name": "create_aura_instance", "description": "Create a new Neo4j Aura database instance.", "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "Instance name"}, "region": {"type": "string", "description": "Cloud region"}, "type": {"type": "string", "description": "Instance type (free, professional, enterprise)"}}, "required": ["name"]}}, {"name": "delete_aura_instance", "description": "Delete an Aura database instance.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}}, "required": ["instance_id"]}}, {"name": "pause_aura_instance", "description": "Pause an Aura database instance.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}}, "required": ["instance_id"]}}, {"name": "resume_aura_instance", "description": "Resume a paused Aura database instance.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}}, "required": ["instance_id"]}}, {"name": "get_aura_instance_snapshots", "description": "List snapshots for an Aura instance.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}}, "required": ["instance_id"]}}, {"name": "create_aura_snapshot", "description": "Create a snapshot of an Aura instance.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}}, "required": ["instance_id"]}}, {"name": "restore_aura_snapshot", "description": "Restore an Aura instance from a snapshot.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}, "snapshot_id": {"type": "string", "description": "Snapshot ID"}}, "required": ["instance_id", "snapshot_id"]}}, {"name": "update_aura_instance", "description": "Update settings for an Aura instance.", "inputSchema": {"type": "object", "properties": {"instance_id": {"type": "string", "description": "Aura instance ID"}, "name": {"type": "string", "description": "New instance name"}, "memory": {"type": "string", "description": "Memory size"}}, "required": ["instance_id"]}}, {"name": "create_data_model", "description": "Create a new graph data model with nodes and relationships.", "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "Model name"}, "description": {"type": "string", "description": "Model description"}, "nodes": {"type": "array", "description": "Node definitions"}, "relationships": {"type": "array", "description": "Relationship definitions"}}, "required": ["name"]}}, {"name": "validate_data_model", "description": "Validate a data model for correctness and best practices.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model to validate"}}, "required": ["model"]}}, {"name": "visualize_data_model", "description": "Generate a Mermaid diagram visualization of a data model.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model to visualize"}}, "required": ["model"]}}, {"name": "generate_cypher_from_model", "description": "Generate Cypher schema creation statements from a data model.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model"}}, "required": ["model"]}}, {"name": "load_model_from_arrows", "description": "Load a data model from Arrows.app JSON format.", "inputSchema": {"type": "object", "properties": {"arrows_json": {"type": "object", "description": "Arrows.app JSON"}}, "required": ["arrows_json"]}}, {"name": "export_model_to_arrows", "description": "Export a data model to Arrows.app JSON format.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model to export"}}, "required": ["model"]}}, {"name": "list_data_models", "description": "List all saved data models.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "get_data_model", "description": "Get a specific data model by name.", "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "Model name"}}, "required": ["name"]}}, {"name": "update_data_model", "description": "Update an existing data model.", "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "Model name"}, "model": {"type": "object", "description": "Updated model data"}}, "required": ["name", "model"]}}, {"name": "delete_data_model", "description": "Delete a data model.", "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "Model name"}}, "required": ["name"]}}, {"name": "compare_data_models", "description": "Compare two data models and show differences.", "inputSchema": {"type": "object", "properties": {"model1": {"type": "object", "description": "First model"}, "model2": {"type": "object", "description": "Second model"}}, "required": ["model1", "model2"]}}, {"name": "generate_constraints", "description": "Generate constraint creation statements for a data model.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model"}}, "required": ["model"]}}, {"name": "generate_indexes", "description": "Generate index creation statements for a data model.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model"}}, "required": ["model"]}}, {"name": "suggest_model_improvements", "description": "Suggest improvements for a data model based on best practices.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model to analyze"}}, "required": ["model"]}}, {"name": "generate_sample_data", "description": "Generate sample data based on a data model.", "inputSchema": {"type": "object", "properties": {"model": {"type": "object", "description": "Data model"}, "count": {"type": "integer", "description": "Number of sample records", "default": 10}}, "required": ["model"]}}, {"name": "gds_pagerank", "description": "Run PageRank centrality algorithm to find important nodes.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string", "description": "Node label to analyze"}, "relationship_type": {"type": "string", "description": "Relationship type"}, "dampingFactor": {"type": "number", "default": 0.85}, "maxIterations": {"type": "integer", "default": 20}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_betweenness_centrality", "description": "Run Betweenness Centrality to find bridge nodes.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_closeness_centrality", "description": "Run Closeness Centrality to find well-connected nodes.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_degree_centrality", "description": "Run Degree Centrality to find nodes with most connections.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_eigenvector_centrality", "description": "Run Eigenvector Centrality to find influential nodes.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_louvain", "description": "Run Louvain community detection algorithm.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_label_propagation", "description": "Run Label Propagation community detection.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_weakly_connected_components", "description": "Find weakly connected components in the graph.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_strongly_connected_components", "description": "Find strongly connected components in a directed graph.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_triangle_count", "description": "Count triangles for each node in the graph.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_local_clustering_coefficient", "description": "Calculate local clustering coefficient for nodes.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_shortest_path", "description": "Find the shortest path between two nodes.", "inputSchema": {"type": "object", "properties": {"source_node": {"type": "string", "description": "Source node identifier"}, "target_node": {"type": "string", "description": "Target node identifier"}, "relationship_type": {"type": "string"}}, "required": ["source_node", "target_node"]}}, {"name": "gds_all_shortest_paths", "description": "Find all shortest paths from a source node.", "inputSchema": {"type": "object", "properties": {"source_node": {"type": "string"}, "relationship_type": {"type": "string"}}, "required": ["source_node"]}}, {"name": "gds_dijkstra", "description": "Run Dijkstra's algorithm for weighted shortest path.", "inputSchema": {"type": "object", "properties": {"source_node": {"type": "string"}, "target_node": {"type": "string"}, "relationship_type": {"type": "string"}, "weight_property": {"type": "string", "description": "Property to use as weight"}}, "required": ["source_node", "target_node"]}}, {"name": "gds_a_star", "description": "Run A* pathfinding algorithm.", "inputSchema": {"type": "object", "properties": {"source_node": {"type": "string"}, "target_node": {"type": "string"}, "latitude_property": {"type": "string"}, "longitude_property": {"type": "string"}}, "required": ["source_node", "target_node"]}}, {"name": "gds_bfs", "description": "Run Breadth-First Search traversal.", "inputSchema": {"type": "object", "properties": {"source_node": {"type": "string"}, "relationship_type": {"type": "string"}, "max_depth": {"type": "integer", "default": 10}}, "required": ["source_node"]}}, {"name": "gds_dfs", "description": "Run Depth-First Search traversal.", "inputSchema": {"type": "object", "properties": {"source_node": {"type": "string"}, "relationship_type": {"type": "string"}, "max_depth": {"type": "integer", "default": 10}}, "required": ["source_node"]}}, {"name": "gds_random_walk", "description": "Perform random walk from a node.", "inputSchema": {"type": "object", "properties": {"source_node": {"type": "string"}, "walk_length": {"type": "integer", "default": 10}, "walks_per_node": {"type": "integer", "default": 1}}, "required": ["source_node"]}}, {"name": "gds_node_similarity", "description": "Calculate similarity between nodes based on shared neighbors.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "relationship_type": {"type": "string"}, "topK": {"type": "integer", "default": 10}}, "required": ["node_label", "relationship_type"]}}, {"name": "gds_knn", "description": "Find K-Nearest Neighbors for nodes.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "node_properties": {"type": "array", "items": {"type": "string"}}, "topK": {"type": "integer", "default": 10}}, "required": ["node_label", "node_properties"]}}, {"name": "gds_cosine_similarity", "description": "Calculate cosine similarity between node vectors.", "inputSchema": {"type": "object", "properties": {"node_label": {"type": "string"}, "vector_property": {"type": "string", "description": "Property containing vector"}}, "required": ["node_label", "vector_property"]}}, {"name": "gds_create_graph_projection", "description": "Create an in-memory graph projection for GDS algorithms.", "inputSchema": {"type": "object", "properties": {"graph_name": {"type": "string"}, "node_projection": {"type": "object"}, "relationship_projection": {"type": "object"}}, "required": ["graph_name", "node_projection", "relationship_projection"]}}, {"name": "gds_drop_graph", "description": "Drop an in-memory graph projection.", "inputSchema": {"type": "object", "properties": {"graph_name": {"type": "string"}}, "required": ["graph_name"]}}, {"name": "gds_list_graphs", "description": "List all in-memory graph projections.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "save_memory", "description": "Save a new memory with project association and importance.", "inputSchema": {"type": "object", "properties": {"content": {"type": "string", "description": "Memory content"}, "memory_type": {"type": "string", "default": "general", "description": "Type: general, decision, learning, reference"}, "tags": {"type": "array", "items": {"type": "string"}, "description": "Tags for categorization"}, "project_name": {"type": "string", "description": "Associated project"}, "importance": {"type": "integer", "minimum": 1, "maximum": 10, "default": 5, "description": "Importance level 1-10"}}, "required": ["content"]}}, {"name": "search_juniper_memories", "description": "Search Juniper memories with filters.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Search query"}, "memory_type": {"type": "string"}, "project_name": {"type": "string"}, "tags": {"type": "array", "items": {"type": "string"}}, "limit": {"type": "integer", "default": 10}}, "required": []}}, {"name": "get_project_context", "description": "Get complete context for a project including all memories.", "inputSchema": {"type": "object", "properties": {"project_name": {"type": "string", "description": "Project name"}}, "required": ["project_name"]}}, {"name": "get_recent_memories", "description": "Get most recent memories optionally filtered by project.", "inputSchema": {"type": "object", "properties": {"limit": {"type": "integer", "default": 10}, "project_name": {"type": "string"}}, "required": []}}, {"name": "list_projects", "description": "List all projects with memory counts.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "update_memory", "description": "Update an existing memory.", "inputSchema": {"type": "object", "properties": {"memory_id": {"type": "string", "description": "Memory ID to update"}, "content": {"type": "string"}, "importance": {"type": "integer"}, "tags": {"type": "array", "items": {"type": "string"}}}, "required": ["memory_id"]}}, {"name": "create_juniper_entity", "description": "Create a Juniper entity for linking memories.", "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "Entity name"}, "entity_type": {"type": "string", "description": "Entity type"}, "properties": {"type": "object", "description": "Additional properties"}}, "required": ["name", "entity_type"]}}, {"name": "link_memory_to_entity", "description": "Link a memory to an entity.", "inputSchema": {"type": "object", "properties": {"memory_id": {"type": "string"}, "entity_name": {"type": "string"}}, "required": ["memory_id", "entity_name"]}}, {"name": "pause_aura_database", "description": "Pause the Neo4j Aura database instance to save costs. Use when ending a session or when database is not needed. Stops compute charges while keeping data intact.", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "resume_aura_database", "description": "Resume the Neo4j Aura database instance. Use when starting a new session after the database was paused. Will wait for the instance to be ready.", "inputSchema": {"type": "object", "properties": {"wait": {"type": "boolean", "default": true, "description": "Wait for instance to be running before returning"}, "timeout": {"type": "integer", "default": 120, "description": "Maximum seconds to wait for instance to be ready"}}, "required": []}}, {"name": "get_aura_database_status", "description": "Get the current status of the Neo4j Aura database instance (running, paused, resuming, pausing).", "inputSchema": {"type": "object", "properties": {}, "required": []}}, {"name": "vector_search", "description": "Perform semantic vector search on memories. Requires a pre-computed query embedding. Returns similar memories ranked by cosine similarity.", "inputSchema": {"type": "object", "properties": {"query_embedding": {"type": "array", "items": {"type": "number"}, "description": "Query vector (1536-dimensional embedding)"}, "top_k": {"type": "integer", "default": 10, "description": "Number of results to return"}, "memory_type": {"type": "string", "description": "Filter by memory type (general, decision, learning, reference)"}, "project_name": {"type": "string", "description": "Filter by project name"}, "min_score": {"type": "number", "default": 0.0, "description": "Minimum similarity score (0-1)"}}, "required": ["query_embedding"]}}, {"name": "vector_search_text", "description": "Perform semantic search using text query. Automatically computes embedding. Requires VOYAGE_API_KEY or OPENAI_API_KEY.", "inputSchema": {"type": "object", "properties": {"query_text": {"type": "string", "description": "Text to search for"}, "top_k": {"type": "integer", "default": 10, "description": "Number of results to return"}, "memory_type": {"type": "string", "description": "Filter by memory type"}, "project_name": {"type": "string", "description": "Filter by project name"}, "min_score": {"type": "number", "default": 0.0, "description": "Minimum similarity score (0-1)"}}, "required": ["query_text"]}}, {"name": "vector_index_memory", "description": "Index a memory for vector search. Requires embedding to be provided or embedding API to be configured.", "inputSchema": {"type": "object", "properties": {"memory_id": {"type": "string", "description": "Memory ID to index"}, "content": {"type": "string", "description": "Memory content"}, "memory_type": {"type": "string", "default": "general", "description": "Memory type"}, "project_name": {"type": "string", "description": "Project name"}, "tags": {"type": "array", "items": {"type": "string"}, "description": "Tags"}, "importance": {"type": "integer", "default": 5, "description": "Importance level (1-10)"}, "embedding": {"type": "array", "items": {"type": "number"}, "description": "Pre-computed embedding (optional)"}}, "required": ["memory_id", "content"]}}, {"name": "vector_delete_memory", "description": "Remove a memory from the vector index.", "inputSchema": {"type": "object", "properties": {"memory_id": {"type": "string", "description": "Memory ID to delete"}}, "required": ["memory_id"]}}, {"name": "vector_index_info", "description": "Get information about the vector search index including document count and configuration.", "inputSchema": {"type": "object", "properties": {}, "required": []}}]}}

