@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 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.0",
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",