tekgnosis avatar

Gnosis Memory

tekgnosis/gnosismemory

Persistent memory that follows you across Claude, ChatGPT, Cursor, and any MCP client. Exposes memory_add, memory_search, and memory_update tools with typed entries (fact, decision, task, preference, path) that survive session boundaries. Semantic search runs under 150ms, deduplication catches both exact and near-duplicate memories, and everything encrypts at rest with AES-256. You can create shared collections for team knowledge, isolate agent identities with separate namespaces, and export your entire corpus as JSON anytime. Hosted service with OAuth through GitHub or Google. Reach for this when you're tired of re-explaining context every conversation or need the same memory accessible whether you're in VS Code, a CLI tool, or switching between AI providers on different devices.

tools
21
transport
HTTP
last updated
Jun 9, 2026

Install

From registry metadata
$ npx add-mcp https://gnosismemory.com --name memory

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http memory https://gnosismemory.com

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 21 tools

Verified live against the running server on Nov 6, 2026.

init_core_memoriesRun ONCE at conversation start. Loads behavioral prefs + recent context. Previews carry a 'complete' flag: true = full content shown; false = opening only, memory_retrieve(id) for the rest. After init, use memory_search for specific queries. Shared collections -> 'collections'...2 params

Run ONCE at conversation start. Loads behavioral prefs + recent context. Previews carry a 'complete' flag: true = full content shown; false = opening only, memory_retrieve(id) for the rest. After init, use memory_search for specific queries. Shared collections -> 'collections'...

Parameters* required
machine_idstring
Machine id for workspace paths (run hostname). e.g. p620. Omit if no filesystem.
querystring
Optional turn-one search (piggybacks on init). Top 3 auto-expanded if score >= 80.
memory_addStore a memory. Several memories in one call -> memories=[{content, topics, ...}]; top-level topics then apply to every item. BEFORE params decide: (1) TYPE? (2) what search finds this later? (3) happened, or aspirational? (4) WHO must act on it? TYPE by example: "User prefers...16 params

Store a memory. Several memories in one call -> memories=[{content, topics, ...}]; top-level topics then apply to every item. BEFORE params decide: (1) TYPE? (2) what search finds this later? (3) happened, or aspirational? (4) WHO must act on it? TYPE by example: "User prefers...

Parameters* required
artifactstring
Commit SHA or filename -> auto-added to topics. e.g. "f4e5d6c", "oauth.py".
collectionstring
Shared collection by name. Omit=default. "me"/"personal"/agent name=own namespace; "owner"/"parent"=account primary (member-gated).
contentstring
Memory text — plain prose only, never a serialized object. topics, macro_topics and type are their OWN parameters; put them there, never inside this text. Self-contained: subject + why, front-loade...
ephemeralboolean
Auto-expire 90d.
expires_atstring
YYYY-MM-DD, or "never". Overrides ephemeral.
forceboolean
Skip dup check. Testing only.
macro_topicsarray
The project or domain this memory is ABOUT — decide this first. 1-3 lowercase (e.g. gnosis, magi). Optional, but it almost always applies: use it when the memory belongs to a named project; it keep...
memoriesarray
Several memories at once: each item takes the same fields as this call (content, topics, type...). Top-level topics/macro_topics are added to every item.
refstring
Parent task/ticket id -> auto-added to topics. e.g. "a1b2c3d4", "GH-142".
signalstring
Also signal recipient (email, agent, "owner"). Needs a SHARED collection ("me"/personal rejected up-front — nothing stored).
statusstring
Initial task status. Default pending.one of pending · active · blocked · review · done
stepsarray
Task checklist -> "- [ ]" boxes. Requires title.
summarystring
Task prose: state/blockers/decisions -> "## Summary" block. type task/task_done. Not type="summary" (that is memory_consolidate).
titlestring
Task title (structured). Requires type="task". Not with content.
topics*array
REQUIRED. Then the specific search keywords: single lowercase, no _ or -. First = "user" for preferences. Not macro_topics.
typestring
fact=knowledge, preference=user pattern, decision=choice+reason, path=location, task=actionable, task_done=complete, result=an output or finding.one of fact · preference · decision · path · task · task_done
memory_add_batchStore multiple memories at once. Same rules as memory_add, applied per item. SHAPE: one ITEM here == one memory_add call. Same field names, same meaning. The ONLY difference is the container: memory_add takes them as flat parameters, this takes a list of objects. An item objec...4 params

