keepsake-mcp 1.13.0 → 1.14.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/build/tools.js +8 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -188,9 +188,9 @@ Material kept *alongside* a note without entering its text — an idea, a refere
|
|
|
188
188
|
### Days (intention or question of the day)
|
|
189
189
|
| Tool | Description |
|
|
190
190
|
|------|-------------|
|
|
191
|
-
| `list_days` | List days with their intention or question of the day, by date range |
|
|
192
|
-
| `get_day` | Get a day
|
|
193
|
-
| `update_day` | Set a day's intention or question — one short line, not a journal (upsert) |
|
|
191
|
+
| `list_days` | List days with their intention or question of the day (the one in force, which stays until changed), by date range |
|
|
192
|
+
| `get_day` | Get a day, its intention in force (`intention`, carried over until changed) and what was written that day (`note`) |
|
|
193
|
+
| `update_day` | Set a day's intention or question — one short line, not a journal (upsert); it stays in place on the following days until changed |
|
|
194
194
|
|
|
195
195
|
### Day blocks (Day-view timeline)
|
|
196
196
|
| Tool | Description |
|
package/build/tools.js
CHANGED
|
@@ -145,6 +145,8 @@ export function registerAllTools(server, fetchApi) {
|
|
|
145
145
|
last_name: z.string().optional().describe("Last name (optional)"),
|
|
146
146
|
email: z.string().optional().describe("Email address"),
|
|
147
147
|
phone: z.string().optional().describe("Phone number"),
|
|
148
|
+
job_title: z.string().optional().describe("Job title / profession, e.g. 'Product designer'"),
|
|
149
|
+
address: z.string().optional().describe("Postal address"),
|
|
148
150
|
company: z.string().optional().describe("Company name. Links the contact to that company record (matched by name ignoring case and accents, created if missing). Adds a link, never removes one. The contact's companies are returned in `companies`."),
|
|
149
151
|
birthday: z.string().optional().describe("Birthday as ISO date string (YYYY-MM-DD), e.g. '1980-02-14'"),
|
|
150
152
|
notes: z.string().optional().describe("Notes about the contact"),
|
|
@@ -161,6 +163,8 @@ export function registerAllTools(server, fetchApi) {
|
|
|
161
163
|
last_name: z.string().optional().describe("Last name"),
|
|
162
164
|
email: z.string().optional().describe("Email address"),
|
|
163
165
|
phone: z.string().optional().describe("Phone number"),
|
|
166
|
+
job_title: z.string().nullable().optional().describe("Job title / profession, e.g. 'Product designer'. Set to null to clear."),
|
|
167
|
+
address: z.string().nullable().optional().describe("Postal address. Set to null to clear."),
|
|
164
168
|
company: z.string().optional().describe("Company name. Links the contact to that company record (matched by name ignoring case and accents, created if missing). Adds a link, never removes one. The contact's companies are returned in `companies`."),
|
|
165
169
|
birthday: z.string().nullable().optional().describe("Birthday as ISO date string (YYYY-MM-DD), e.g. '1980-02-14'. Set to null to clear."),
|
|
166
170
|
notes: z.string().optional().describe("Notes about the contact"),
|
|
@@ -657,7 +661,7 @@ export function registerAllTools(server, fetchApi) {
|
|
|
657
661
|
// DAYS (Daily Summaries)
|
|
658
662
|
// ===========================================================================
|
|
659
663
|
server.registerTool("list_days", {
|
|
660
|
-
description: "List days with their intention or question of the day (
|
|
664
|
+
description: "List stored days with their intention or question of the day. An intention stays in place until changed: `intention` is the one in force that day (the last one written on that day or before, `intention_date` = when it was written); `note` is what was written on that exact day (null = nothing written). Filter by date range.",
|
|
661
665
|
inputSchema: {
|
|
662
666
|
from: z.string().optional().describe("Start date (YYYY-MM-DD)"),
|
|
663
667
|
to: z.string().optional().describe("End date (YYYY-MM-DD)"),
|
|
@@ -669,7 +673,7 @@ export function registerAllTools(server, fetchApi) {
|
|
|
669
673
|
return toContent(await fetchApi(`/days${qs({ from, to, limit, offset })}`));
|
|
670
674
|
});
|
|
671
675
|
server.registerTool("get_day", {
|
|
672
|
-
description: "Get a specific day by date: its intention or question of the day
|
|
676
|
+
description: "Get a specific day by date: its intention or question of the day AND the notes linked to that day (field `notes`, via link_note_date / `dates`). An intention stays in place until changed: `intention` is the one in force that day, as the user sees it (the last one written on that day or before; `intention_date` = the day it was written), while `note` is what was written on that exact day (null = nothing written there, '' = intention stopped from that day). Always 200 — `exists: false` means no row is stored for that date; `intention` and the linked notes are returned regardless.",
|
|
673
677
|
inputSchema: {
|
|
674
678
|
date: z.string().describe("Date (YYYY-MM-DD)"),
|
|
675
679
|
},
|
|
@@ -678,10 +682,10 @@ export function registerAllTools(server, fetchApi) {
|
|
|
678
682
|
return toContent(await fetchApi(`/days/${date}`));
|
|
679
683
|
});
|
|
680
684
|
server.registerTool("update_day", {
|
|
681
|
-
description: "Create or update a day's intention or question of the day (upsert on the date). The `note` field is the intention or question of the day — one short line at the top of the Today view (a mantra, an intention, a single priority, or a question to keep in mind). Not a journal: never write a summary of the day here.\n\nNOT for attaching a note to a day: this field is a single line and you would overwrite the user's intention. To put a note on a day, use create_note with `dates` or link_note_date.",
|
|
685
|
+
description: "Create or update a day's intention or question of the day (upsert on the date). The `note` field is the intention or question of the day — one short line at the top of the Today view (a mantra, an intention, a single priority, or a question to keep in mind). Not a journal: never write a summary of the day here.\n\nAn intention stays in place until changed: writing it on a day replaces the intention from that day onward (following days show it too, until the next day with its own intention — set one on a future date for a one-off, e.g. before a meeting). `null` removes what was written on that day (the day goes back to the intention in force before it); an empty string stops any intention from that day onward. Check `intention` with get_day before writing: you may be replacing a long-running intention the user cares about.\n\nNOT for attaching a note to a day: this field is a single line and you would overwrite the user's intention. To put a note on a day, use create_note with `dates` or link_note_date.",
|
|
682
686
|
inputSchema: {
|
|
683
687
|
date: z.string().describe("Date (YYYY-MM-DD)"),
|
|
684
|
-
note: z.string().describe("The intention or question of the day: one short line (mantra, intention, single priority, or a question to keep in mind). Not a journal summary."),
|
|
688
|
+
note: z.string().nullable().describe("The intention or question of the day: one short line (mantra, intention, single priority, or a question to keep in mind). Not a journal summary. null = remove what was written on this day (back to the previous intention); empty string = stop any intention from this day onward."),
|
|
685
689
|
},
|
|
686
690
|
annotations: { title: "Update day", destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
687
691
|
}, async (params) => {
|