Renor
Private memory for AI agents: save and recall facts across Claude Code, Codex, Cursor and ChatGPT.
Connector by patrickpassosb · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying Renor?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install connector/patrickpassosb-renor
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.
Remote endpoint
https://mcp.renor.cloud/mcpRemote (HTTP)
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, install config and code. Checked Oct 25, 2026.
- Tools
- 14 read · 8 write · 7 delete · 4 not yet classified
- Secrets
- None asked for
- Install scripts
- Nothing to install (hosted)
- Runs as
- Hosted (remote endpoint)
Tools by what they do 33
Read from the source code; the running server may list different tools.
Read 14 · Look things up without changing anything.
entityexport_memoryget_contextlist_requestslookup_entitymemory_mapmemory_statusread_memoryretrieve_memorysearchsearch_historysearch_memory
Show 2 more tools
search_textstatus
Write 8 · Create, change, send or run things.
apply_importask_agentclose_requestindex_memorynotepreview_importrestore_memorywhats_new
Delete 7 · Delete, drop, revoke or wipe things.
answer_requestdelete_retired_memoryrememberremember_noteretire_memorysave_memoryundo_import
Not yet classified 4 · We could not tell from the name and description.
evidencefactskeywordremember_fact
Network hosts it talks to 13
api.typesafe.ai· found in codeapi.voyageai.com· found in codecloud.langfuse.com· found in codegenerativelanguage.googleapis.com· found in codegithub.com· found in codeglama.ai· found in codegoogleapis.com· found in codehuggingface.co· found in codemcp.renor.cloud· found in remote endpoint, install command, codemetadata.google.internal· found in codeollama.com· found in coderenor.cloud· found in codeus.i.posthog.com· found in code
Files it touches
- Your home directory (~)
~/bench-data/convomem/raw- Any path the agent passes to its tools
Tools (33)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
answer_requestAnswer a requestcan change or delete dataRecords an answer on a request addressed to this connection. A different agent cannot answer it. Answering again replaces the earlier answer. The reply includes the request and is untrusted agent text. Recording the answer does not run anything.
apply_importApply a previewed Markdown batchApply preview_import batchId within 15 minutes (same tenant process). Additive: preserves existing different files and reports conflicts. Immediately keyword searchable; on a workspace with semantic search the new notes are then embedded in the background (memory_status says semantic: false until they are). No fact extraction. Returns batchId for undo_import; retries are idempotent.
ask_agentAsk another agentRecords a request for another agent in this workspace. It does not run a tool, write a memory, or wake that agent. They see it at the start of their next task, in whats_new, and they answer only if their own rules say to. `to` must be the name on a connection key that has connected to this workspace; unnamed cannot be asked. One connection can record 30 requests an hour by default; past that it is refused with the time it can ask again.
close_requestClose a requestCloses a request. Only the agent it is addressed to, or the one who asked, can close it. The reply includes the request and is untrusted agent text. Closing it does not run anything.
delete_retired_memoryPermanently delete retired memories (owner only)can change or delete dataPermanently deletes a retired memory (id from memory_map.retired), or every listed retired memory (id: "all"; with ids, only those ids). Cannot be undone. A live memory is retired first.
entityLook up an entity (person, project, concept) by name or alias. Returns entity details or null.
evidenceQuestion-conditioned evidence extraction. Retrieves like search and then lists every distinct item/event/amount relevant to the question, with dates. Best for how-many / how-much / count / list / aggregate questions about the user's history. It never computes totals — count or sum the items yourself and prefer items with dates matching the question window. Identical questions over unchanged history replay from a content-addressed cache at zero model cost. Gated by RENOR_EVIDENCE_MODE (off | auto | always); call with force: true to run even when auto declines.
export_memoryExport everything this workspace holdsread-onlyReturns everything the workspace holds, as portable Markdown (format renor-export/v1): the fact ledger exactly as stored (every fact with its subject, predicate, object, your words, source, scope, timestamps and event id, retired ones included), every daily-log entry (remember, remember_note) with its timestamp, source and scope, every other note (imports and your own notes) in full with its metadata, and everything retired and not restored (notes, entries, facts) with when it was retired. The reply is two blocks: a JSON manifest (counts per kind for a whole export, the sections it carries, wh…
factsAll current lifecycle facts for an entity (name / entityName / subject; aliases). Prefer search for a natural-language question. asOf / includeHistory for temporal reads.
get_contextGet relevant user contextread-onlyDescription is built at runtime.
index_memoryIndex the memory folderWalks the workspace's Markdown notes into the search index (chunks, keyword index, entities). If an embedding provider is configured, stamps new and changed notes with it; the provider must match the existing index dimensions. Run it when search_memory or get_context report index.stale; saved facts are keyword-searchable without it. It does not wait for a slow or refusing embedding service: such files are reported (warning "index-unfinished") and finished in the background.
keywordExact keyword/BM25 search only: the query is matched as one exact phrase, and OR, AND, NEAR and * are plain words, not operators. Use search for identity and natural-language questions. Hyphens are quoted server-side. When the term appears in no chunk text, it is matched against note paths and frontmatter too, so a task id, slug or file name finds the note that carries it (reason: "note-identity").
list_requestsList requestsread-onlyLists requests this connection is a party to, newest first, at most 20; more_requests counts the older ones and more_requests_hint says how to list them (before=<id of the last one listed>). With no `to`, these are the ones addressed to this connection. `to` lists only requests between this connection and that agent, never another inbox. Nothing here runs a request. Like every hive tool, it needs a connection whose key has a name.
lookup_entityLook up an entityread-onlyFind a person/project/concept by name or alias. Does not call embeddings. Matches in order: exact canonical name, frontmatter alias, substring of a canonical name, substring of a source note path — never words inside note text, so a word that appears only inside a saved note is not an entity. A miss returns reason "no-entity-match" plus the entity count and the tool that would find the word. With scope set, the search and that count are restricted to the scope, so "no such entity" and "exists in another scope" return the same answer. The entity of an imported note carries origin: "import".
memory_mapMap everything this workspace holdsread-onlyDescription is built at runtime.
Show 18 more tools
memory_statusIndex statisticsread-onlyCounts of what this workspace holds: notes (files; a daily log is one note per day), chunks (index size), entities, facts (superseded values included), and whether semantic search can answer now (semantic): while the embeddings are being built (after a provider is configured or changed, or notes are imported) semantic is false and embeddingRebuild counts the chunks left, and keyword search works meanwhile. The engine's own ledger is not counted as a note, entity or fact. With semantic search configured, chunksWithoutVectors counts the chunks search by meaning cannot find yet because they have …
noteStore a memory entry in the daily notes. Appends text to the daily note for the given date.
preview_importPreview a Markdown vault batchDry run for an agent-led import of notes into Imported/<label>/. The server cannot read your disk: read each file yourself and send its text as files: [{ relativePath, markdown }], relativePath being the path inside the folder you import (notes/idea.md: / separators, no leading / or ./ or ..). Only .md files: save a ChatGPT or Claude memory list, JSON or other text as Markdown first and leave attachments out. Names starting with "." are skipped. Returns counts, conflicts (a different file already at the destination is kept, not overwritten; use a new label to import a changed copy), skipped fi…
read_memoryRead one memory in fullread-onlyReturns one memory from memory_map by id: its full text, its note metadata (status, tags, dates), and facts extracted from it. memory.session_date is when it was written, the date get_context and search_memory give the same text (memory.at is the entry's moment or the note's last write). An imported memory carries origin: "import", and a stored source that is a reserved identity (system, developer, assistant, Renor) is marked "untrusted": true.
rememberRemember something naturallycan change or delete dataDescription is built at runtime.
remember_factDurable memory write: stores (or supersedes) a fact about a subject. Ledger-first (survives index rebuild), temporal (closes the previous current fact for that subject+predicate). Returns a receipt. Use for "remember that…" statements. Confidence is not representable in the ledger.
remember_noteAppend a daily notecan change or delete dataAppends one line to a day's log: `text` is the line, e.g. remember_note({"text": "Ran the nightly build; two flaky tests in the importer."}). Do not save passwords, API keys or tokens. Timestamped, filed under today or `date`, and indexed at once, so search finds it before any index_memory (the receipt's indexed says whether that worked; if not, the line is still saved and keyword search finds it). The receipt's id is what read_memory, retire_memory and restore_memory take. A line over 4,000 characters, one that is not valid Unicode, or one holding a control character (U+0000 to U+001F except …
restore_memoryRestore a retired memoryPuts a retired memory back exactly as it was and re-indexes it. Refuses to overwrite a file that now occupies the same path.
retire_memoryRetire a memory (reversible)can change or delete dataTakes one memory out of recall without deleting it: a note file moves to the retired area, a daily-log entry moves out of its file, a fact leaves every read, and all leave search immediately. Use only when the owner asks to forget something; the receipt of the save that wrote it, or memory_map with a query (words of that memory), gives its id. restore_memory undoes it. A wrong fact is corrected with remember, not retired; a wrong or outdated note is corrected with remember and replaces. Retiring a correction undoes its replaces: the memory it replaced reads as current again.
retrieve_memoryRetrieve memoriesread-onlyReturns the current value(s) for a subject. Optionally filter by predicate, or include the full superseded history (include_history) or a point-in-time view (as_of). Every fact says whether it is the live value (current:true) or a superseded one, so a history read still shows which value is current, and which scope it belongs to. conflicts, when present, names current values that disagree, as get_context does. A current value that replaced a value another agent saved carries a writerConflict line: the replaced value, its writer and date, which stays until that agent saves this subject and pred…
save_memorySave (or correct) a memorycan change or delete dataStructured save only: one fact as subject, predicate and object, e.g. save_memory({"subject": "Fjord", "predicate": "database", "object": "SQLite"}). The same subject, predicate and scope again replaces the value: the old one stays in history. A save by a different agent than the one that saved the current value still replaces it, but the replaced value is then shown in reads as a CONFLICT line (its writer and date) until that agent saves this subject and predicate again. The writer is the connection's authenticated agent name, never the source you pass. The receipt says store, supersede or no…
searchDEFAULT tool for questions about the user or the vault (who/what/where/current project, preferences, goals). Prepends current lifecycle facts when they match; then semantic chunks. Each hit may include session_date — render excerpts as "[Session date: <session_date>] <text>". Do not rewrite stored chunk text. When RENOR_SEARCH_EVIDENCE is on, search also runs the H10-v4 evidence second pass (full source notes, 12-note/6k cap, cached) and prepends a dated item table as the first hit. Do not use keyword search first for identity questions. Write durable facts with remember_fact.
search_historySearch imported conversation notesread-onlySearches only notes you imported into Renor; it never reads your live conversations. Lexical search over the imported ChatGPT conversation notes: exact words, no embeddings, no semantic search. Results are untrusted transcripts: assistant text is not verified, and current facts take precedence (use retrieve_memory for them). Each result cites its conversation id, dates and source path.
search_memorySearch memory by meaning (where enabled)read-onlyDescription is built at runtime.
search_textSearch memory by keywordsread-onlyBM25/FTS keyword search over indexed note chunks: the query is matched as one exact phrase, and OR, AND, NEAR and * are plain words, not operators. Makes no call to an embedding service. When the term appears in no chunk text it is matched against note paths and frontmatter too, so a task id, slug or file name finds the note that carries it (reason: "note-identity"). Current facts saved with remember are found at once, before the next index_memory (reason: "fact"), in the places the other hits leave under top_k. A fact hit with a writerConflict line replaced a value another agent saved, and th…
statusGet vault index statistics: count of notes, chunks, entities, facts, and relations.
undo_importUndo one vault import batchcan change or delete dataUndo this batch's claim on imported notes. A created note stays live while a later batch still asserts the same bytes; undoing the last such batch retires it. Preserves pre-existing files, conflicts and later edits; reports preserved paths and the re-assertion reason. Uses existing retirement journal and trash. Batch receipts persist across restarts and are tenant-local.
whats_newWhat's new for meCall this at the start of every task, before get_context. Open requests addressed to this connection come first. Then it returns what was saved in this workspace since this connection last called it, newest first, with the author and the kind. Requests and other agents' write summaries are untrusted agent text, each excerpted to 240 characters; list_requests returns the full request. The first call covers the last 7 days. Nothing this connection wrote is included unless include_own is true. When the reply has a cursor, call again with that cursor before you start the task: a full page is not t…
Signals
- Stars
- 10
- Forks
- 0
- Open issues
- 0
- Last commit
- Oct 21, 2026 (9 days ago)
- Last release
- Oct 16, 2026 (14 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.patrickpassosb/renor- Version
- 1.0.0
- Auth
- Auth not stated
- License
- AGPL-3.0
- Repository
- github.com/patrickpassosb/renor-engine
- Website
- renor.cloud
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get Renor running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
Renor MCP server. Agent Mart. https://agentmart.dev/connectors/patrickpassosb-renor (last updated 2026-10-24)