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. |
Capabilities
Features and capabilities supported by this server
| 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 |
| 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
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