Your garden notebook: ask about your beds, plantings, harvests and frost dates, and log your work.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Queue a future planting for a bed as part of a succession plan — it is NOT yet sown (use add_planting for something the user already planted). Use when the user wants to plan ahead, e.g. "plan to plant more carrots in Bed 2 on August 15".
The bed's name.
Planned planting date, YYYY-MM-DD.
What to call this planting, e.g. 'Fall Carrots'.
Garden name; defaults to the user's first garden.
Default direct_seed.
Optional catalog crop slug.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Queue a future planting for a bed as part of a succession plan — it is NOT yet sown (use add_planting for something the user already planted). Use when the user wants to plan ahead, e.g. "plan to plant more carrots in Bed 2 on August 15".
| Argument | Type | Description |
|---|---|---|
| bed* | string | The bed's name. |
| notes | string | |
| garden | string | Garden name; defaults to the user's first garden. |
| method | string | Default direct_seed. |
| cropSlug | string | Optional catalog crop slug. |
| quantity | number | |
| targetDate* | string | Planned planting date, YYYY-MM-DD. |
| displayName* | string | What to call this planting, e.g. 'Fall Carrots'. |
{
"type": "object",
"required": [
"bed",
"displayName",
"targetDate"
],
"properties": {
"bed": {
"type": "string",
"description": "The bed's name."
},
"notes": {
"type": "string"
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"method": {
"enum": [
"direct_seed",
"indoor_start",
"transplanted_seedling"
],
"type": "string",
"description": "Default direct_seed."
},
"cropSlug": {
"type": "string",
"description": "Optional catalog crop slug."
},
"quantity": {
"type": "number"
},
"targetDate": {
"type": "string",
"description": "Planned planting date, YYYY-MM-DD."
},
"displayName": {
"type": "string",
"description": "What to call this planting, e.g. 'Fall Carrots'."
}
}
}Record that the user planted/sowed something: creates the plant in their catalog if new and the planting in the named bed. Passing variety replaces the variety stored on an existing plant with the same name.
| Argument | Type | Description |
|---|---|---|
| bed* | string | |
| notes | string | |
| plant* | string | |
| garden | string | Garden name; defaults to the user's first garden. |
| method | string | Default direct_seed. |
| sownAt | string | ISO date; default today. |
| variety | string | Variety/cultivar, e.g. "Sremski F1". Stored on the plant; replaces the variety of an existing plant with the same name. |
| quantity | number | |
| transplantedAt | string | ISO date the seedling went into the bed (indoor starts). |
Add a garden bed. `type` is one of outdoor_bed (in-ground), raised_bed, greenhouse, grow_light_shelf, pot. Dimensions (lengthCm/widthCm/heightCm) are optional. Use when the user wants a new bed or planting area.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| type* | string | |
| garden | string | Garden name; defaults to the user's first garden. |
| widthCm | number | Width in centimeters (optional). |
| heightCm | number | Height/depth in centimeters (optional). |
| lengthCm | number | Length in centimeters (optional). |
{
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"name": {
"type": "string"
},
"type": {
"enum": [
"outdoor_bed",
"raised_bed",
"greenhouse",
"grow_light_shelf",
"pot"
],
"type": "string"
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"widthCm": {
"type": "number",
"description": "Width in centimeters (optional)."
},
"heightCm": {
"type": "number",
"description": "Height/depth in centimeters (optional)."
},
"lengthCm": {
"type": "number",
"description": "Length in centimeters (optional)."
}
}
}Remove a bed from the garden. Siltwell archives it: it leaves the bed lists in the app and in these tools, its care schedules stop, and planned plantings queued for it are skipped. Past weather history still shows its name. The app has no way to restore it. Blocked while the bed has active plantings; remove or finish those first. Identify by bed name.
| Argument | Type | Description |
|---|---|---|
| bed* | string | The bed's name. |
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"required": [
"bed"
],
"properties": {
"bed": {
"type": "string",
"description": "The bed's name."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Remove an entry from the succession plan outright (a queued future planting that hasn't been sown). This is a hard delete, not recoverable — for a planting already sown/growing, use delete_planting instead. Identify it by id (from list_planned_plantings).
| Argument | Type | Description |
|---|---|---|
| id* | string | The planned planting's id (from list_planned_plantings). |
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The planned planting's id (from list_planned_plantings)."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Remove a planting from the garden. Siltwell archives it: it disappears from the app and from these tools, and its care schedules stop. Its harvests, events and photos stay stored, but the app has no way to restore it. Identify by plant name or plantingId. Use when the user says to delete/remove a planting (e.g. one added by mistake).
| Argument | Type | Description |
|---|---|---|
| plant | string | Plant name of the planting to remove. |
| garden | string | Garden name; defaults to the user's first garden. |
| plantingId | string | Or the planting id directly. |
{
"type": "object",
"properties": {
"plant": {
"type": "string",
"description": "Plant name of the planting to remove."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"plantingId": {
"type": "string",
"description": "Or the planting id directly."
}
}
}Turn off a recurring care schedule (stops its reminders). Identify it by scheduleId, or by scope — plant (its active planting), bed, or garden-wide (neither) — optionally narrowed by type (water/fertilize/custom). Use when the user says to stop a watering/feeding reminder.
| Argument | Type | Description |
|---|---|---|
| bed | string | Scope: this bed. |
| type | string | Narrow to this care type. |
| plant | string | Scope: this plant's active planting. |
| garden | string | Garden name; defaults to the user's first garden. |
| scheduleId | string | The schedule's id. |
{
"type": "object",
"properties": {
"bed": {
"type": "string",
"description": "Scope: this bed."
},
"type": {
"enum": [
"water",
"fertilize",
"custom"
],
"type": "string",
"description": "Narrow to this care type."
},
"plant": {
"type": "string",
"description": "Scope: this plant's active planting."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"scheduleId": {
"type": "string",
"description": "The schedule's id."
}
}
}Read a bed's layout grid: the bed's dimensions (cm) plus each placed planting's footprint (xCm, yCm from the bed's top-left; wCm × hCm), and any active plantings not yet placed. Use to reason about space — e.g. "is there 60 cm free at the front of Bed 2?". Positions are written by place_planting.
| Argument | Type | Description |
|---|---|---|
| bed* | string | Bed name. |
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"required": [
"bed"
],
"properties": {
"bed": {
"type": "string",
"description": "Bed name."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Current weather at the garden (station if connected, else forecast) plus per-bed soil moisture/temperature. Use for "how is the garden right now / should I water".
| Argument | Type | Description |
|---|---|---|
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}7-day forecast for the garden with overnight-low frost alerts. Use for planting timing, frost protection, watering plans.
| Argument | Type | Description |
|---|---|---|
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}List harvests with per-plant totals. Use when the user asks what/how much they harvested.
| Argument | Type | Description |
|---|---|---|
| plant | string | |
| since | string | ISO date lower bound. |
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"plant": {
"type": "string"
},
"since": {
"type": "string",
"description": "ISO date lower bound."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Daily weather history for the garden: min/max temp, rain, growing degree days (base 10 °C) with a cumulative total. Use for "how warm/wet has it been" and growth-progress questions.
| Argument | Type | Description |
|---|---|---|
| since | string | ISO date, default 90 days ago. |
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"since": {
"type": "string",
"description": "ISO date, default 90 days ago."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Upcoming sowing/transplant windows computed from the user's plant catalog and the garden's frost dates, plus zone, frost dates, and any due care tasks (watering/fertilizing, with a rain-skip hint). Use for "what should I plant/start/transplant and when" and "what care is due".
| Argument | Type | Description |
|---|---|---|
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Compute the garden's rest-of-season planting schedule: every bed's next crops, chained forward to the effective first frost, deconflicted across beds with crop rotation and curated sow windows. Returns a PROPOSAL only — nothing is written; use add_planned_planting to accept a row into the succession plan. Returns every bed's chain, or one bed's full chain plus remainingCount for the rest when the garden's plan covers one bed.
| Argument | Type | Description |
|---|---|---|
| today | string | Optional YYYY-MM-DD to plan from; defaults to today in the garden's timezone. |
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"today": {
"type": "string",
"description": "Optional YYYY-MM-DD to plan from; defaults to today in the garden's timezone."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Latest soil moisture % and soil temperature per bed, with bed names. Use for watering/sowing decisions.
| Argument | Type | Description |
|---|---|---|
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}List the garden's beds: name, type (outdoor_bed/raised_bed/greenhouse/grow_light_shelf/pot), dimensions in cm, notes, and how many active plantings each holds. Use to see what beds exist and where there may be room.
| Argument | Type | Description |
|---|---|---|
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}List the garden's succession plan — future plantings queued for a bed that haven't been sown yet (only status='planned'; done/skipped entries are omitted). Use when the user asks what's coming up next, what they've planned to plant, or wants to review their succession plan. For plantings already in the ground, use query_plantings instead.
| Argument | Type | Description |
|---|---|---|
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Record that a harvested crop has finished curing (or dismiss the reminder). Use when the gardener says they've cured, dried, trimmed or stored a crop like garlic, onions or herbs.
| Argument | Type | Description |
|---|---|---|
| kind* | string | |
| garden | string | Garden name; defaults to the user's first garden. |
| plantingId* | string | Exact planting id (from query_plantings or get_bed_layout). |
{
"type": "object",
"required": [
"plantingId",
"kind"
],
"properties": {
"kind": {
"enum": [
"cured",
"dismissed"
],
"type": "string"
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"plantingId": {
"type": "string",
"description": "Exact planting id (from query_plantings or get_bed_layout)."
}
}
}Record something the user did or observed: watered, fertilized, transplanted, pruned, pest sighting, treatment, frost damage, or a note. Attach it to a plant's active planting via `plant`, to a bed via `bed`, or garden-wide with neither. If both plant and bed are given, the event attaches to the plant's planting.
| Argument | Type | Description |
|---|---|---|
| bed | string | Bed name — for bed-level events. |
| note | string | |
| type* | string | |
| plant | string | Plant name — targets its most recent active planting. |
| amount | string | For fertilized/treated. |
| garden | string | Garden name; defaults to the user's first garden. |
| product | string | For fertilized/treated. |
| pestName | string | For type=pest. |
| severity | string | For type=pest. |
| occurredAt | string | ISO datetime; default now. |
Average last spring frost, average first fall frost and hardiness zone for any place, from 10 years of weather records. Works without a Siltwell account. Dates are MM-DD. For the signed-in user's own garden, get_plan returns the garden's zone and frost dates, with the frost dates adjusted for its microclimate.
| Argument | Type | Description |
|---|---|---|
| place | string | Town plus region or country, for example "Portland, Oregon". Omit it to use the signed-in user's garden. |
| latitude | number | Latitude in decimal degrees. Give it with longitude instead of place. |
| longitude | number | Longitude in decimal degrees. Give it with latitude instead of place. |
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "Town plus region or country, for example \"Portland, Oregon\". Omit it to use the signed-in user's garden."
},
"latitude": {
"type": "number",
"description": "Latitude in decimal degrees. Give it with longitude instead of place."
},
"longitude": {
"type": "number",
"description": "Longitude in decimal degrees. Give it with latitude instead of place."
}
}
}Forecast lows for the next 7 days at any place and the nights at risk of frost. Each frost night is dated by the morning its low falls on, so protect plants the evening before that date. Works without a Siltwell account. For the signed-in user's own garden, get_forecast returns this forecast with the garden's microclimate adjustment applied.
| Argument | Type | Description |
|---|---|---|
| place | string | Town plus region or country, for example "Portland, Oregon". Omit it to use the signed-in user's garden. |
| latitude | number | Latitude in decimal degrees. Give it with longitude instead of place. |
| longitude | number | Longitude in decimal degrees. Give it with latitude instead of place. |
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "Town plus region or country, for example \"Portland, Oregon\". Omit it to use the signed-in user's garden."
},
"latitude": {
"type": "number",
"description": "Latitude in decimal degrees. Give it with longitude instead of place."
},
"longitude": {
"type": "number",
"description": "Longitude in decimal degrees. Give it with latitude instead of place."
}
}
}Frost-free season length and seasonal growing degree days at any place, and whether heat-loving crops get enough heat to ripen. Works without a Siltwell account. For the signed-in user's own garden, get_plan returns the microclimate-adjusted frost dates that bound its season, and get_history returns its daily growing degree days.
| Argument | Type | Description |
|---|---|---|
| place | string | Town plus region or country, for example "Portland, Oregon". Omit it to use the signed-in user's garden. |
| latitude | number | Latitude in decimal degrees. Give it with longitude instead of place. |
| longitude | number | Longitude in decimal degrees. Give it with latitude instead of place. |
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "Town plus region or country, for example \"Portland, Oregon\". Omit it to use the signed-in user's garden."
},
"latitude": {
"type": "number",
"description": "Latitude in decimal degrees. Give it with longitude instead of place."
},
"longitude": {
"type": "number",
"description": "Longitude in decimal degrees. Give it with latitude instead of place."
}
}
}When to start seeds indoors, plant out, and sow for a fall harvest at any place, crop by crop, with the days left to sow today. Works without a Siltwell account. Dates are YYYY-MM-DD. Without crops, it returns the 30 crops with the soonest next step; pass crops to see others. For the signed-in user's own garden, get_plan returns sowing and transplant windows for the garden's own plants, counted from its microclimate-adjusted last frost date.
| Argument | Type | Description |
|---|---|---|
| crops | array | Crop names to include, for example ["tomato", "garlic"]. Omit to get the 30 crops with the soonest next step. |
| place | string | Town plus region or country, for example "Portland, Oregon". Omit it to use the signed-in user's garden. |
| latitude | number | Latitude in decimal degrees. Give it with longitude instead of place. |
| longitude | number | Longitude in decimal degrees. Give it with latitude instead of place. |
{
"type": "object",
"properties": {
"crops": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"description": "Crop names to include, for example [\"tomato\", \"garlic\"]. Omit to get the 30 crops with the soonest next step."
},
"place": {
"type": "string",
"description": "Town plus region or country, for example \"Portland, Oregon\". Omit it to use the signed-in user's garden."
},
"latitude": {
"type": "number",
"description": "Latitude in decimal degrees. Give it with longitude instead of place."
},
"longitude": {
"type": "number",
"description": "Longitude in decimal degrees. Give it with latitude instead of place."
}
}
}Place or move a planting on its bed's layout grid — set its position (xCm, yCm measured from the bed's top-left corner) and footprint (wCm × hCm) in centimeters. Identify the planting by plant name or plantingId. Use when the user wants to arrange, position, or move a plant within its bed. For a planting that already spans several grid squares, use the app's layout editor instead.
| Argument | Type | Description |
|---|---|---|
| hCm* | number | Footprint height in cm (> 0). |
| wCm* | number | Footprint width in cm (> 0). |
| xCm* | number | X offset from the bed's top-left, in cm (≥ 0). |
| yCm* | number | Y offset from the bed's top-left, in cm (≥ 0). |
| plant | string | Plant name of the planting to place. |
| garden | string | Garden name; defaults to the user's first garden. |
| plantingId | string | Or the planting id directly. |
{
"type": "object",
"required": [
"xCm",
"yCm",
"wCm",
"hCm"
],
"properties": {
"hCm": {
"type": "number",
"description": "Footprint height in cm (> 0)."
},
"wCm": {
"type": "number",
"description": "Footprint width in cm (> 0)."
},
"xCm": {
"type": "number",
"description": "X offset from the bed's top-left, in cm (≥ 0)."
},
"yCm": {
"type": "number",
"description": "Y offset from the bed's top-left, in cm (≥ 0)."
},
"plant": {
"type": "string",
"description": "Plant name of the planting to place."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"plantingId": {
"type": "string",
"description": "Or the planting id directly."
}
}
}List the user's plantings (what is planted, where, when, how, current status). Use when the user asks what they planted, when something was sown/transplanted, or what's growing in a bed.
| Argument | Type | Description |
|---|---|---|
| plant | string | Filter by plant common name (contains, case-insensitive). |
| garden | string | Garden name; defaults to the user's first garden. |
| status | string | Default: active. |
{
"type": "object",
"properties": {
"plant": {
"type": "string",
"description": "Filter by plant common name (contains, case-insensitive)."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"status": {
"enum": [
"active",
"finished",
"failed",
"all"
],
"type": "string",
"description": "Default: active."
}
}
}Record a harvest, e.g. "I picked 2 kg of cucumbers" or "2 lb of tomatoes". Resolves the plant's active planting automatically. Pounds and ounces are stored as grams.
| Argument | Type | Description |
|---|---|---|
| unit* | string | |
| notes | string | |
| plant | string | |
| garden | string | Garden name; defaults to the user's first garden. |
| quantity* | number | |
| plantingId | string | |
| harvestedAt | string | ISO datetime; default now. |
{
"type": "object",
"required": [
"quantity",
"unit"
],
"properties": {
"unit": {
"enum": [
"g",
"kg",
"lb",
"oz",
"pcs"
],
"type": "string"
},
"notes": {
"type": "string"
},
"plant": {
"type": "string"
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"quantity": {
"type": "number"
},
"plantingId": {
"type": "string"
},
"harvestedAt": {
"type": "string",
"description": "ISO datetime; default now."
}
}
}Search the garden log: watering, fertilizing, transplanting, pruning, pest sightings, treatments, frost damage, notes. Use when the user asks when they last did something or what happened in the garden.
| Argument | Type | Description |
|---|---|---|
| type | string | |
| limit | number | Max rows, default 50. |
| plant | string | Filter to events on plantings of this plant name. |
| since | string | ISO date lower bound (inclusive). |
| garden | string | Garden name; defaults to the user's first garden. |
{
"type": "object",
"properties": {
"type": {
"enum": [
"watered",
"fertilized",
"transplanted",
"pruned",
"pest",
"treated",
"frost_damage",
"note"
],
"type": "string"
},
"limit": {
"type": "number",
"description": "Max rows, default 50."
},
"plant": {
"type": "string",
"description": "Filter to events on plantings of this plant name."
},
"since": {
"type": "string",
"description": "ISO date lower bound (inclusive)."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
}
}
}Create a recurring care schedule (water/fertilize/custom). Scope it to a plant (its active planting), a bed, or the whole garden. Recurrence is EITHER everyDays (e.g. 3) OR weekdays (e.g. ['monday','thursday']). Use when the user wants a repeating watering/feeding reminder. Optionally end it on a date (endsOn) or after N completions (endsAfter); use at most one.
| Argument | Type | Description |
|---|---|---|
| bed | string | Scope to this bed (optional; ignored if plant is given). |
| type | string | Default water. |
| label | string | Optional label (mainly for custom). |
| plant | string | Scope to this plant's active planting (optional). |
| amount | string | Optional, e.g. '2 L'. |
| endsOn | string | Optional last date YYYY-MM-DD (inclusive); no task after it. Use at most one of endsOn / endsAfter. |
| garden | string | Garden name; defaults to the user's first garden. |
| weekdays | array | Repeat on these weekdays, e.g. ['monday','thursday']. Use this OR everyDays. |
| endsAfter | number |
Change an existing bed's name, type, or dimensions. Identify the bed by its current name. Use when the user wants to rename a bed, change its type, or set/adjust its dimensions.
| Argument | Type | Description |
|---|---|---|
| bed* | string | The bed's current name. |
| name | string | New name (optional). |
| type | string | New type (optional). |
| garden | string | Garden name; defaults to the user's first garden. |
| widthCm | number | |
| heightCm | number | |
| lengthCm | number |
{
"type": "object",
"required": [
"bed"
],
"properties": {
"bed": {
"type": "string",
"description": "The bed's current name."
},
"name": {
"type": "string",
"description": "New name (optional)."
},
"type": {
"enum": [
"outdoor_bed",
"raised_bed",
"greenhouse",
"grow_light_shelf",
"pot"
],
"type": "string",
"description": "New type (optional)."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"widthCm": {
"type": "number"
},
"heightCm": {
"type": "number"
},
"lengthCm": {
"type": "number"
}
}
}Correct a logged harvest — the most-recent harvest of a plant (by name) or a specific harvestId. Edit quantity, unit, notes, or the date. Use when the user says a harvest they recorded was wrong.
| Argument | Type | Description |
|---|---|---|
| unit | string | lb and oz are stored as grams and need a quantity alongside. |
| notes | string | |
| plant | string | Edit the most-recent harvest of this plant. |
| garden | string | Garden name; defaults to the user's first garden. |
| quantity | number | Corrected amount (> 0). |
| harvestId | string | Or a specific harvest id. |
| harvestedAt | string | Corrected ISO datetime. |
{
"type": "object",
"properties": {
"unit": {
"enum": [
"g",
"kg",
"lb",
"oz",
"pcs"
],
"type": "string",
"description": "lb and oz are stored as grams and need a quantity alongside."
},
"notes": {
"type": "string"
},
"plant": {
"type": "string",
"description": "Edit the most-recent harvest of this plant."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"quantity": {
"type": "number",
"description": "Corrected amount (> 0)."
},
"harvestId": {
"type": "string",
"description": "Or a specific harvest id."
},
"harvestedAt": {
"type": "string",
"description": "Corrected ISO datetime."
}
}
}Update a queued succession-plan entry: change its status (planned/done/skipped), reschedule its targetDate, or adjust quantity/notes. Identify it by id (from list_planned_plantings). Use when the user sows a planned planting (mark status done), decides to skip it, or wants to reschedule/adjust it.
| Argument | Type | Description |
|---|---|---|
| id* | string | The planned planting's id (from list_planned_plantings). |
| notes | string | |
| garden | string | Garden name; defaults to the user's first garden. |
| status | string | |
| quantity | number | |
| targetDate | string | New planned date, YYYY-MM-DD. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The planned planting's id (from list_planned_plantings)."
},
"notes": {
"type": "string"
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"status": {
"enum": [
"planned",
"done",
"skipped"
],
"type": "string"
},
"quantity": {
"type": "number"
},
"targetDate": {
"type": "string",
"description": "New planned date, YYYY-MM-DD."
}
}
}Change a planting's status (active/finished/failed), notes, quantity, transplant date, variety, or MOVE it to another bed (pass bed with the target bed's name — history stays attached; any layout position is cleared, re-place with place_planting). Identify the planting by plant name or plantingId.
| Argument | Type | Description |
|---|---|---|
| bed | string | Move the planting to this bed (by name). |
| notes | string | |
| plant | string | Plant name of the planting to update. |
| garden | string | Garden name; defaults to the user's first garden. |
| status | string | |
| variety | string | Variety/cultivar; stored on the plant. |
| quantity | number | |
| plantingId | string | Or the planting id directly. |
| transplantedAt | string | ISO date the seedling went into the bed. |
{
"type": "object",
"required": [
"plant",
"bed"
],
"properties": {
"bed": {
"type": "string"
},
"notes": {
"type": "string"
},
"plant": {
"type": "string"
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"method": {
"enum": [
"direct_seed",
"indoor_start",
"transplanted_seedling"
],
"type": "string",
"description": "Default direct_seed."
},
"sownAt": {
"type": "string",
"description": "ISO date; default today."
},
"variety": {
"type": "string",
"description": "Variety/cultivar, e.g. \"Sremski F1\". Stored on the plant; replaces the variety of an existing plant with the same name."
},
"quantity": {
"type": "number"
},
"transplantedAt": {
"type": "string",
"description": "ISO date the seedling went into the bed (indoor starts)."
}
}
}| plantingId | string | Exact planting id (from query_plantings) — overrides plant. |
{
"type": "object",
"required": [
"type"
],
"properties": {
"bed": {
"type": "string",
"description": "Bed name — for bed-level events."
},
"note": {
"type": "string"
},
"type": {
"enum": [
"watered",
"fertilized",
"transplanted",
"pruned",
"pest",
"treated",
"frost_damage",
"note"
],
"type": "string"
},
"plant": {
"type": "string",
"description": "Plant name — targets its most recent active planting."
},
"amount": {
"type": "string",
"description": "For fertilized/treated."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"product": {
"type": "string",
"description": "For fertilized/treated."
},
"pestName": {
"type": "string",
"description": "For type=pest."
},
"severity": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"description": "For type=pest."
},
"occurredAt": {
"type": "string",
"description": "ISO datetime; default now."
},
"plantingId": {
"type": "string",
"description": "Exact planting id (from query_plantings) — overrides plant."
}
}
}| Optional: stop after this many completions. Use at most one of endsOn / endsAfter. |
| everyDays | number | Repeat every N days (1–365). Use this OR weekdays. |
| startDate | string | First due date YYYY-MM-DD; default today. |
{
"type": "object",
"properties": {
"bed": {
"type": "string",
"description": "Scope to this bed (optional; ignored if plant is given)."
},
"type": {
"enum": [
"water",
"fertilize",
"custom"
],
"type": "string",
"description": "Default water."
},
"label": {
"type": "string",
"description": "Optional label (mainly for custom)."
},
"plant": {
"type": "string",
"description": "Scope to this plant's active planting (optional)."
},
"amount": {
"type": "string",
"description": "Optional, e.g. '2 L'."
},
"endsOn": {
"type": "string",
"description": "Optional last date YYYY-MM-DD (inclusive); no task after it. Use at most one of endsOn / endsAfter."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"weekdays": {
"type": "array",
"items": {
"type": "string"
},
"description": "Repeat on these weekdays, e.g. ['monday','thursday']. Use this OR everyDays."
},
"endsAfter": {
"type": "number",
"description": "Optional: stop after this many completions. Use at most one of endsOn / endsAfter."
},
"everyDays": {
"type": "number",
"description": "Repeat every N days (1–365). Use this OR weekdays."
},
"startDate": {
"type": "string",
"description": "First due date YYYY-MM-DD; default today."
}
}
}{
"type": "object",
"properties": {
"bed": {
"type": "string",
"description": "Move the planting to this bed (by name)."
},
"notes": {
"type": "string"
},
"plant": {
"type": "string",
"description": "Plant name of the planting to update."
},
"garden": {
"type": "string",
"description": "Garden name; defaults to the user's first garden."
},
"status": {
"enum": [
"active",
"finished",
"failed"
],
"type": "string"
},
"variety": {
"type": "string",
"description": "Variety/cultivar; stored on the plant."
},
"quantity": {
"type": "number"
},
"plantingId": {
"type": "string",
"description": "Or the planting id directly."
},
"transplantedAt": {
"type": "string",
"description": "ISO date the seedling went into the bed."
}
}
}