prospective-memory
前瞻性记忆
手机优先捕获。MCP 拉取。非 Takeout。
在 Android 上花几秒钟就能记录一个想法。稍后询问 Grok/Claude:“有什么待办?”
v1 中没有通知。没有地理围栏。没有 Google 历史记录。
它是 google-activity-assistant 的兄弟项目——同一种 MCP 主机,不同的存储。
v1 循环
Android (one box) --POST /v1/capture--> PC FastAPI + SQLite
│
Grok / Claude --MCP list_open_tasks----------┘Related MCP server: genmem
服务器(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:8790保持 serve 运行。在另一个终端/Grok 中,如果你添加了下面的配置,MCP serve-mcp 已经连接好了。
手机必须能访问这台机器:
同一 Wi‑Fi:
http://YOUR_LAN_IP:8790外出时: Cloudflare Tunnel / Tailscale(参见
docs/V1.md)
Android
在 Android Studio 中打开
android/(或运行gradlew.bat assembleDebug)。首次启动时设置服务器 URL + 令牌(与
pmem token相同的令牌)。保存 URL + 令牌。添加常用语行(
d=dahi lena)。启用浮动按钮 + 磁贴(悬浮窗权限)——点击
+→ 输入 → 回车。将+拖到底部 ✕ 上可隐藏;重新启用即可恢复。主屏幕小部件(拉伸宽度以显示输入栏)或长按应用图标 → Capture。键盘会立即弹出。
空回车会重复上一个常用语标签。Toast 显示“类别 · 文本”。离线帖子会排队,网络恢复时自动发送。
可选的 Write(手写测试)位于
android/.../ink/。首次打开会下载一个设备端模型。不在气泡上。通过ink/REMOVE.txt移除。
允许对局域网 IP 使用 HTTP 明文(网络安全配置中已设置)。
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 = 60询问:“列出未完成任务” / “有买东西的任务吗?” / “标记那个 dahi 任务为完成。”
CLI
uv run pmem capture "dahi lena"
uv run pmem list
uv run pmem stats非目标(v1)
系统提醒、地理围栏、WhatsApp 签到、图形符号、语音
与 Google Takeout 活动合并
多用户云
Available Tools
17 toolscapture_cultural_itemB
Capture a cultural or leisure recommendation (movie, show, documentary, book) into the ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| title | Yes | ||
| genres | No | ||
| creator | No | ||
| runtime | No | ||
| platform | No | ||
| media_type | No | movie | |
| release_year | No | ||
| recommended_by | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full behavioral burden. It says the item is captured 'into the ledger,' implying persistence, but does not disclose permissions, duplicate handling, whether an existing title is updated or rejected, or what the response contains. For a write operation with nine parameters, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Its brevity is appropriate, though it reflects under-specification rather than an efficient summary of rich content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a write operation with nine parameters, no annotations, and zero schema description coverage. Although an output schema exists and need not be explained, the description omits usage routing, parameter semantics, and mutation behavior, leaving the agent without enough context to call it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for nine undocumented parameters. It only hints at media_type values through the examples 'movie, show, documentary, book' and says nothing about notes, genres, creator, runtime, platform, release_year, or recommended_by.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Capture a cultural or leisure recommendation' and gives concrete examples '(movie, show, documentary, book)' plus the destination 'into the ledger.' This clearly distinguishes it from siblings like list_cultural_items and capture_task.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The domain is implied by 'cultural or leisure recommendation,' suggesting it is for media items rather than tasks or reminders. However, there is no explicit when-to-use guidance, no exclusions, and no named alternative such as capture_task for non-cultural items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_taskA
Save a thought as an open task (same path as the Android capture box).
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| source | No | mcp |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It states the core effect and adds the Android capture-box path, but does not disclose duplicate handling, failure modes, or whether any other state is changed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every phrase contributes: action, result, and platform consistency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema, and only one required parameter. Coverage of text plus the Android-capture context makes it callable; the main gap is the undocumented optional source.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. 'Thought' gives a semantic hint for the required text param, but source is never mentioned, leaving it under-documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Save a thought as an open task') and a resource, and the Android capture-box reference adds useful context. This clearly differentiates it from sibling read/search/complete/drop operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended scenario is clear - save a thought as an open task - and the action itself distinguishes it from list/search/complete/drop. It does not name alternatives or exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_reminderC
Mark a reminder completed in the unified ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| reminder_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It does not say whether completion is reversible, whether it is idempotent, what happens when the reminder is already completed or the id is invalid, or whether any permission is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Its brevity is efficient, though it edges toward under-specification rather than being padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a mutation tool with no annotations, an undocumented required parameter, and no behavioral notes. The existing output schema covers return values, but the description still leaves an agent without enough context to call it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the single reminder_id parameter has no description. The phrase 'in the unified ledger' hints at where ids originate, but the description does not explain the id format or how to retrieve a valid one.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Mark a reminder completed'), which distinguishes it from complete_task and snooze_reminder by object type. The phrase 'in the unified ledger' adds mild scope context but is not explained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus siblings like complete_task, snooze_reminder, or list_reminders. It also does not state prerequisites, such as how to obtain a valid reminder_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
complete_taskB
Mark a task done.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the core status change but does not disclose whether the action is reversible, what happens when the task is already done, or how missing or invalid task IDs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four words, front-loaded, and contains no filler. Every word adds meaning and directly states the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has one parameter, and an output schema exists, so return value details are not strictly required. However, with no annotations and no usage or behavioral guidance, the description is only minimally complete for helping an agent select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, task_id, is self-explanatory from its name and title, but schema_description_coverage is 0% and the description adds no additional meaning. It does not say where the ID comes from, what format it uses, or whether it must reference an existing open task.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and object ('Mark a task done') that clearly states the tool's purpose and result. It differentiates this tool from siblings like capture_task, drop_task, and list_open_tasks by focusing on the completion status change.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use complete_task versus alternatives such as drop_task or capture_task. There is no mention of prerequisites, such as the task needing to already exist or be open, so an agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_reminderC
Create a new reminder in the unified ledger. If armed=false, creates an unarmed inbox item.
| Name | Required | Description | Default |
|---|---|---|---|
| armed | No | ||
| notes | No | ||
| title | Yes | ||
| due_date | No | ||
| cultural_metadata | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that this is a create mutation in a unified ledger and that armed=false produces an unarmed inbox item, but it does not explain armed=true behavior, permissions, side effects, duplicate handling, or other operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tightly written sentences with no filler. The core create action is front-loaded, followed immediately by the key armed=false exception.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no schema descriptions across five parameters, the description is too sparse. It does not explain most parameters or the behavior of armed=true, leaving an agent to infer critical invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for five parameters. The description only explains part of the armed parameter's meaning; it leaves notes, due_date, and cultural_metadata undocumented, and title is only implicitly understood from the tool purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: creating a reminder in the unified ledger. The armed=false branch adds scope detail. It does not explicitly distinguish this from sibling creation tools such as capture_task or capture_cultural_item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is a conditional behavioral note about armed=false creating an unarmed inbox item. There is no explicit when-to-use guidance, no prerequisites, and no comparison to alternatives like capture_task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drop_taskB
Drop a task without completing it.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that a task is dropped, implying a mutating action, but it does not say whether this permanently deletes the task, whether it is reversible, or what state the task enters. For a destructive operation, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the core verb. There is no redundant content. While it is short, it includes the essential differentiating phrase 'without completing it.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered. However, for a mutating tool with no annotations, the description is too thin: it does not state the outcome for the task, whether it is removed from open lists, or any side effects. The tool's behavior and effects on task state are not adequately specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description does not mention task_id. Although the parameter name and title are self-explanatory, the description adds no additional meaning beyond the schema. It fails to compensate for the missing parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'drop' and resource 'task', and the clause 'without completing it' differentiates it from complete_task. However, 'drop' is somewhat ambiguous—it could mean delete, cancel, or abandon—so it could be slightly more explicit about the exact operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the appropriate use case: removing a task without marking it complete. It implicitly excludes complete_task, but it does not explicitly mention alternative sibling tools or spell out when not to use this tool. The context is clear enough for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| sender | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does disclose the key limitation that results are notification-shade previews rather than complete message content. It does not state that this is a read-only, side-effect-free operation, nor anything about how many results are returned by default or what happens to older notifications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the what, followed by the filter and then the critical scope caveat. Nothing is redundant and each clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return shape needn't be explained, and the most important caveat (previews, not history) is stated. The only real gap is the undocumented limit parameter for a tool that plausibly returns a bounded list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate: it explains 'sender' as an optional name filter with a concrete example (Mom), which is a genuine addition. The 'limit' parameter — its default of 10 and what it caps — is left entirely undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (WhatsApp notification previews) and the source (the phone), so an agent knows this retrieves notification data rather than messages or tasks. No sibling overlaps with this domain, so no differentiation is needed, but it stops short of a crisp verb+scope statement like 'list recent WhatsApp notifications'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'This is the notification shade, not full chat history' implicitly bounds when the tool is appropriate, and the sender filter example implies narrowing use. But there's no explicit guidance on when to prefer this over other retrieval tools, or any stated prerequisites for reading phone notifications.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden and does real work: it discloses the ~3 minute expiry window, the meaning of the redacted=true case, and an explicit anti-fabrication rule. It stops short of covering permissions, failure modes when no OTP exists, or freshness edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place: what it returns, how long it is valid, and what to do on redaction. The most actionable content (don't invent a code) lands last with no padding around it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values needn't be explained, and the description covers the one output nuance an agent must act on (redacted digits). It leaves out what happens when no OTP is present or when the code has already expired, which are realistic call-time questions for a tool with a 3 minute validity window.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero input parameters, so there is nothing for the description to disambiguate; the baseline applies. It does not need to compensate for any schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Newest OTP from the phone') and enumerates the source channels (SMS/bank/mail/WhatsApp notification), which cleanly separates it from siblings like last_whatsapp. An agent knows exactly what it gets without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case (fetch a code for a user waiting on one) but never states when to call it versus alternatives such as last_whatsapp, nor any preconditions. With no closely competing sibling, the gap is mild rather than harmful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_cultural_itemsC
List movie and cultural recommendations queued in the leisure ledger.
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | ||
| limit | No | ||
| query | No | ||
| status | No | pending | |
| platform | No | ||
| media_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it discloses very little. It does not state that the operation is read-only, that results default to status='pending' (a significant hidden filter), that limit defaults to 50, or anything about ordering or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity reflects under-specification rather than disciplined editing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, but the tool has six undocumented filter parameters, no annotations, and an undisclosed default status filter. For a filtered-list tool with that much surface area, the description leaves the agent without the information needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, so the description must compensate and largely does not. 'Movie and cultural' loosely hints at media_type, but genre, query, platform, status, and limit are never explained, and the non-obvious default of status='pending' is not surfaced anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb ('List') and a specific resource ('movie and cultural recommendations queued in the leisure ledger'), which distinguishes it from the write-side sibling capture_cultural_item. It stops short of naming any sibling or clarifying scope boundaries, but an agent can still tell what this tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, no mention of the capture/list pairing, and no indication of when filtering parameters should be applied. The agent is left to infer usage entirely from the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_open_tasksB
List open tasks, newest first. Optional category: grocery, bills, people, inbox, …
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry behavioral disclosure. It adds useful behavior: tasks are open, sorting is newest first, and category is optional with open-ended examples. However, it does not state read-only guarantees, pagination/truncation behavior, or effects of the limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one efficient sentence with the core action and ordering front-loaded, followed by the optional category context. Every phrase adds value and there is no wasted wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, return values do not need describing. The description covers the core list behavior and category filter, but it omits limit semantics and any guidance about when to choose this tool over search_tasks. For a simple tool this is adequate, but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter meaning. It adds examples for category ('grocery, bills, people, inbox, …') and says it is optional, but the limit parameter is entirely undocumentted in the description. With two parameters, only half gain real semantic explanation beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'List', the resource 'open tasks', and provides ordering ('newest first') plus an optional category filter with examples. It does not explicitly distinguish itself from the sibling tool search_tasks, so it meets the clarity bar without fully differentiating from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use list_open_tasks versus search_tasks or other sibling tools. The category examples hint at filtering use, but there are no explicit when-to-use, when-not-to-use, or alternative-routing statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_remindersB
List reminders from the unified Remy Reminders ledger (pending, snoozed, completed).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| status | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It implies a read-only listing operation and names the ledger and statuses involved, but it does not state whether completed reminders are returned by default, how the limit affects results, or whether ordering/pagination is applied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted language. It communicates the core action and scope efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, the description lacks annotations, has zero schema description coverage, and does not explain key invocation details such as default status behavior or how the limit is applied, leaving important gaps for an agent selecting and invoking the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for both parameters. It gives possible status values (pending, snoozed, completed), which partially explains the status parameter, but it says nothing about the limit parameter, its default of 50, or any maximum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'List reminders' from the Remy Reminders ledger. It also names the status categories covered (pending, snoozed, completed), which makes the tool's scope clear. It does not explicitly distinguish itself from nearby siblings such as list_open_tasks or search_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like list_open_tasks, search_tasks, task_stats, or the reminder mutation tools. It implies that it lists reminders, but an agent must infer the selection context without any explicit when-to-use or when-not-to-use rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
missed_summaryA
What arrived on the phone recently: WhatsApp, mail, SMS, OTPs (codes not included). Default last 60 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose useful traits: OTP codes are excluded and the default window is 60 minutes. However, it does not state read-only status, auth requirements, or whether the summary returns counts versus message details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact clauses with no filler; the purpose and key constraints are front-loaded. The fragmentary phrasing is efficient rather than confusing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple summary tool with one optional parameter and an output schema, the description covers the channels, OTP exclusion, and default window. It omits explicit read-only/auth context and sibling routing guidance, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'minutes' has 0% schema description coverage, so the description must compensate. It supplies both the default value and the timeframe meaning via 'Default last 60 minutes,' which is sufficient for this single optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource and scope clearly: recent phone arrivals across WhatsApp, mail, SMS, and OTPs. The channel list differentiates it from single-channel siblings like last_whatsapp and latest_otp, though the phrasing lacks an explicit verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides the default lookback window ('Default last 60 minutes') but does not explicitly say when to choose this multi-channel summary over sibling tools such as last_whatsapp or latest_otp. Usage is implied by the channel list rather than guided with alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
play_musicB
Start zero context-switch background music playback for a query (e.g. 'play spb songs hindi', 'play lofi').
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Zero context-switch background music playback' hints at non-interruptive playback, but nothing is said about what happens if the query matches nothing, whether it replaces or queues against current playback, or whether any permission/authorization is needed for a side-effecting action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the verb and resource front-loaded, followed immediately by concrete examples. Every element earns its place with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and for a one-parameter tool the definition is close to sufficient. The gap is the unaddressed overlap with resolve_music_query, which matters given the sibling list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With one required parameter and 0% schema description coverage, the description must supply the semantics, and the two examples do clarify that 'query' is a natural-language music request rather than an ID. It stops short of saying what forms are accepted (song, artist, language, mood) or what happens with ambiguous input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb plus resource ('Start ... background music playback') and scopes it to a query string, which is clear enough for an agent to know what happens. It does not, however, distinguish itself from the sibling resolve_music_query, so the agent cannot tell from the text which of the two music tools to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two inline examples ('play spb songs hindi', 'play lofi') implicitly demonstrate the kind of free-form query expected, which is useful usage guidance. But there is no explicit statement of when to use this versus resolve_music_query, and no exclusions or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_music_queryA
Resolve a natural language music query (e.g. 'play spb songs hindi', 'play lofi') to stream metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose one useful trait: the tool resolves to stream metadata rather than starting playback. It says nothing about whether the lookup is read-only, what happens on no match, or any external service/auth dependency, so a meaningful gap remains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and the input/output framing, with examples that earn their space by clarifying the parameter. No filler whatsoever.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values needn't be explained, and the single-parameter surface is small. The main missing piece is the relationship to play_music and any failure behavior, which an agent must guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the single 'query' parameter. The two inline examples do add real meaning about expected input format (free-form natural language music requests), but nothing is said about language handling, ambiguity, or whether the 'play' prefix is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Resolve a natural language music query') and the outcome ('to stream metadata'), which is clear on its own. It does not, however, distinguish itself from the sibling play_music, leaving the resolve-vs-play boundary to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the two example queries ('play spb songs hindi', 'play lofi'), which show what kinds of input fit. There is no explicit when-to-use, no exclusion, and no pointer to play_music as the follow-up or alternative action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tasksA
Search task text/category. By default only open items.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| include_done | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does reveal an important default behavior ('By default only open items'), which directly informs the include_done parameter. But it does not explicitly state that search is read-only, describe result ordering/limits, or explain edge cases like empty queries. The read-only nature is arguably implied by the word 'Search'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. The primary action is front-loaded, and the important default behavior is stated immediately after. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return value details are not needed. The description covers the core search semantics and the key default behavior. It could be slightly more explicit about the effect of include_done and limit, but those are reasonably inferable. For a low-complexity search tool, this is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no parameter descriptions (0% coverage), so the description must compensate. It clarifies that 'query' targets task text/category and implies what include_done does via the default statement. However, it does not explain the 'limit' parameter at all, leaving that to inference from its name and default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Search'), a resource ('task'), and the fields being searched ('text/category'). This clearly distinguishes it from siblings like list_open_tasks (which presumably enumerates tasks) and task_stats (which reports statistics). The purpose is immediately understandable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: search tasks by text or category, with a default scope of open items. However, it does not explicitly mention alternatives or state when to prefer this over list_open_tasks or other siblings. The condition is only implied, not stated as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snooze_reminderC
Snooze a reminder to a target ISO date/time or by N minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| minutes | No | ||
| target_iso | No | ||
| reminder_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden of behavioral disclosure, and it delivers only the basic mutation intent. It does not say whether the operation requires permissions, whether snoozing a completed reminder fails, whether it is reversible, or how the two input modes interact — all material for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no waste, front-loading the action and the two mechanisms. It is appropriately terse for a simple mutation, though the terseness contributes to the semantic gaps noted elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, but for a mutation tool with zero annotations and 0% parameter documentation the description is too thin. Critical calling details — mode precedence, default behavior, failure conditions — are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It only loosely maps to 'minutes' and 'target_iso' and says nothing about reminder_id, the 15-minute default, mutual exclusivity between the two modes, or expected ISO format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('snooze') and resource ('reminder') and explains the two mechanisms (target ISO datetime or N minutes), which clearly separates it from create_reminder, complete_reminder, and list_reminders. It stops short of naming a sibling, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to prefer this over alternatives or on prerequisites (e.g., must the reminder be pending?). The two modes are mentioned but with no indication of which to pick, what happens if both are supplied, or what the default 15 minutes means in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_statsB
Counts by status and open categories. Includes live JARVIS notification counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It adds some behavioral context by noting 'live' notification counts and identifying the dimensions counted, but it does not explicitly say this is a read-only aggregation or whether counts are cached/real-time beyond the word 'live'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences and is front-loaded with the main counting behavior. Slight ambiguity in 'open categories' prevents it from being maximally clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a zero-parameter stats tool, the description is adequate but leaves 'open categories' undefined and does not clarify that this is task-focused aggregation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so parameter semantics are not a concern. The baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Counts by status and open categories' and includes 'live JARVIS notification counts,' which gives a rough idea of an aggregation tool. However, 'open categories' is vague, and it never explicitly says it counts tasks, relying on the tool name. It also does not distinguish itself from siblings like list_open_tasks or search_tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool rather than list_open_tasks, search_tasks, or other siblings. The description states what it counts but not the decision context for selecting it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
v0.5.1- Added
capture_cultural_item - Added
complete_reminder - Added
create_reminder - Added
last_whatsapp - Added
latest_otp - Added
list_cultural_items - Added
list_reminders - Added
missed_summary - Added
play_music - Added
resolve_music_query - Added
snooze_reminder
6 tool updates
v0.5.0- First observed
capture_task - First observed
complete_task - First observed
drop_task - First observed
list_open_tasks - First observed
search_tasks - First observed
task_stats
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.
- EngramOAuthapp.getengram
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.5 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.47 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