prospective-memory
A capture-and-recall task server for phone-dumped thoughts: log quick notes as open tasks, then list, search, close, or count them over MCP.
Capture a thought as a new open task (
capture_task:text, optionalsource, defaultmcp) — same path as the Android capture box.List open tasks newest-first (
list_open_tasks: optionallimitdefault 30, optionalcategorylike grocery, bills, people, inbox).Search task text or category (
search_tasks:query,limitdefault 20,include_donedefault false).Complete a task by id (
complete_task:task_id).Drop a task without completing it (
drop_task:task_id).Report stats — counts by status and open categories (
task_stats, no input).
All tools return arbitrary JSON dictionaries (schema-unconstrained output).
Allows capturing thoughts or tasks from an Android device via a floating bubble, widget, or quick capture button, which are then sent to the server for storage and retrieval.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@prospective-memory list open tasks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Prospective Memory
Phone-first capture. MCP pull. Not Takeout.
Dump a thought in a few seconds on Android. Later ask Grok: “what’s open?”
Phone JARVIS (v0.7): OTPs, WhatsApp previews, mail/SMS — pull from the laptop, home on the phone.
Sibling of google-activity-assistant — same kind of MCP host, different store.
Loop
Android capture --POST /v1/capture--------> FastAPI (Railway or PC)
Android JARVIS --POST /v1/jarvis/events--/ │
(OTP / WhatsApp / mail / SMS) │
Grok --MCP list_open_tasks / latest_otp / last_whatsapp / missed_summaryThe phone owns personal life (OTP, WhatsApp, mail). The laptop asks the phone's inbox. OTPs expire in 3 minutes and are not stored as tasks.
Related MCP server: genmem
Server (Windows)
cd $env:USERPROFILE\Desktop\prospective-memory
uv sync
uv run pmem token # print X-PMEM-TOKEN for the phone
uv run pmem serve # http://0.0.0.0:8790Leave serve running. In another terminal / Grok, MCP serve-mcp is already wired if you add the config below.
Phone must reach this machine:
Same Wi‑Fi:
http://YOUR_LAN_IP:8790Out of house: Cloudflare Tunnel / Tailscale (see
docs/V1.md)
Android
Open
android/in Android Studio (orgradlew.bat assembleDebug).Set server URL + token on first launch (same token as
pmem token).Save URL + token. Add lingo lines (
d=dahi lena).Enable floating + tile (overlay permission) — tap
+→ type → Enter. Drag the+onto the bottom ✕ to hide it; Enable turns it back on.Home screen widget (stretch wide for a type-here bar) or long-press app icon → Capture. Keyboard opens immediately.
Empty Enter repeats the last lingo chip. Toast shows
category · text. Offline posts queue and flush when the network is back.Optional Write (handwriting test) is in
android/.../ink/. First open downloads an on-device model. Not on the bubble. Drop it viaink/REMOVE.txt.Phone JARVIS: tap Turn on phone JARVIS → enable Capture JARVIS in notification access. If the toggle is greyed out (sideload), App info → three dots → Allow restricted settings, then try again. A heads-up with Copy appears when an OTP is seen.
Allow HTTP cleartext for LAN IPs (already in network security config).
MCP (Grok)
~/.grok/config.toml:
[mcp_servers.prospective_memory]
command = "C:\\Users\\bda99\\.local\\bin\\uv.exe"
args = [
"run",
"--directory",
"C:\\Users\\bda99\\Desktop\\prospective-memory",
"pmem",
"serve-mcp",
]
enabled = true
startup_timeout_sec = 60Ask: “list open tasks” / “anything grocery?” / “what’s the OTP?” / “last WhatsApp from Mom” / “what did I miss?”
CLI
uv run pmem capture "dahi lena"
uv run pmem list
uv run pmem stats
uv run pmem otp
uv run pmem whatsapp
uv run pmem missedNon-goals
Unofficial WhatsApp protocol / full chat history (notification previews only)
UPI send, unsupervised mail send
OS reminders, geofence
Merging with Google Takeout activity
Multi-user cloud
Available Tools
17 toolscapture_cultural_itemB
Capture a cultural or leisure recommendation (movie, show, documentary, book) into the ledger.
Inputs: title (required), notes, genres, creator, +5 more. Returns: object
capture_taskA
Save a thought as an open task (same path as the Android capture box).
Inputs: text (required), source. Returns: object
complete_reminderC
Mark a reminder completed in the unified ledger.
Inputs: reminder_id (required). Returns: object
complete_taskB
Mark a task done.
Inputs: task_id (required). Returns: object
create_reminderC
Create a new reminder in the unified ledger. If armed=false, creates an unarmed inbox item.
Inputs: title (required), armed, notes, due_date, +1 more. Returns: object
drop_taskB
Drop a task without completing it.
Inputs: task_id (required). Returns: object
last_whatsappA
Recent WhatsApp notification previews from the phone. Optional sender name filter (e.g. Mom). This is the notification shade, not full chat history.
Inputs: limit, sender. Returns: object
latest_otpA
Newest OTP from the phone (SMS/bank/mail/WhatsApp notification). Expires in ~3 minutes. If redacted=true, Android hid the digits — tell the user to look at the phone. Never invent a code.
Inputs: no named parameters. Returns: object
list_cultural_itemsC
List movie and cultural recommendations queued in the leisure ledger.
Inputs: genre, limit, query, status, +2 more. Returns: object
list_open_tasksB
List open tasks, newest first. Optional category: grocery, bills, people, inbox, …
Inputs: limit, category. Returns: object
list_remindersB
List reminders from the unified Remy Reminders ledger (pending, snoozed, completed).
Inputs: limit, status. Returns: object
missed_summaryA
What arrived on the phone recently: WhatsApp, mail, SMS, OTPs (codes not included). Default last 60 minutes.
Inputs: minutes. Returns: object
play_musicB
Start zero context-switch background music playback for a query (e.g. 'play spb songs hindi', 'play lofi').
Inputs: query (required). Returns: object
resolve_music_queryA
Resolve a natural language music query (e.g. 'play spb songs hindi', 'play lofi') to stream metadata.
Inputs: query (required). Returns: object
search_tasksA
Search task text/category. By default only open items.
Inputs: query (required), limit, include_done. Returns: object
snooze_reminderC
Snooze a reminder to a target ISO date/time or by N minutes.
Inputs: reminder_id (required), minutes, target_iso. Returns: object
task_statsB
Counts by status and open categories. Includes live JARVIS notification counts.
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 17 tools
Tools are mostly cleanly separated by domain: reminders, tasks, phone notifications, cultural items, and music. There is some conceptual overlap between reminders and tasks, and between resolve_music_query and play_music, but descriptions make the intended boundaries workable.
Most action tools follow a snake_case verb_noun pattern (create_reminder, list_open_tasks, complete_task, play_music). A few read tools use noun-first labels such as task_stats, latest_otp, last_whatsapp, and missed_summary, and create/capture are used inconsistently for similar creation actions, but naming remains readable.
At 17 tools the surface is slightly above the ideal 3-15 range, but it covers five distinct subdomains: tasks, reminders, notifications, cultural items, and music. Each tool appears to earn its place rather than being redundant bulk.
Core flows for tasks and reminders are present: create, list, complete, and for tasks also search/drop/stats. However, there are notable lifecycle gaps: reminders and tasks lack explicit update/edit and delete operations, cultural items can be captured/listed but not marked consumed, and music playback has no stop/control counterpart.
Maintenance
Related MCP Connectors
Cloud-hosted MCP server for durable AI memory
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Persistent, verbatim, searchable memory for AI assistants — one memory across every MCP client.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that connects AI assistants like Claude to your todo app, enabling natural, friendly reminders and task management without a server to run.812 npmMIT
- AlicenseNot gradedqualityCmaintenanceA local-first MCP server that gives AI assistants long-term memory by storing, searching, and recalling notes as Markdown files on your machine.14 npmMIT
- AlicenseNot gradedqualityBmaintenanceA self-hosted personal memory assistant that captures and retrieves thoughts via voice or text, with MCP tools for querying and managing entries.98 npmAGPL 3.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server for storing and retrieving thoughts, notes, and ideas with semantic vector search, enabling integration with Claude Desktop and other MCP clients.MIT