Store multiple memories at once. Same rules as memory_add, applied per item. SHAPE: one ITEM here == one memory_add call. Same field names, same meaning. The ONLY difference is the container: memory_add takes them as flat parameters, this takes a list of objects. An item objec...

Parameters* required
collectionstring
Shared collection by name. Omit=default. "me"/"personal"/agent name=own namespace; "owner"/"parent"=account primary (member-gated).
forceboolean
Skip dup check. Testing only.
memories*array
Array of memory objects to store
signalstring
Also signal recipient with ALL stored ids. Needs a SHARED collection ("me"/personal rejected up-front — nothing stored).
memory_searchSearch memories by relevance. Up to 32 results. Query = ALL nouns from the user's message, not just the main one (ranking is automatic). "How does the app cache API calls?" -> "app cache api calls" complete=false results are truncated -> memory_retrieve(id) for full content. A...4 params

Search memories by relevance. Up to 32 results. Query = ALL nouns from the user's message, not just the main one (ranking is automatic). "How does the app cache API calls?" -> "app cache api calls" complete=false results are truncated -> memory_retrieve(id) for full content. A...

Parameters* required
collection_filterstring
Limit to one collection name, or "personal". Omit=all. A slug this namespace holds no grant on (even one the account can list elsewhere) returns 0 rows plus a no_grant explanation, never silence.
expandboolean
Full content for all results (~16K tokens/page). Dedicated research agents only.
query*string
Search query -- all relevant nouns.
type_filterstring
Filter by type: fact/preference/decision/path/task/task_done/summary/result. Omit=all.
memory_deep_searchBroad search for a FULL sweep -- every hit on a topic (e.g. before memory_consolidate), not a conversational lookup (that is memory_search). Up to 128 results; requires 2+ keywords ("python" alone = too broad). Scores: 30+ excellent, 20+ good, <20 weak. Full sweep of a topic i...4 params

Broad search for a FULL sweep -- every hit on a topic (e.g. before memory_consolidate), not a conversational lookup (that is memory_search). Up to 128 results; requires 2+ keywords ("python" alone = too broad). Scores: 30+ excellent, 20+ good, <20 weak. Full sweep of a topic i...

Parameters* required
collection_filterstring
Limit to one collection name, or "personal". Omit=all. A slug this namespace holds no grant on (even one the account can list elsewhere) returns 0 rows plus a no_grant explanation, never silence.
expandboolean
Full content for all results (50K+ tokens). Dedicated large-context agents only.
query*string
Search query -- 2+ keywords.
type_filterstring
Filter by type: fact/preference/decision/path/task/task_done/summary/result. Omit=all.
memory_retrieveGet full content by ID. Use when search returned complete=false. Batch: memory_retrieve(["id1","id2"]). Skip if complete=true (preview is already full).1 params

Get full content by ID. Use when search returned complete=false. Batch: memory_retrieve(["id1","id2"]). Skip if complete=true (preview is already full).

Parameters* required
ids*array
Memory IDs to fetch. e.g. ["abc-123","def-456"].
artifact_writeStore or update a long document (markdown, JSON or text) behind a pointer memory. For agents.md, skills.md, assertions.md, a project plan: anything past one memory's 768-token cap. CREATE: name ("assertions.md"), summary (the pointer memory: what the document is and why; searc...12 params

Store or update a long document (markdown, JSON or text) behind a pointer memory. For agents.md, skills.md, assertions.md, a project plan: anything past one memory's 768-token cap. CREATE: name ("assertions.md"), summary (the pointer memory: what the document is and why; searc...

Parameters* required
artifact_idstring
Pointer memory id. Omit to create.
base_rev_idstring
UPDATE: the head rev_id you read.
bodystring
Whole document text.
collectionstring
CREATE: shared collection. Omit=default. "me"=personal.
contentstring
Replacement for section.
macro_topicsarray
CREATE: project/domain.
merged_rev_idsarray
Other heads this write resolves.
namestring
File name; extension sets the format (.md markdown, .json json, else text).
occurrenceinteger
0-based pick when the section path matches more than one heading.
sectionvalue
Markdown heading path (array of heading texts) or JSON pointer string.
summarystring
CREATE: pointer memory text. Front-loaded: what the document is + why.
topicsarray
CREATE: pointer search words.
artifact_readRead an artifact by its pointer memory id (memory_retrieve on a pointer shows an "artifact" block with head_rev_id and outline). Bodies over 40,000 characters return the outline: read a section (heading path or JSON pointer) or page=0,1,... Returns rev_id; pass it as base_rev_...5 params

