# Renor — agent plane

Renor is a private memory layer for AI agents: it keeps durable context so an agent does not have to
be told the same thing twice. This file is the machine-readable, JavaScript-free view of the public
site. A human browser gets the normal page; a client that asks for markdown gets this.
See `https://renor.cloud/agents.md`.

## Connect

- MCP endpoint: `https://mcp.renor.cloud/mcp` (Streamable HTTP). This is the only MCP URL Renor hands
  out; a per-tenant host rejects a platform connect token.
- Authentication: remote MCP with an owner account. An unauthenticated request reads and writes
  nothing.
- Setup: point your MCP client at the endpoint above. Renor does not publish a CLI wrapper for this
  step, and no `npx` package is required to connect.

Call `get_context` before substantive work with the current request, and `remember` when the user
asks you to keep something. Both are the primary verbs; the rest are the same surface's supporting
tools.

**Provenance, stated because the distinction matters:** the list below is read off the **hosted**
registry in `engine/src/mvp/server.ts` (the surface an alpha user connects to; the repo's mapping is
`engine/docs/architecture/MCP-TOOL-SURFACES.md`). It is a **mirror of the code, not a measurement of
the live service** — this change did not run `tools/list` against the public endpoint. If your client
lists different tools than these, trust `tools/list` and tell us.

## Tools on the hosted surface

- `get_context` — primary read: current lifecycle facts first, then relevant notes via semantic search.
- `remember` — primary write: pass the user's statement; subject/predicate/object are extracted when the statement supports them.
- `save_memory` — durably save a subject-predicate-object fact; a newer value supersedes the old one, which stays in history. Returns a receipt.
- `retrieve_memory` — current value(s) for a subject; optional predicate filter, superseded history (`include_history`) or a point-in-time view (`as_of`).
- `remember_note` — append a timestamped line to the daily note; embeddings are stamped by `index_memory`.
- `index_memory` — walk markdown notes into the SQLite index (chunks, FTS, entities); stamps new/changed notes when an embedding provider is configured.
- `search_memory` — semantic search over indexed notes (embeddings; the configured provider must match the index dimensions).
- `search_text` — BM25/FTS keyword search over indexed note chunks; no embeddings call.
- `search_history` — deterministic lexical search over owner-promoted history notes, returned as citations with provenance; no semantic search.
- `lookup_entity` — find a person, project or concept by name or alias; no embeddings call.
- `memory_status` — counts of notes/chunks/entities/facts and whether semantic search is configured.
- `export_memory` — the raw canonical markdown ledger: the portable source of truth that survives an index rebuild.

## Routes for humans

- `https://renor.cloud/` — what Renor is
- `https://renor.cloud/how-it-works` — how memory is captured, organized and recalled
- `https://renor.cloud/research` — evidence and results
- `https://renor.cloud/pricing` — plans and limits
- `https://renor.cloud/culture` — operating principles

**Markdown is served on three of those paths, and only those three.** Send
`Accept: text/markdown` to `/`, `/how-it-works` or `/pricing` and you get markdown instead of the
JavaScript app. Every other path — `/research`, `/culture`, `/privacy`, `/lgpd`, `/terms` and anything
unknown — serves the app: there is no markdown plane for it yet, and asking for markdown there does
not change that.

NEGOTIATED: / /how-it-works /pricing

The planes are also reachable directly, without any negotiation:

ALIASES: /agents.md /agents/how-it-works.md /agents/pricing.md /how-it-works.md /pricing.md

(The `NEGOTIATED:` and `ALIASES:` lines are the machine-checkable form of the two sentences above.
`tests/agent-plane.test.ts` asserts that `NEGOTIATED:` equals the middleware's matcher and that every
`ALIASES:` path resolves, so this file cannot promise routing the site does not have.)
