PLUR
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PLUR_PATH | No | Overrides the default storage location (~/.plur/) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
| logging | {} |
| prompts | {} |
| resources | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| plur_learnA | Create an engram — record a reusable learning, preference, or correction. Multi-agent note: in an orchestration that spawns subagents, have the PARENT session own plur_learn writes — spawned subagents should return their findings as text for the parent to persist, rather than each calling plur_learn (tool availability is not guaranteed in every subagent context). See plur-ai/plur#281. |
| plur_learn_batchA | Create many engrams in one call — the batch form of plur_learn. Accepts an array of engram objects and writes them sequentially through the SAME dedup + policy pipeline as plur_learn (content-hash NOOP → semantic recall → LLM ADD/UPDATE/MERGE decision). Dedup also applies WITHIN the batch: a statement duplicating an earlier item in the same array resolves to NOOP against it. Returns |
| plur_recallA | Query engrams by BM25 keyword matching — use plur_recall_hybrid for semantic similarity. Note: a project-scope filter also returns personal-family engrams (local, global, user:, agent:); an explicit scope=global recall returns ALL personal-family engrams — wider than scope=global INJECT, which is targeted to the global namespace only. |
| plur_recall_hybridA | Hybrid search — BM25 + local embeddings merged via Reciprocal Rank Fusion. No API calls, fully local. Best default for most use cases. |
| plur_injectA | Get a scored context injection for a task — returns directives and considerations within token budget |
| plur_inject_hybridA | Hybrid injection — BM25 + embeddings for better context selection. Falls back to BM25 if embeddings unavailable. Best default for injection. |
| plur_feedbackB | Rate an engram's usefulness — trains injection relevance over time. Supports single or batch mode. |
| plur_pinA | Toggle the always-load (pinned) flag on an engram. Pinned engrams bypass the keyword-relevance gate at injection time and are eligible for loading on every session, regardless of overlap with the user task. Use sparingly — meta-rules, safety conventions, core operating principles. Pass {id, pinned:true} to pin or {id, pinned:false} to unpin. List current pinned with {list:true}. |
| plur_forgetA | Retire an engram by ID or search term — marks it as no longer active without deleting history |
| plur_captureA | Append an episode to the episodic timeline — records what happened in a session |
| plur_timelineA | Query the episodic timeline — retrieve past episodes filtered by time, agent, or search |
| plur_ingestB | Extract engram candidates from content using pattern matching — optionally auto-save them |
| plur_packs_previewA | Preview a pack before installing — shows manifest, engram list, security scan, and warnings. Always call this before plur_packs_install to let the user review what they are importing. |
| plur_packs_installA | Install an engram pack from a directory path. Runs a mandatory security scan (blocks if secrets found), detects conflicts with existing engrams, and records install metadata in the registry. Call plur_packs_preview first to show the user what the pack contains. |
| plur_packs_uninstallA | Uninstall an engram pack by name — removes the pack and all its engrams |
| plur_packs_listA | List all installed engram packs with integrity hashes, install dates, and source paths |
| plur_packs_discoverB | Browse available engram packs from the registry — discover curated expertise packs to install |
| plur_syncA | Sync engrams via git AND refresh the derived index from YAML. Initializes repo on first call, commits and pushes/pulls on subsequent calls. Provide a remote URL on first call to enable cross-device sync. Pass full=true to drop-and-rebuild the index from YAML (recovery path; YAML stays untouched). |
| plur_sync_statusA | Check git sync status — whether repo is initialized, has remote, is dirty, ahead/behind counts |
| plur_extract_metaA | Extract meta-engrams from stored engrams using the 6-stage pipeline (structural analysis → clustering → alignment → formulation → hierarchy). Requires an LLM API endpoint. |
| plur_meta_engramsA | List existing meta-engrams (engrams with META- prefix) with their structural templates and confidence scores |
| plur_validate_metaA | Test a meta-engram template against engrams from a new domain — updates confidence and domain_coverage |
| plur_statusA | Return system health — running version, engram count, episode count, pack count, storage root. Optionally filter engram counts by domain prefix and/or creation date. |
| plur_doctorA | Diagnose the PLUR ENGINE (embedder, hybrid search, remote-store auth) — not hook/MCP wiring. Reports whether the embedding model loaded, whether hybrid search is fully operational, and — for any configured enterprise/remote store — whether its auth is valid (probes /api/v1/me and decodes token expiry), so a dead or soon-to-expire token surfaces instead of hiding behind a "healthy" report. Run this first when recall feels off or team engrams stop syncing. Does NOT check .cursor/mcp.json, .cursor/hooks.json, or the live MCP tool count — for that, run the |
| plur_session_startB | Start a session — inject relevant engrams for your task. Call at the beginning of every session. |
| plur_session_endA | End a session. BEFORE calling this tool, review the conversation and extract learnings:
Include at least one engram_suggestion if ANYTHING was learned. An empty suggestions array means nothing worth remembering happened — this should be rare. |
| plur_stores_addA | Register an additional engram store. Either filesystem (path) or remote (url+token, e.g. PLUR Enterprise). One remote URL can host multiple scopes — call once per team scope you are authorized for; each registers independently. Returns status: "added" or "already_registered". |
| plur_stores_listA | List all configured engram stores with their scope, path, and engram count. When a store declares self-describing scope metadata, its description and covers (topics the scope is the home for) are included so you can pick the right scope. |
| plur_suggest_scopeA | Suggest which registered scope(s) an engram belongs in, ranked by fit. Deterministic — no LLM, no network. Scores the statement keywords, optional domain (a dotted namespace like "plur.core.security"), and tags against the covers[] each scope declares. ADVISORY ONLY: this does not route or store anything; pass the chosen scope to plur_learn yourself. Returns candidates sorted by confidence (empty when nothing matches). |
| plur_scopes_discoverA | Discover which scopes your remote token is authorized for via the enterprise server (GET /api/v1/me), and which of those are not yet registered locally. Read-only by default; pass register:true to register all authorized-but-unregistered scopes in one step. Only shared-family scopes (group:/project:/space:/team:/org:/public) are auto-registered — personal-family scopes (global/local/user:/agent:) advertised by /me are skipped and surfaced in the result. Use this when you have access to multiple team scopes on one server. |
| plur_promoteB | Activate candidate engrams so they appear in injection results |
| plur_tensionsA | Tension lifecycle (#181). Default: list persisted tension records (unresolved first). scan:true runs an LLM contradiction scan, persists NEW detections as records, and skips already-recorded pairs. Lifecycle actions: action:"confirm" (real conflict), action:"dismiss" (false positive — pair suppressed from future scans), action:"resolve" + winner: (loser engram retired). Scan requires OPENAI_API_KEY or OPENROUTER_API_KEY env var, or explicit llm_base_url + llm_api_key args. |
| plur_tensions_purgeA | Purge all conflict relations from local engrams — removes accumulated false positives from the legacy tension-detection system |
| plur_episode_to_engramA | Promote an episode to a persistent episodic engram — useful when a session event deserves long-term memory |
| plur_historyA | View the event-sourced history of an engram or all recent history — shows creation, updates, feedback, and evolution events |
| plur_report_failureA | Report a failure for a procedural engram — triggers procedure evolution via LLM if configured. Only works on procedural engrams. Max 3 revisions per procedure per 24h. |
| plur_packs_exportA | Export engrams as a shareable thematic pack with privacy scanning and integrity hash. Filters out private and secret-containing engrams automatically. Output goes to ~/plur-packs/ by default. |
| plur_similarity_searchA | Search engrams by cosine similarity, returning scores. Used for dedup classification — scores > 0.9 indicate duplicates, 0.7-0.9 related, < 0.7 new. |
| plur_profileA | Generate or retrieve a cognitive profile — a narrative summary synthesized from stored engrams. Cached for 24h. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| plur-getting-started | Step-by-step guide to set up and start using PLUR memory |
| plur-session-start | Load relevant context for a task — call at the start of each session |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| PLUR Agent Guide | Complete reference for all PLUR tools, when to use them, scoping, and storage |
| PLUR Status | Live system health — engram count, episode count, pack count, storage path |
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/plur-ai/plur'
If you have feedback or need assistance with the MCP directory API, please join our Discord server