Read an artifact by its pointer memory id (memory_retrieve on a pointer shows an "artifact" block with head_rev_id and outline). Bodies over 40,000 characters return the outline: read a section (heading path or JSON pointer) or page=0,1,... Returns rev_id; pass it as base_rev_...

Parameters* required
artifact_id*string
Pointer memory id.
occurrenceinteger
0-based pick among duplicate headings.
pageinteger
0-based 40,000-character page.
rev_idstring
Older revision. Omit=head.
sectionvalue
Markdown heading path (array) or JSON pointer string.
artifact_historyList the revisions of an artifact (rev_id, parent, seq, time, author, pinned) and its heads. conflict=true means divergent heads to merge.1 params

List the revisions of an artifact (rev_id, parent, seq, time, author, pinned) and its heads. conflict=true means divergent heads to merge.

Parameters* required
artifact_id*string
Pointer memory id.
artifact_pinPin a revision so retention thinning never removes it (pinned=false unpins).3 params

Pin a revision so retention thinning never removes it (pinned=false unpins).

Parameters* required
artifact_id*string
pinnedboolean
Default true.
rev_id*string
artifact_deleteDelete an artifact: every revision and its pointer memory. Permanent. confirm must equal the artifact name. memory_delete refuses a pointer; use this.2 params

Delete an artifact: every revision and its pointer memory. Permanent. confirm must equal the artifact name. memory_delete refuses a pointer; use this.

Parameters* required
artifact_id*string
confirmstring
The artifact name, e.g. "assertions.md".
artifact_orphansList artifact revisions whose pointer memory is gone (a delete on one replica racing a save on another). Nothing is auto-deleted; export includes them.

List artifact revisions whose pointer memory is gone (a delete on one replica racing a save on another). Nothing is auto-deleted; export includes them.

No parameters. Call it with no arguments.

memory_editEdit a memory. Provide only what changes; omitted fields untouched. Modes: 1. Content replace (content [+topics/macro_topics]): full rewrite, re-embeds. Do it the instant the user corrects a memory ("actually..."). 2. Metadata patch (topics/type/expiry, no content): type/expir...22 params

Edit a memory. Provide only what changes; omitted fields untouched. Modes: 1. Content replace (content [+topics/macro_topics]): full rewrite, re-embeds. Do it the instant the user corrects a memory ("actually..."). 2. Metadata patch (topics/type/expiry, no content): type/expir...

Parameters* required
add_macro_topicsarray
macro_topics to add; the rest stay.
add_stepsarray
Append checklist items (milestones). Re-embeds.
add_topicsarray
Topics to add; the rest stay.
artifactstring
Commit SHA or filename -> merged into topics. e.g. "f4e5d6c".
collectionstring
Collection for signal routing (only with signal param).
contentstring
New memory text — plain prose only, never a serialized object (re-embeds). topics, macro_topics and type are separate parameters; put them there, never inside this text.
edit_stepobject
Rewrite a step's text, preserving checkbox state. Re-embeds.
ephemeralboolean
Set time-bound (auto-expires in 90 days)
expires_atstring
YYYY-MM-DD, or "never". Overrides ephemeral.
macro_topicsarray
New macro_topics (REPLACES all). 1-3 lowercase.
memory_id*string
ID of memory to edit
outputstring
Durable finding on this update -> linked fact memory (inherits task topics). Atomic, front-loaded. Over-length rejected. Many findings -> memory_add.
refstring
Parent task/ticket id -> merged into topics. e.g. "a1b2c3d4".
remove_macro_topicsarray
macro_topics to drop; the rest stay.
remove_stepsarray
Remove steps by 0-based index (pre-call state). Re-embeds.
remove_topicsarray
Topics to drop; the rest stay. At least one must remain.
set_statusstring
Task status. "done" auto-sets type=task_done (reverting reverts); type follows status. See Combine rules.one of pending · active · blocked · review · done
set_summarystring
Replace the task's "## Summary" block ("" clears). Re-embeds. Not type="summary" (that is memory_consolidate).
signalstring
Also signal recipient (email, agent, "owner") with this memory_id. Needs a SHARED collection ("me"/personal rejected).
togglearray
0-based checkbox indices to flip. e.g. [0,2]. See Combine rules.

+2 more parameters. See the server's own documentation for the full schema.

memory_deleteDelete memories by ID. Permanent. memory_delete(["id1","id2"]). Delete by filter: memory_search first, collect ids, then delete.1 params

