graph-memory-mcp-server
Version:
Graphiti Memory Graph MCP Server - Search and explore knowledge graphs using Graphiti
211 lines (210 loc) • 9.97 kB
JavaScript
export const tools = [
{
"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 exact full name ('user_id') needed for other search tools.",
"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": "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 and user_id.",
"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": "user ID to restrict search to emails involving this specific user. Its the users exact full name (e.g. 'John Doe')"
},
"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", "user_id"]
}
},
{
"name": "advanced_casefile_search",
"description": "Perform a targeted search with advanced controls for ranking and filtering. Use this when a general search is too broad and you need more specific results.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query for casefile content, emails, entities, or relationships."
},
"user_id": {
"type": "string",
"description": "user ID to limit search to emails involving this user. Its the users exact full name (e.g. 'John Doe')"
},
"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", "user_id"]
}
},
{
"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. Helps to quickly understand a user's latest activities.",
"inputSchema": {
"type": "object",
"properties": {
"user_id": {
"type": "string",
"description": "user ID to get recent emails for. Its the users exact full name (e.g. 'John Doe')"
},
"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": "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_user_email_by_uuid",
"description": "Get detailed information about a specific user (email) by UUID. Each email represents an individual page 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 user email to retrieve"
}
},
"required": ["uuid"]
}
},
{
"name": "get_casefile_index",
"description": "Gets the summary index for a specific 'Issue related Casefile' Use this to get an overview of a casefile before diving into specific pages.This accesses a curated collection of documents about a specific topic and contains more than user emails. Use this to understand more about a specific issue.",
"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": "This parameter handles pagination for large indexes. To get the latest entries, send the request with `next_iter: 0`. Tool output will include a `has_more` flag to indicate if there are more entries to retrieve. Use this to get the next batch of entries.",
"default": 0
}
},
"required": ["casefile_id"]
}
},
{
"name": "get_casefile_pages_by_number",
"description": "Get the full detailed content of specific pages from an issue specific casefile by page number (1-based). 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"]
}
}
];