pūrmemo
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PURMEMO_API_KEY | No | Your pūrmemo API key from app.purmemo.ai/settings. Required for local setups; not needed for the hosted MCP server. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| save_conversationA | Save complete conversations as memory. REQUIRED: Send COMPLETE conversation in 'conversationContent' parameter (minimum 100 chars, should be thousands). Include EVERY message verbatim - NO summaries or partial content. |
| save_artifactA | Save a single artifact (research report, table, framework, spec, code) linked to a conversation memory. WHEN TO USE: After calling save_conversation for a session that produced artifacts. Call this ONCE PER ARTIFACT with the full verbatim content — do NOT summarize or truncate. WHY: Artifacts are the highest-value output of research sessions. Saving them separately ensures complete preservation. Each artifact becomes a first-class searchable object linked to its parent conversation. FLOW:
IMPORTANT: Send the COMPLETE artifact content in the content field. The entire point of this tool is to preserve artifacts that would otherwise be lost or summarized. Minimum 100 characters. |
| commitA | Persist a commitment-shaped artifact (PRD, ADR, spec, OKR) as a memory with intent='commitment'. WHEN TO USE: This is the write primitive for /prd, /decide, /spec, /commit slash commands. Call after the artifact is fully drafted in the conversation. Send the COMPLETE artifact verbatim — do NOT summarize. INSERT-only. Each call creates a new memory; supersede prior versions by recency, never overwrite. No conversationId parameter (intentional — see ADR-034). QUERYABLE: GET /api/v1/commitments/?type= returns all commitments of a given type, filterable by target_date and sorted by recency. EXAMPLES:
|
| snapshotA | Generate a state-shaped artifact for a topic from your saved memories. WHEN TO USE: When you want a current-state document derived from saved conversations — architecture map, glossary, runbook, manifesto, project state. The slash command /snapshot calls this. HOW IT WORKS:
INSERT-only — each call creates a new draft (versioned). Two snapshots of the same topic both exist; supersede via /accept. EXAMPLES:
|
| snapshot_sourcesA | Fetch citation bundle + conflict detection for a topic so YOU can synthesize the snapshot in-context. Step 1 of the MCP snapshot path (ADR-032 Amendment A). WHEN TO USE: When you want to generate a snapshot from inside Claude. Returns source memories + conflicts so you synthesize, then call save_snapshot() to persist. FLOW:
|
| save_snapshotA | Persist your synthesized snapshot content as a draft. Step 3 of the MCP snapshot path (ADR-032 Amendment A). Call this after synthesizing from snapshot_sources(). Backend derives evidence_tier from cited_ids — not caller-controlled. Runs claim verification on your content. |
| get_snapshotA | Read an existing canonical snapshot into context. Fast — no LLM calls. WHEN TO USE: When you need the current canonical state document for a topic (e.g. architecture, auth, glossary) without generating a new one. |
| accept_snapshotA | Promote a draft snapshot to canonical. Supersedes the prior canonical for this topic. If gate blockers exist (conflicts detected, tier downgrade, or first canonical), returns them for review. Pass force: true to approve and promote anyway. |
| recall_memoriesA | Search and retrieve saved memories with intelligent semantic ranking. 🎯 BASIC SEARCH: recall_memories(query="authentication") → Returns all memories about authentication, ranked by semantic relevance 🔍 FILTERED SEARCH (Phase 2 Knowledge Graph Intelligence): Use filters when you need PRECISION over semantic similarity: ✓ entity="name" - Find memories mentioning specific people/projects/technologies Example: entity="purmemo" → Only memories discussing purmemo ✓ has_observations=true - Find substantial, fact-dense conversations Example: has_observations=true → Only high-quality technical discussions ✓ initiative="project" - Scope to specific initiatives/goals Example: initiative="Q1 OKRs" → Only Q1-related memories ✓ intent="type" - Filter by conversation purpose Options: decision, learning, question, blocker Example: intent="blocker" → Only conversations about blockers 💡 WHEN TO FILTER:
📝 COMBINED EXAMPLES: recall_memories(query="auth", entity="purmemo", has_observations=true) → Find detailed technical discussions about purmemo authentication recall_memories(query="blockers", intent="blocker", stakeholder="Engineering") → Find engineering team blockers |
| list_clustersA | Browse the memory map. With NO arguments, returns the user's PROJECT -> THEME hierarchy with member counts (the "galaxy" as text) — use this to show "what projects/topics do I have?". With cluster="", OPENS that cluster and lists its member memories (a project title pulls every memory across all its themes; a theme title pulls that theme). Pair with recall_memories(cluster=...) to then semantically search inside a cluster. Read-only. |
| get_memory_detailsA | Get complete details of a specific memory, including all linked parts if chunked |
| discover_related_conversationsA | CROSS-PLATFORM DISCOVERY: Find related conversations across ALL AI platforms. |
| get_user_contextA | Get the current user's cognitive identity and active session context. Call this at the START of a conversation to understand who you're talking to — their role, expertise, current project, and recent memory themes. This is the core of Purmemo's identity layer: once set in the dashboard, your identity travels silently to every AI session so you're never explaining yourself from scratch again. WHAT IT RETURNS:
WHEN TO CALL:
EXAMPLE USAGE: → User starts new Claude session → Claude calls get_user_context automatically → Response: { role: "founder", expertise: ["product", "fullstack"], project: "purmemo", focus: "identity layer", memory_summary: "Chris has been building Purmemo's..." } → Claude responds with full context already loaded — no re-explaining needed |
| run_workflowA | Run a Purmemo workflow — structured, memory-powered processes for product, engineering, business, and operations tasks. Your relevant memories and identity are automatically loaded to personalize every workflow. WHEN TO USE THIS TOOL:
AVAILABLE WORKFLOWS (pass the workflow name, or describe what you need): Product: prd, roadmap, story, design, feedback Strategy: ceo, growth, metrics, intel Engineering: debug, review, deploy, incident Operations: sprint Content: copy EXAMPLES: run_workflow(workflow="prd", input="notification system for mobile app") run_workflow(workflow="debug", input="TypeError: Cannot read property 'map' of undefined in Timeline") run_workflow(input="production is down, users can't save memories") → auto-routes to incident run_workflow(input="what should I focus on this week?") → auto-routes to sprint run_workflow(input="how's the business doing?") → auto-routes to metrics DO NOT use this tool for: simple memory recall (use recall_memories), saving conversations (use save_conversation), or finding related discussions (use discover_related_conversations). If no specific workflow is named, the system auto-routes based on the user's intent. |
| list_workflowsA | List all available Purmemo workflows — structured, memory-powered processes you can run. WHEN TO USE THIS TOOL:
Returns the full catalog of workflows organized by category with descriptions. |
| share_memoryA | Set the visibility of a memory you own. VISIBILITY LEVELS:
WHEN TO USE:
QUOTA:
EXAMPLE: share_memory({ memory_id: "abc-123", visibility: "public" }) RETURNS: Updated visibility status and confirmation message. |
| recall_publicA | Search public memories shared by all Purmemo users. This is the community knowledge base. WHEN TO USE:
DOES NOT COUNT AGAINST RECALL QUOTA — public knowledge is free. FILTERS:
EXAMPLE: recall_public({ query: "MCP server testing best practices" }) RETURNS: List of public memories with author attribution, relevance scores, and recall counts. |
| get_public_memoryA | Retrieve the FULL content of a public or unlisted memory by ID. WHEN TO USE:
This is the tool that closes the loop: recall_public finds memories, this tool retrieves them in full. No authentication required — public knowledge is free. EXAMPLE: get_public_memory({ memory_id: "abc-123-def-456" }) RETURNS: Full memory content, observations, entities, tags, author attribution, and metadata. |
| report_memoryA | Report a public memory for inappropriate content. WHEN TO USE:
REASONS: spam, inappropriate, misleading, personal_info, other After 3 reports, a memory is automatically hidden from public view pending admin review. EXAMPLE: report_memory({ memory_id: "abc-123", reason: "spam", description: "Promotional content" }) |
| get_acknowledged_errorsA | Fetch open and acknowledged errors waiting for AI investigation. |
| save_investigation_resultA | Save AI investigation results for an error incident. |
| generate_handoff_briefA | Generate a surgical context brief for a new AI session. Instead of re-explaining your context, the AI already knows where you left off. Uses a 5-layer compaction hierarchy to maximize signal in ~2,000 tokens:
Call this at the start of a new session or when switching projects to give the AI instant context. No new data is generated — composes from your existing V2 intelligence extraction data. |
| save_test_resultA | Save a test result memory for a project, linked to the current active task. Call this after running tests — pass or fail — to record the outcome. Saves a memory with category='test_result' and links it to the most recent active task. Re-running with the same test_suite name updates the existing memory (living document). USAGE:
RETURNS:
|
| get_test_resultsA | List recent test results for a project, newest first. Pairs with save_test_result — use this to recall past test outcomes without having to query the conversational memory layer. USAGE:
RETURNS:
|
| get_artifactsA | List artifacts linked to a parent conversation. Pairs with save_artifact. |
| get_investigationsA | List error investigation results (admin). Pairs with save_investigation_result. |
| get_next_taskA | Get the next pending task for a project and mark it active. Fetches the lowest-sequence pending task from the project_tasks queue, sets its status to 'active', and returns the task details plus a brief from the linked PRD memory. NOTE: project_tasks is a structured work queue — separate from recall_memories todos. Tasks are created explicitly via the task management workflow, not auto-populated from saved conversations. If this returns "no pending tasks", the project queue is empty — use recall_memories to find work items in saved conversations instead. Call this at the start of a work session to pick up where you left off. When done, call complete_task({ task_id, verification_summary }) to close the loop. RETURNS:
|
| complete_taskA | Mark a project task as done and close the Jered Loop for this session. Sets status='done', records completion_summary, clears active_session_id. Returns the next pending task so you know what comes next before closing. Call this BEFORE ending a session — Jered's rule: consciously close each task. RETURNS:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| load-context | Load relevant memory context before starting work. Searches your vault for past conversations, decisions, and patterns related to what you're about to do. |
| save-this-conversation | Save this conversation to your memory vault as a living document. Updates an existing memory if the same topic was saved before. |
| catch-me-up | Catch me up on a project — what's been done, what decisions were made, what's next. |
| weekly-review | What have I been working on this week? Summarizes recent memory activity across all projects and platforms. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Who I Am | Your cognitive fingerprint — role, expertise, domain, tools, work style, current session, and vault stats. Attach this at the start of any conversation so Claude knows who it's talking to without you having to explain yourself. |
| My Recent Work Context | A briefing of your 5 most recent memories — what you've been working on, what decisions were made, what's in progress. Attach when starting a work session to skip the "catch me up" step. |
| My Active Projects | Your active projects grouped by name, showing recent activity per project. Attach when switching between projects or planning what to work on next. |
| Memory Vault Stats | How many memories you've saved, which platforms they're from, and your activity this week. |
| Recall Widget | Interactive memory recall card list for ChatGPT Apps SDK. |
| Save Widget | Save confirmation card for ChatGPT Apps SDK. |
| Memory Detail Widget | Full memory content viewer for ChatGPT Apps SDK. |
| Context Widget | User context and stats display for ChatGPT Apps SDK. |
| Discover Widget | Cross-platform conversation discovery for ChatGPT Apps SDK. |
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/purmemo-ai/purmemo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server