Built natively on WebMCP

Your AI, your memory,your rules.

ChatGPT's memory is a black box. Recall is the website that fixes it: your AI's memory of you — fully visible, fully editable, fully audited. Only your ChatGPT agent can read or write it, via WebMCP.

WebMCP tools
6
Agent LLMs
0

ChatGPT is the agent

Audit-trail
Signed

JWS-verified

Activity feed
live
chatgpt.com recall.appjust now

query(hobbies)

returned 3 facts

chatgpt.com recall.app2m ago

addFact(Prefers morning meetings)

fact added

chatgpt.com recall.app11m ago

forgetFact(outdated project note)

soft-deleted · reversible

recall.app recall.app1h ago

updateFact(Speaks English + Yoruba)

fact updated

every entry is signed & reversibleJWS-verified
Browser-mediated · origin-scoped · capability-token authenticated

The problem

ChatGPT's memory is a black box.

Power users waste time re-explaining context ChatGPT should remember. Professionals avoid using memory for sensitive client work because they cannot audit it. And every agent app that wants memory today has to build its own — from scratch.

You can't see what it knows.

Memory edits are a flat list with no search, no context, no provenance. There is no API.

Edits are destructive.

Deleted facts are gone forever. There's no rollback, no history, no receipt.

No way to verify a response.

ChatGPT claims it 'remembered' something — you cannot check which fact was used, or when.

Locked to one agent.

Memory built in ChatGPT cannot travel with you to Claude, Gemini, or your own agent app.

The core innovation

The website is the subject. The agent is the client.

Most submissions measure innovation by counting features. Recall measures it by inverting a topology — and ships the inversion as the product. The six tools are the surface area; the inversion is the value.

ChatGPTdocument.modelContext.registerTool({ ... })
// fromOrigins: ['https://chatgpt.com']

The website is the source of truth.

Recall IS the memory — not a view onto a server-side store. Your facts live at a TLS origin you control.

The agent is the client.

ChatGPT calls Recall's tools through the browser. Recall runs zero LLMs of its own — no second model to fail.

The browser is the trust boundary.

Tool calls are mediated by the page's existing sandbox and scoped to recall.app's origin. Capability tokens authenticate every call.

The audit log is the receipt.

Every agent action is appended to a signed, exportable log. Any claim ChatGPT makes about your memory is checkable.

The tool surface

Six tools your agent can call.

Recall publishes six WebMCP tools through document.modelContext.registerTool(). Each carries the spec's annotations so ChatGPT knows whether a tool is read-only and whether it accepts untrusted content.

01

query()

read-onlyuntrusted

Read the user's memory by natural-language query.

02

addFact()

read-onlyuntrusted

Write a new fact to the user's memory.

03

updateFact()

read-onlyuntrusted

Update an existing fact's content or tags.

04

forgetFact()

read-onlyuntrusted

Forget (soft-delete) a fact — reversible from the audit log.

05

summarize()

read-onlyuntrusted

Deterministic top-N summary of the memory vault.

06

timeline()

read-onlyuntrusted

Chronological audit-log timeline of agent actions.

Try the tools

Play the agent. Call every tool yourself.

You don't need ChatGPT to explore Recall. Pick a tool, edit the call args, and see the exact response shape ChatGPT would receive — plus the signed audit entry Recall would record.

WebMCP Tool Playgrounddemo mode

query()

Retrieve relevant facts from the user's memory vault. Use when the user asks what you know about them, or when you need to check the user's stated preferences.

readOnlyHint: trueuntrustedContentHint: false

Edit the JSON, then call the tool. The playground returns the same shape ChatGPT would receive.

as chatgpt.com → recall.app
inputSchemaJSON Schema
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Natural-language query, 1-200 chars"
    },
    "tags": {
      "type": "array",
      "description": "Optional tag filters",
      "items": {
        "type": "string"
      },
      "maxItems": 5
    },
    "limit": {
      "type": "integer",
      "description": "Max facts to return (default 10, max 50)",
      "default": 10
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}
demo memory vault7 facts · 3 audit entries
  • Hobbies: rock climbing, bouldering, and trail running.

    fact_01 · hobbies, sport · score 12

  • Vegetarian — no meat or fish; eggs and dairy are fine.

    fact_02 · diet, preference · score 8

  • Prefers morning meetings (08:00–11:00 local time).

    fact_03 · work, preference · score 6

  • Working on the WebMCP Challenge.

    fact_04 · work, project · score 15

  • Lives in the Lagos timezone (WAT, UTC+1).

    fact_05 · location, preference · score 9

  • Speaks English and Yoruba fluently; learning Arabic.

    fact_06 · language · score 7

  • Uses a mechanical keyboard and prefers dark-mode UIs.

    fact_07 · preference, tools · score 4

The playground runs against an in-memory demo vault (clearly labelled demo: true). No sign-in, no persistence, no data leaves your browser.

How it works

From sign-in to audited answer in four steps.

  1. 1

    Sign in once.

    Authenticate at recall.app. GitHub OAuth is used for authentication. ChatGPT OAuth will be added when available to third parties.

  2. 2

    See your memory.

    Recall renders your facts as a canvas of editable, taggable cards. Add, edit, or forget any fact directly — nothing is hidden.

  3. 3

    Ask ChatGPT anything.

    Open ChatGPT in its in-app browser. ChatGPT calls recall(query=…), addFact(…), or forgetFact(…) through the WebMCP tools Recall registered.

  4. 4

    Audit every call.

    Every tool call appears in your activity feed in real time, signed and reversible. Export the whole log as a verifiable JSON bundle.

The stack

Honest engineering, no buzzword baggage.

No blockchain, no Kubernetes, no multi-agent orchestration, no RAG pipeline in the MVP. Each choice below is justified by the product — and each rejected alternative is documented in the README.

Next.js 16

App Router · React Server Components

WebMCP

document.modelContext tool surface

shadcn/ui + Tailwind

Accessible, composable primitives

Prisma

Type-safe persistence (SQLite → Postgres)

WebCrypto

Capability tokens · signed audit log

GitHub Actions

Lint · typecheck · build on every PR

Take back the memory your AI keeps on you.

Recall is open source under the MIT License. Clone the repo, deploy to Vercel, and point ChatGPT at your own memory vault.