Delete memories by ID. Permanent. memory_delete(["id1","id2"]). Delete by filter: memory_search first, collect ids, then delete.

Parameters* required
ids*array
Memory IDs to delete. e.g. ["abc-123","def-456"].
memory_consolidateCreate/replace a topic's executive summary. One per topic; replacing archives the old (restorable). WARNING: a bad summary poisons every future session. Do NOT consolidate from partial knowledge. BEFORE calling: (1) memory_deep_search the topic; (2) read 20+ memories, not prev...3 params

Create/replace a topic's executive summary. One per topic; replacing archives the old (restorable). WARNING: a bad summary poisons every future session. Do NOT consolidate from partial knowledge. BEFORE calling: (1) memory_deep_search the topic; (2) read 20+ memories, not prev...

Parameters* required
collectionstring
Shared collection by name. Omit = your personal namespace. The 10-memory floor counts THAT namespace, so a topic living in a collection must name it here or the count sees only your personal rows.
content*string
The summary. Present tense, self-contained: what it is, state, decisions, open questions.
topic*string
Topic to summarize. Lowercase. e.g. "python".
task_feedRecently-changed tasks, chronological (not ranked). For "what needs attention?" / "what changed?". Find tasks by content -> memory_search. Each: preview, progress [done,total], status, topics, collection. Default 32, max 500. Fan-out: no collection -> personal + all your colle...5 params

Recently-changed tasks, chronological (not ranked). For "what needs attention?" / "what changed?". Find tasks by content -> memory_search. Each: preview, progress [done,total], status, topics, collection. Default 32, max 500. Fan-out: no collection -> personal + all your colle...

Parameters* required
collectionstring
Scope to one collection. Omit=personal + all collections.
limitinteger
Max tasks to return. Default 32, max 500.
sincestring
ISO timestamp, or 24h / 2d / yesterday. Returns tasks updated after it.
statusstring
Omit for every task not done; done lists finished ones.one of pending · active · blocked · review · done
topicstring
Filter to one topic.
collection_manageManage shared collections (multi-user memory folders). list: your collections + invites. create. update: rename (display only; slug/keys unchanged). delete: owner only, 2-step -- call without confirm to see impact + token, repeat with confirm:"<slug>". Permanent. members: who'...8 params

Manage shared collections (multi-user memory folders). list: your collections + invites. create. update: rename (display only; slug/keys unchanged). delete: owner only, 2-step -- call without confirm to see impact + token, repeat with confirm:"<slug>". Permanent. members: who'...

Parameters* required
action*string
What to doone of list · create · update · delete · members · add_user
confirmstring
delete: 2-step. Call without it -> refusal names slug + member/memory impact; repeat with confirm:"<slug>". Permanent.
memory_idsarray
Memory IDs to publish (copy in; originals kept).
namestring
Collection name.
new_namestring
update: new display name (slug/keys unchanged). Type change not via update.
rolestring
"admin" = manages the collection (owner or admin may grant; the invitee needs a PIN to accept), "member" = can read and write, "reader" = can only read. Default: member.one of admin · member · reader
typestring
"collaborative" = everyone can read and write. "knowledge_pack" = only the owner writes, others can read. Default: collaborative.one of collaborative · knowledge_pack
userstring
Email or agent name to add/remove.
agent_manageManage agents (NAMESPACES under your account, sharing your token). An agent is a namespace, never a holder of key material: all crypto is the ACCOUNT's, and an agent id is never an input to a wrap, a seal or a KEK. Agents organise and scope what is visible; they do not own enc...11 params

Manage agents (NAMESPACES under your account, sharing your token). An agent is a namespace, never a holder of key material: all crypto is the ACCOUNT's, and an agent id is never an input to a wrap, a seal or a KEK. Agents organise and scope what is visible; they do not own enc...

Parameters* required
action*string
What to doone of list · create · update · merge · delete
add_collectionsarray
update: grant or re-role only these lines; others are kept. [{slug, role}] or bare slugs (reader).
can_read_my_memoriesboolean
Deprecated -- use owner_access.
collectionsarray
The collection whitelist: [{slug, role}] or bare slugs (reader). create grants these; update REPLACES the whole list (absent lines are revoked) -- to change one line use add_collections / remove_co...
confirmstring
delete: "destroy_data" PERMANENTLY deletes an agent that owns data (else 409 -> merge instead). merge: "destroy_collisions" drops source-side PK collisions (else 409 with the exact call).
from_agentstring
merge source (alias for name).
namestring
Agent name. For merge = SOURCE (consumed).
owner_accessstring
Agent access to your personal memories: none/reader/member. With update.one of none · reader · member
remove_collectionsarray
update: revoke only these slugs; others are kept.
to_agentstring
merge destination (absorbs source). Default = your primary.
to_collectionstring
merge: temporarily disabled, refused with 503 (task 8cfe199b). Use to_agent.
signalInter-agent signals -- sticky notes pointing at a memory_id. Both parties must share a collection. send: post to a teammate. check: read pending (removes nothing). ack: mark handled -- stamps delivered_at, the row stays, NOTHING IS DELETED. ACK MEANS CLOSED, NOT DONE: it asser...6 params

