@sebamomann/plants-mcp 2.7.0 → 2.7.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/CHANGELOG.md +10 -0
- package/README.md +6 -0
- package/dist/index.js +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
Notable changes to `@sebamomann/plants-mcp`. Versioning is semver against the **tool surface** —
|
|
4
4
|
see the table in `AGENTS.md` for what counts as major, minor, and patch.
|
|
5
5
|
|
|
6
|
+
## 2.7.1 — 2026-09-26
|
|
7
|
+
|
|
8
|
+
**A moved watering carries its feeding.** Tool count unchanged (77 overall). A **patch** bump —
|
|
9
|
+
nothing renamed or removed, and the change is in the app's behaviour plus `snooze_care`'s wording:
|
|
10
|
+
|
|
11
|
+
- `snooze_care` on the `water` axis now also snoozes a fertilizing due date that falls between today
|
|
12
|
+
and the watering's new day — fertilizer goes into the watering can, so a feeding left in between
|
|
13
|
+
would have nothing to deliver it. The extra row is **added** to the response as `fertRider` (`null`
|
|
14
|
+
when nothing moved), so existing callers are unaffected. An already-overdue feeding stays put.
|
|
15
|
+
|
|
6
16
|
## 2.7.0 — 2026-09-24
|
|
7
17
|
|
|
8
18
|
**Nudges.** 77 tools registered overall (28 read, 31 write, 18 admin). A **minor** bump — one new
|
package/README.md
CHANGED
|
@@ -380,6 +380,12 @@ hub offers. `originalDueAt` is the due date being pushed out (`nextDue` from `li
|
|
|
380
380
|
an overdue plant means three days from now) or `snoozedUntil` (an explicit day: tomorrow at the
|
|
381
381
|
earliest, at most a year out).
|
|
382
382
|
|
|
383
|
+
Moving a **watering** past a feeding that was due before it moves that feeding too: fertilizer goes
|
|
384
|
+
into the watering can, so a feeding left between today and the watering's new day would have nothing
|
|
385
|
+
to deliver it. The second snooze comes back as `fertRider` on the response (`null` when nothing rode
|
|
386
|
+
along), so it can be reported rather than discovered later. An already-overdue feeding is left where
|
|
387
|
+
it is — that backlog is not the watering's doing.
|
|
388
|
+
|
|
383
389
|
### Plant edits
|
|
384
390
|
|
|
385
391
|
| Tool | Endpoint | Arguments |
|
package/dist/index.js
CHANGED
|
@@ -176,7 +176,7 @@ server.tool("record_hydro_event", "WRITE: log a hydro-culture event for a hydro-
|
|
|
176
176
|
recordedAt: optionalPlantDate(""),
|
|
177
177
|
notes: z.string().max(2000).optional().describe("Free-text notes."),
|
|
178
178
|
}, async ({ plantId, ...body }) => apiSend("POST", `/api/v1/plants/${plantId}/hydro`, body));
|
|
179
|
-
server.tool("snooze_care", "WRITE: postpone a plant's next watering or fertilizing due date — the same snooze picker the care hub offers. originalDueAt is the due date being pushed out (the nextDue value from list_due_care/get_care_calendar for that plant/careType), not today's date. Pass exactly one of durationDays (a preset: 1, 3, 7, or 14 days, counted from originalDueAt or from today when that date has already passed) or snoozedUntil (an explicit YYYY-MM-DD day, tomorrow at the earliest and at most a year out). Requires a write-scoped API key.", {
|
|
179
|
+
server.tool("snooze_care", "WRITE: postpone a plant's next watering or fertilizing due date — the same snooze picker the care hub offers. originalDueAt is the due date being pushed out (the nextDue value from list_due_care/get_care_calendar for that plant/careType), not today's date. Pass exactly one of durationDays (a preset: 1, 3, 7, or 14 days, counted from originalDueAt or from today when that date has already passed) or snoozedUntil (an explicit YYYY-MM-DD day, tomorrow at the earliest and at most a year out). Moving a WATERING past a feeding that was due before it moves that feeding onto the same day too — fertilizer goes into the watering can, so a feeding left in between would have nothing to deliver it; that second snooze comes back as fertRider (null when nothing moved), and an already-overdue feeding is left where it is. Requires a write-scoped API key.", {
|
|
180
180
|
plantId: z.number().int().positive().describe("Plant id."),
|
|
181
181
|
careType: z.enum(["water", "fert"]).describe("Which schedule to postpone."),
|
|
182
182
|
durationDays: z.union([z.literal(1), z.literal(3), z.literal(7), z.literal(14)]).optional().describe("Snooze duration in days — one of the app's presets, counted from originalDueAt, or from today if that date has passed. Omit when passing snoozedUntil."),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebamomann/plants-mcp",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.1",
|
|
4
4
|
"description": "MCP server for the Sprig plant app: 77 tools to read a plant collection, browse the shared global plant type catalog, log care (watering, fertilizing, repotting, refills, hydro events), edit a plant's identity/care/lifecycle status, add, propagate or merge plants, snooze a due date, check for nudges worth mentioning, manage a wishlist and notifications, watch a plant type for changes, check vacation status, read past problem diagnoses, create a location/soil/fertilizer/pot, and contribute a new species to the catalog. Read-only by default; writes need a write-scoped API key. Two tools can delete a watering/fertilization event; nothing else deletes collection history. 18 more tools read, edit, merge and review the shared global plant type catalog and the instance's operational status (queues, catalog health, activity, growth, community, trade and content aggregates) for an admin-scoped key.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|