graph-memory-mcp-server
Version:
Graphiti Memory Graph MCP Server - Search and explore knowledge graphs using Graphiti
211 lines (210 loc) • 9.72 kB
JavaScript
export const tools = [
{
"name": "get_entity_details",
"description": "Get detailed information about a specific entity extracted from casefile pages, including its properties, relationships, and connected facts. Entities are people, organizations, locations, or other important items mentioned in emails.",
"inputSchema": {
"type": "object",
"properties": {
"node_uuid": {
"type": "string",
"description": "The UUID of the entity to get details for."
},
"include_relationships": {
"type": "boolean",
"description": "Whether to include information about connected entities and their relationships",
"default": true
},
"relationship_depth": {
"type": "integer",
"description": "How many relationship hops to include (how many degrees of separation to explore)",
"default": 1,
"minimum": 1,
"maximum": 3
}
},
"required": ["node_uuid"]
}
},
{
"name": "get_users",
"description": "Retrieve a paginated list of all users in the company system. Each user represents someone who has sent or received emails in the casefiles. Useful for user management and getting user IDs for targeted searches.",
"inputSchema": {
"type": "object",
"properties": {
"pageNumber": {
"type": "integer",
"description": "Page number for pagination, starting from 1",
"default": 1,
"minimum": 1
},
"pageSize": {
"type": "integer",
"description": "Number of users to retrieve per page",
"default": 20,
"minimum": 1,
"maximum": 100
}
},
"required": []
}
},
{
"name": "get_casefile_page_by_uuid",
"description": "Get detailed information about a specific casefile page (email) by UUID. Each page represents an individual email within a casefile, and contains the casefile_id and page_number for further reference.",
"inputSchema": {
"type": "object",
"properties": {
"uuid": {
"type": "string",
"description": "The UUID of the casefile page (email) to retrieve"
}
},
"required": ["uuid"]
}
},
{
"name": "get_casefile_index",
"description": "Get the casefile index which contains short summaries of all pages (emails) in a casefile along with their corresponding page numbers. Use this to get an overview of a casefile before diving into specific pages.",
"inputSchema": {
"type": "object",
"properties": {
"casefile_id": {
"type": "string",
"description": "ID of the casefile to get the index for"
},
"limit": {
"type": "number",
"description": "Maximum number of index entries to return",
"minimum": 1,
"default": 10
},
"next_iter": {
"type": "number",
"description": "Pagination parameter. If 0, returns the latest entries. If 1, returns the next batch of older entries, and so on.",
"default": 0
}
},
"required": ["casefile_id"]
}
},
{
"name": "get_casefile_pages_by_number",
"description": "Get the full detailed content of specific pages (emails) from a casefile by page number (1-based). Each page contains the complete email content. Use this after reviewing the casefile index to get detailed information.",
"inputSchema": {
"type": "object",
"properties": {
"casefile_id": {
"type": "string",
"description": "ID of the casefile containing the pages"
},
"pages": {
"type": "array",
"description": "List of 1-based page numbers to fetch. Can be contiguous (e.g. [1, 2, 3]) or sparse (e.g. [2, 5]). Each page represents a specific email in the casefile.",
"items": {
"type": "number",
"minimum": 1
},
"minItems": 1
}
},
"required": ["casefile_id", "pages"]
}
},
{
"name": "get_recent_user_emails",
"description": "Retrieve the most recent casefile pages (emails) for a specific user. Returns emails where the user is either the sender or recipient. Useful for understanding recent email activity before performing specific searches.",
"inputSchema": {
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "Get recent emails for a specific user (required)"
},
"lastn": {
"type": "integer",
"description": "Number of most recent emails to retrieve",
"default": 20,
"minimum": 1,
"maximum": 100
},
"role_filter": {
"type": "string",
"description": "Filter emails by user's role in the communication",
"enum": ["all", "sender", "recipient"],
"default": "all"
}
},
"required": ["user_id"]
}
},
{
"name": "search_casefile_content",
"description": "Performs a comprehensive search across casefile pages (emails), extracted entities, and relationships. Returns relevant emails and entities based on the search query.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query to find relevant casefile content, emails, entities, or relationships."
},
"user_id": {
"type": "string",
"description": "Optional user ID to restrict search to emails involving this specific user (as sender or recipient)."
},
"search_focus": {
"type": "string",
"enum": ["comprehensive", "entities_only", "emails_only", "facts_only"],
"default": "comprehensive",
"description": "Specifies what type of results to prioritize: all content, just entities, just emails, or just facts/relationships extracted from emails."
},
"max_results": {
"type": "integer",
"description": "Maximum number of search results to return.",
"default": 15
},
"center_around": {
"type": "string",
"description": "Optional entity UUID to center the search context around a specific entity."
}
},
"required": ["query"]
}
},
{
"name": "advanced_casefile_search",
"description": "Executes an advanced search across casefiles with configurable ranking strategies, relationship context, and filtering options. Provides more control over search results than the basic search.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query for casefile content, emails, entities, or relationships."
},
"user_id": {
"type": "string",
"description": "Optional user ID to limit search to emails involving this user."
},
"ranking_strategy": {
"type": "string",
"enum": ["most_accurate", "balanced_ranking", "diverse_perspectives", "proximity_focused", "recent_emails"],
"description": "Ranking strategy: most_accurate for best matches, balanced_ranking for mix of relevance and recency, diverse_perspectives for varied results, proximity_focused for related entities and facts, recent_emails for chronologically recent content."
},
"search_focus": {
"type": "string",
"enum": ["comprehensive", "entities_only", "emails_only", "facts_only"],
"description": "Specifies the type of results to emphasize in the search."
},
"reference_point": {
"type": "string",
"description": "Entity UUID to use as a reference point for the search, helping to find related content."
},
"max_results": {
"type": "integer",
"description": "Maximum number of results to return.",
"default": 15
}
},
"required": ["query"]
}
}
];