Inter-agent signals -- sticky notes pointing at a memory_id. Both parties must share a collection. send: post to a teammate. check: read pending (removes nothing). ack: mark handled -- stamps delivered_at, the row stays, NOTHING IS DELETED. ACK MEANS CLOSED, NOT DONE: it asser...

Parameters* required
action*string
send=post, check=read pending, ack=close (a non-destructive stamp; nothing is deleted).one of send · check · ack
collectionstring
send: shared collection (both parties must be members).
expires_hoursinteger
For send: hours until signal expires. Default 48.
memory_idsarray
For send: memory IDs to point the recipient to.
recipientstring
send: agent name, email, or "owner" (the human account holder).
signal_idsarray
ack: signal IDs to close -- ones nothing further is owed on.
messageDirect inter-agent text that DIES ON ACK. Use for receipts, FYIs and short replies; use signal to point at a memory. send/check/ack. LOSABLE BY DESIGN: the first session of the recipient name to ack deletes it for every session of that name, an unacked message is deleted at ex...6 params

Direct inter-agent text that DIES ON ACK. Use for receipts, FYIs and short replies; use signal to point at a memory. send/check/ack. LOSABLE BY DESIGN: the first session of the recipient name to ack deletes it for every session of that name, an unacked message is deleted at ex...

Parameters* required
action*string
send=post, check=read pending, ack=DELETE for every session of your name.one of send · check · ack
collectionstring
send: shared collection (both parties must be members).
expires_hoursinteger
send: hours until the message is deleted unread, 24-720. Default 168.
message_idsarray
ack: message IDs to delete.
recipientstring
send: agent name, email, or "owner" (the human account holder).
textstring
send: the message, up to 4000 characters.
accountAccount state + billing. Returns URLs only -- user clicks to pay; never charges silently. Pick by intent: "what plan am I on?" -> info (tier, subscription, capabilities, upgrade/downgrade SKUs; permanent tiers og/truebeliever/ogdev cannot downgrade) "what can I buy?" / "how mu...3 params

Account state + billing. Returns URLs only -- user clicks to pay; never charges silently. Pick by intent: "what plan am I on?" -> info (tier, subscription, capabilities, upgrade/downgrade SKUs; permanent tiers og/truebeliever/ogdev cannot downgrade) "what can I buy?" / "how mu...

Parameters* required
action*string
Which account operation to run.one of info · plans · checkout · portal · donate
amount_centsinteger
donate: amount in cents (100-500000).
sku_idstring
checkout: SKU id from plans (e.g. "plus_monthly", "pro_annual").

Sponsors

Readme

Details

Repository
github.com/tekgnosis/gnosismemory
Website
gnosismemory.com
Categories
AI & LLM Tools, Search & Web Crawling
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related AI & LLM Tools MCP servers

View all
1flsteven87 avatarLlm Wiki Mcpflsteven87/llm-wiki-mcpMCP server for Karpathy-style LLM wikis: persistent markdown your agent grows over time.0stars
2agenson-tools avatarAgent Output Guardagenson-tools/agent-output-guard-mcpValidate and verify data from other agents before acting on it. Zero LLM costs.0stars
3br0ski777 avatarVector Search APIbr0ski777/vector-search-x402In-memory vector search with TF-IDF and cosine similarity. x402 micropayment.0stars
4marras0914 avatarAgent Toolbelt Mcpmarras0914/agent-toolbelt19 focused API tools for AI agents: contract review, prompt optimizer, context packing, and more.0stars
5mdfifty50-boop avatarAgent Costcentermdfifty50-boop/agent-costcenter-mcpMulti-agent billing and cost allocation tracking0stars
6mikerawsonnz avatarTraced Llm Proxymikerawsonnz/gosce-agentsProxy Gemini (Vertex AI) completions wrapped in OpenTelemetry trace spans; returns the answer plus t0stars