Exogram MCP
Exogram MCP provides a Universal FastMCP memory runtime that connects AI assistants like Claude Desktop and Cursor to an encrypted Personal Neural Network. It enables persistent memory storage and retrieval across personal, social, and professional spheres, allowing agents to maintain context and execute tasks using hybrid RRF search and graph traversal without stateless amnesia.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.exogram.ai/mcpWhat you can do with it
- Connect Claude Desktop or Cursor to a persistent memory vault
- Search personal neural network using hybrid RRF and graph traversal
- Store facts and decisions into an encrypted truth ledger
- Share memory between ChatGPT and Claude automatically
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- Exogram — Personal AI Agent & Workspace 2.2.0
- MCP protocol
- 2025-06-18
- Tools
- 22 advertised
- Resources
- 2 advertised
- Resource templates
- 0 advertised
- Prompts
- 2 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
22 advertised
search_vault
Semantic and keyword search across stored personal records, facts, and memories in the private vault.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "The search query to match against stored memories, project decisions, or preferences."
},
"top_k": {
"type": "number",
"default": 5,
"description": "Number of results to return (1-20, default 5)."
}
}
}search_memory_vault
Search the Exogram Personal Neural Network and encrypted memory vault across facts, people, preferences, and commitments.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "The search query to match against stored memories, relationships, or project context."
},
"top_k": {
"type": "number",
"default": 5,
"description": "Number of results to return (1-20, default 5)."
}
}
}store_memory
Anchor a new fact, code convention, project invariant, or personal memory to your encrypted vault.
{
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string",
"description": "The fact, note, or invariant content to persist."
},
"namespace": {
"type": "string",
"default": "default",
"description": "Logical grouping for this memory (default: \"default\")."
}
}
}update_memory_vault
Persist or supersede a personal fact, commitment, or preference in your encrypted Exogram memory vault.
{
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string",
"description": "The fact, preference, or commitment to persist."
},
"namespace": {
"type": "string",
"default": "default",
"description": "Logical grouping or sphere (\"work\", \"household\", \"personal\", or \"default\")."
}
}
}get_neural_cluster
Look up an entity in Exogram's Layer 2 Knowledge Graph. Returns connected entities and directional relationships.
{
"type": "object",
"required": [
"entity_name"
],
"properties": {
"entity_name": {
"type": "string",
"description": "Name of the entity to look up (e.g., \"Next.js\", \"PostgreSQL\", \"SQLite WAL\")."
}
}
}list_entities
Retrieve active entities and concepts mapped in the personal knowledge network.
{
"type": "object",
"properties": {
"limit": {
"type": "number",
"default": 25,
"description": "Maximum number of entities to return (default 25)."
}
}
}check_action_safety
Verify whether an agent action is safe and complies with active execution invariants before running.
{
"type": "object",
"required": [
"action"
],
"properties": {
"action": {
"type": "string",
"description": "The action name (e.g. \"sql_execute\", \"file_delete\", \"api_call\")."
},
"params": {
"type": "object",
"description": "Parameters supplied to the action."
}
}
}record_decision
Record an execution decision into the tamper-evident cryptographic audit ledger.
{
"type": "object",
"required": [
"action",
"decision"
],
"properties": {
"action": {
"type": "string",
"description": "Action name."
},
"params": {
"type": "object",
"description": "Parameters supplied."
},
"reason": {
"type": "string",
"description": "Justification for the decision."
},
"decision": {
"enum": [
"PERMIT",
"DENY"
],
"type": "string",
"description": "Action decision."
}
}
}verify_audit_trail
Verify the cryptographic SHA-256 hash chain integrity of the ledger from genesis to head.
{
"type": "object",
"properties": {}
}query_graph
Ask a natural language question against the knowledge graph and receive a structured answer with entity paths and gap analysis.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "The natural language question to ask, e.g. \"How is Governed Autonomy connected to Exogram?\" or \"What do I know about AI safety?\""
},
"max_hops": {
"type": "number",
"default": 2,
"description": "Maximum traversal depth (1-4, default 2)."
}
}
}gmail_search_messages
Search personal or workspace emails via Gmail API with query syntax (read-only).
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search query using Gmail syntax (e.g., \"from:xAI compute\", \"is:unread\", \"subject:launch\")."
},
"max_results": {
"type": "number",
"default": 5,
"description": "Maximum number of messages to return (1-20, default 5)."
}
}
}gmail_create_draft
Create an email draft in Gmail. Does NOT send the email without explicit user confirmation.
{
"type": "object",
"required": [
"to",
"subject",
"body"
],
"properties": {
"cc": {
"type": "string",
"description": "Optional CC recipient email address."
},
"to": {
"type": "string",
"description": "Recipient email address."
},
"body": {
"type": "string",
"description": "Body content (plain text or markdown)."
},
"subject": {
"type": "string",
"description": "Subject line of the draft email."
}
}
}drive_search_files
Search documents, presentations, and files in Google Drive (read-only).
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search terms or MIME filters (e.g., \"xAI compute\", \"type:presentation\")."
},
"max_results": {
"type": "number",
"default": 5,
"description": "Maximum files to return (1-20, default 5)."
}
}
}drive_create_presentation
Create a new Google Slides presentation draft with structured slides.
{
"type": "object",
"required": [
"title",
"slides"
],
"properties": {
"title": {
"type": "string",
"description": "Title of the presentation."
},
"slides": {
"type": "array",
"items": {
"type": "object",
"required": [
"title",
"bullet_points"
],
"properties": {
"title": {
"type": "string",
"description": "Slide title"
},
"bullet_points": {
"type": "array",
"items": {
"type": "string"
},
"description": "Key bullet points for the slide"
}
}
},
"description": "Array of slide definitions."
}
}
}calendar_list_events
List upcoming meetings, agenda items, and schedule availability from Google Calendar (read-only).
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search query or event keyword (e.g., \"xAI sync\", \"Migration\", \"Team standup\")."
},
"max_results": {
"type": "number",
"default": 5,
"description": "Maximum number of events to return (1-20, default 5)."
}
}
}calendar_create_meeting
Draft a new Google Calendar meeting invite. Does NOT send invites without explicit user confirmation.
{
"type": "object",
"required": [
"title",
"start_time",
"end_time"
],
"properties": {
"title": {
"type": "string",
"description": "Meeting title or summary."
},
"end_time": {
"type": "string",
"description": "ISO-8601 end timestamp (e.g., \"2026-09-17T14:45:00Z\")."
},
"attendees": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of attendee email addresses."
},
"start_time": {
"type": "string",
"description": "ISO-8601 start timestamp (e.g., \"2026-09-17T14:00:00Z\")."
},
"description": {
"type": "string",
"description": "Meeting agenda or description."
}
}
}github_search_issues
Search issues and pull requests across connected GitHub repositories (read-only).
{
"type": "object",
"required": [
"query"
],
"properties": {
"repo": {
"type": "string",
"description": "Repository in format \"owner/repo\" (e.g., \"Richard-Ewing/exogram\")."
},
"query": {
"type": "string",
"description": "Search term or query syntax (e.g., \"is:open label:bug\", \"cluster sync\")."
}
}
}github_create_pr_draft
Draft a GitHub Pull Request proposal. Does NOT open or publish the PR without explicit user approval.
{
"type": "object",
"required": [
"repo",
"title",
"head",
"body"
],
"properties": {
"base": {
"type": "string",
"default": "main",
"description": "Target base branch (default: \"main\")."
},
"body": {
"type": "string",
"description": "Detailed PR description and change summary."
},
"head": {
"type": "string",
"description": "Feature or working branch name."
},
"repo": {
"type": "string",
"description": "Repository in format \"owner/repo\"."
},
"title": {
"type": "string",
"description": "Pull request title."
}
}
}notion_search_pages
Search pages and databases in the user connected Notion workspace.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Search keywords or topic to find in Notion."
},
"filter_type": {
"enum": [
"page",
"database"
],
"type": "string",
"description": "Optional filter: \"page\" or \"database\"."
}
}
}notion_append_block
Draft new content or notes to append into an existing Notion page. Gated by explicit user approval.
{
"type": "object",
"required": [
"page_id",
"content"
],
"properties": {
"content": {
"type": "string",
"description": "Markdown content or structured notes to append."
},
"page_id": {
"type": "string",
"description": "Target Notion page identifier or title."
},
"block_type": {
"type": "string",
"default": "paragraph",
"description": "Type of block: \"paragraph\", \"bulleted_list_item\", or \"callout\"."
}
}
}slack_list_channels
List accessible channels in the connected Slack workspace.
{
"type": "object",
"properties": {
"types": {
"type": "string",
"default": "public_channel",
"description": "Channel types to list (e.g. \"public_channel,private_channel\")."
}
}
}slack_post_message_draft
Draft a message to a Slack channel. Does NOT post without explicit user approval.
{
"type": "object",
"required": [
"channel",
"message"
],
"properties": {
"channel": {
"type": "string",
"description": "Target channel name or ID (e.g. \"#general\", \"#engineering\")."
},
"message": {
"type": "string",
"description": "Message body or announcement content."
},
"thread_ts": {
"type": "string",
"description": "Optional parent thread timestamp for threaded replies."
}
}
}Prompts
2 advertised
exogram_context_brief — Personal Context Brief
Gather relevant background across your work, people, and life priorities before drafting or deciding.
- topic
- Project, person, meeting, or decision you want context on. (required)
exogram_action_plan — Approval-Ready Action Plan
Turn a plain-English goal into an approval-gated plan grounded in your Exogram context and safety checks.
- goal
- Outcome or task you want Exogram to prepare. (required)
Resources
2 advertised
Personal Vault Summary
High-level overview of stored memories and user context in Exogram.
exogram://vault/summaryKnowledge Graph Entities
Current topological entity nodes and relationship categories.
exogram://graph/entities30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 2933 ms
- 95th percentile latency
- 2933 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 2933 ms · metadata changed · 22 tool(s), 2 resource(s), 0 resource template(s), 2 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http exogram-mcp https://api.exogram.ai/mcpCodex
codex mcp add exogram-mcp --url https://api.exogram.ai/mcpCursor
{
"mcpServers": {
"exogram-mcp": {
"url": "https://api.exogram.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"exogram-mcp": {
"type": "streamableHttp",
"url": "https://api.exogram.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"exogram-mcp": {
"type": "http",
"url": "https://api.exogram.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http exogram-mcp https://api.exogram.ai/mcpClaude Desktop
{
"mcpServers": {
"exogram-mcp": {
"url": "https://api.exogram.ai/mcp"
}
}
}Windsurf
{
"mcpServers": {
"exogram-mcp": {
"serverUrl": "https://api.exogram.ai/mcp"
}
}
}Let your agent find its tools
Find servers like Exogram MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.