Plur
Open, local-first engram memory for AI agents: read, correct, delete; shared.
Connector by plur-ai · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/plur-ai-plur
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: agent-memory
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
Runs code on install
Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.
- Tools
- 21 read · 14 write · 8 delete · 10 not yet classified
- Secrets
- None asked for
- Install scripts
- Runs code on install
- Runs as
- Node.js package
Tools by what they do 53
Read from the source code; the running server may list different tools.
Read 21 · Look things up without changing anything.
plur_extract_metaplur_historyplur_ingestplur_injectplur_inject_hybridplur_meta_engramsplur_packs_discoverplur_packs_listplur_packs_previewplur_profileplur_provenanceplur_recall
Show 9 more tools
plur_recall_hybridplur_receiptplur_similarity_searchplur_statusplur_stores_listplur_suggest_scopeplur_sync_statusplur_timelinerecall
Write 14 · Create, change, send or run things.
learnpacksplur_learnplur_learn_batchplur_outboxplur_packs_installplur_pinplur_rescopeplur_scopes_discoverplur_session_startplur_stores_addplur_sync
Show 2 more tools
syncsync-status
Delete 8 · Delete, drop, revoke or wipe things.
plur_adminplur_doctorplur_forgetplur_packs_uninstallplur_report_failureplur_tensionsplur_tensions_purgeplur_validate_meta
Not yet classified 10 · We could not tell from the name and description.
forgetplurplur_captureplur_episode_to_engramplur_feedbackplur_packs_exportplur_promoteplur_session_endplur_session_scopeplur-memory
Files it touches
- Any path the agent passes to its tools
Tools (53)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
forgetRetire a PLUR memory by ID
learnSave something to PLUR memory
packsManage knowledge packs: list, install <path>, uninstall <name>
plurPLUR memory status and diagnostics.
plur_adminAdmin dispatchDescription is built at runtime.
plur_captureCapture episodeAppend an episode to the episodic timeline — records what happened in a session
plur_doctorDoctorDiagnose 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 doctor` CLI command in a terminal (…
plur_episode_to_engramEpisode to EngramPromote an episode to a persistent episodic engram — useful when a session event deserves long-term memory
plur_extract_metaExtract meta-engramsExtract meta-engrams from stored engrams using the 6-stage pipeline (structural analysis → clustering → alignment → formulation → hierarchy). Requires an LLM API endpoint.
plur_feedbackFeedbackRate whether a memory shown to you was useful. This trains what surfaces next time, so rate honestly when an injected memory helped or misled.
plur_forgetForgetcan change or delete dataRetire an engram that is wrong or out of date, by its ID. Memory you can correct is the point; do not leave a known-wrong memory in place.
plur_historyHistoryread-onlyView the event-sourced history of an engram or all recent history — shows creation, updates, feedback, and evolution events
plur_ingestIngestExtract engram candidates from content using pattern matching — optionally auto-save them
plur_injectInject (BM25)read-onlyGet a scored context injection for a task — returns directives and considerations within token budget
plur_inject_hybridInject (hybrid)read-onlyHybrid injection — BM25 + embeddings for better context selection. Falls back to BM25 if embeddings unavailable. Best default for injection.
Show 38 more tools
plur_learnLearnStore a correction, preference, or durable fact so it is remembered in later sessions. Use when the user corrects you or states how they want things done.
plur_learn_batchLearn (batch)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 duplicate check, or local cosine REPORTING when no LLM is configured). A batch NEVER overwrites an existing memory: when the duplicate checker says an item should replace or be merged into an existing memory, the item is saved as its own memory instead (decision ADD), linked to that memory, and its result carries `likely_duplicate_of` { id, checker_decision: UPDATE | MERG…
plur_meta_engramsList meta-engramsread-onlyList existing meta-engrams (engrams with META- prefix) with their structural templates and confidence scores
plur_outboxOutboxInspect the remote-write outbox — team-scoped writes queued locally because their remote store was unreachable, plus any other queued remote operation core lists (e.g. a retirement still to be applied on the remote). Read-only by default; pass flush:true to retry them now. Entries never include the target URL or token.
plur_packs_discoverDiscover packsread-onlyBrowse available engram packs from the registry — discover curated expertise packs to install
plur_packs_exportExport packExport 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/<name> by default.
plur_packs_installInstall packInstall an engram pack from a local directory path or an https:// URL pointing to a .tar.gz archive. 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_listList packsread-onlyList all installed engram packs with integrity hashes, install dates, and source paths
plur_packs_previewPreview packread-onlyPreview 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. Accepts a local directory path or an https:// URL pointing to a .tar.gz archive.
plur_packs_uninstallUninstall packcan change or delete dataUninstall an engram pack by name — removes the pack and all its engrams
plur_pinPinToggle the always-load (pinned) flag on an engram. Pinned engrams bypass the keyword-relevance gate and load on every session regardless of overlap with the task. Use sparingly — meta-rules, safety conventions, core operating principles; a fact you need only sometimes should be recalled, not pinned. The pinned set has a QUOTA (injection_budget × injection.pinned_ratio): "always-load" only means anything if the set fits, so a pin that would exceed it is REFUSED with the current usage and unpin suggestions rather than silently dropping something already pinned. Resolve it by unpinning something …
plur_profileCognitive profileread-onlyGenerate or retrieve a cognitive profile — a narrative summary synthesized from stored engrams. Cached for 24h.
plur_promotePromoteActivate candidate engrams so they appear in injection results. Status change only — it does NOT move an engram to another scope; to promote an engram into a team/shared scope use plur_rescope (#676).
plur_provenanceWhere a memory came fromread-onlyWhere a memory came from: who asserted it, whether a person stated it or a model worked it out, when, what it came from, and whether you may reuse it. Read-only. Accepts an engram id or a search term — nobody remembers ids. IMPORTANT when relaying to the user: report the `not_recorded` list as prominently as the rest. A memory written before provenance was captured genuinely cannot say who asserted it, and presenting the record as complete would make it look more authoritative than it is. Nothing here is guessed. Prefer relaying `summary`; ask for format "record" only when a machine-readable d…
plur_recallRecallread-onlySearch stored memory for engrams relevant to a query. The most relevant memories are already in your system prompt; use this for a targeted lookup beyond them.
plur_recall_hybridRecall (hybrid) [deprecated alias]read-only[Deprecated since 0.16 — use plur_recall (mode defaults to hybrid). Alias kept for backwards compatibility; removal earliest 0.18.] Hybrid search — BM25 + local embeddings merged via Reciprocal Rank Fusion, plus the live enterprise-store recall leg when one is configured and project-relevant, or when the scope is a personal user: scope matching the own scope of a configured remote store (exact, case-insensitive; adds only that store, while dial: always and a trusted project remote still apply).
plur_receiptMemory receiptread-onlyCounted report of what your memory retrieved for you: engrams stored, how many were retrieved and how often, which are most relied on, and how much of the store is dormant. Local and read-only; every figure is directly counted, never estimated. IMPORTANT when relaying to the user: `activation_rate` is COVERAGE over the logging window (≈ how much of the store was surfaced), NOT a quality or effectiveness score — it is naturally low and FALLS as more engrams are added, so never present it as "memory is N% effective". A `summary` line is included; prefer relaying that. NOT plur_provenance: this c…
plur_report_failureReport Failurecan change or delete dataReport 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_rescopeRescopeMove existing engram(s) to a different scope (#676) — e.g. promote a personal/local engram into a team scope so it reaches the shared store. Bypasses the content-hash dedup that makes a plur_learn re-emit a silent no-op: rescope matches by id and moves the engram. Remote targets (a configured writable store scope): a copy is pushed via the routed write path (the server assigns the id, provenance is kept in the copy's source field) and the local original is soft-retired with a superseded_by link — set keep_local:true to keep it active. Local targets (local, global, project:*): the scope is rewr…
plur_scopes_discoverDiscover scopesDiscover 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, and scopes the user has dismissed are respected (NOT registered by the batch path; register one individually via the CLI `plur scopes regist…
plur_session_endSession EndEnd a session. BEFORE calling this tool, review the conversation and extract learnings: 1. Corrections the user made ("no, use X not Y") → type: behavioral 2. Preferences stated ("always X", "never Y") → type: behavioral 3. Codebase patterns discovered (naming, structure, conventions) → type: architectural 4. Technical facts learned (API quirks, config, gotchas) → type: procedural 5. Terminology defined or clarified → type: terminological Include at least one engram_suggestion if ANYTHING was learned. An empty suggestions array means nothing worth remembering happened — this should be rare.
plur_session_scopeSession scopeAdjust or inspect the session default write scope MID-session — narrow, expand, or switch context without restarting the session (#243). op:"set" replaces the default scope used by unscoped plur_learn calls for the rest of the session AND the org context that decides which enterprise hosts plur_recall dials (it needs an open session: with none open it refuses, since no id-less call reads a session-less slot); op:"show" reports the effective scope and how it was derived (project config, session_start default, or a mid-session set); op:"clear" reverts to the scope the session started with. Use w…
plur_session_startSession StartStart a session — inject relevant engrams for your task. Call at the beginning of every session.
plur_similarity_searchSimilarity searchread-onlySearch engrams by cosine similarity, returning scores. Used for dedup classification — scores > 0.9 indicate duplicates, 0.7-0.9 related, < 0.7 new.
plur_statusStatusread-onlyReport memory-system health and this session's memory activity counters. Use when asked why something was or was not remembered.
plur_stores_addAdd storeRegister 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_listList storesread-onlyList 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_scopeSuggest scoperead-onlySuggest 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). Candidates below min_confidence (default: scope_routing.min_confidence config, else 0.15) are suppressed — a lone coincidental keyword scores ≈0.12 and is noise, not signal (#67…
plur_syncSyncSync 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). Also flushes the remote-write outbox — retries team-scoped writes that were queued while their remote store was unreachable; use plur_outbox to inspect what is queued.
plur_sync_statusSync statusread-onlyCheck git sync status — whether repo is initialized, has remote, is dirty, ahead/behind counts
plur_tensionsTensionscan change or delete dataTension 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:<engram_id> (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_purgePurge Tensionscan change or delete dataPurge all conflict relations from local engrams — removes accumulated false positives from the legacy tension-detection system
plur_timelineTimelineread-onlyQuery the episodic timeline — retrieve past episodes filtered by time, agent, or search
plur_validate_metaValidate meta-engramcan change or delete dataTest a meta-engram template against engrams from a new domain — updates confidence and domain_coverage. A meta-engram that fails validation in a third domain is demoted (top → mop) or, below top level, RETIRED.
plur-memoryOpen the PLUR memory viewer in a browser.
recallSearch PLUR memories
syncSync PLUR memories across devices via git
sync-statusCheck PLUR sync status
Compare and alternatives
Featured in
Signals
- Stars
- 308
- Forks
- 37
- Open issues
- 560
- Contributors
- 13
- Last commit
- Oct 22, 2026 (6 days ago)
- Last release
- Oct 22, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.plur-ai/plur- Version
- 0.22.1
- Auth
- No auth
- Packages
- npm @plur-ai/mcp
- License
- Apache-2.0
- Repository
- github.com/plur-ai/plur
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Cite this page
Plur MCP server. Agent Mart. https://agentmart.dev/connectors/plur-ai-plur (last updated 2026-10-24)