Siltwell
by siltwell.com · remote · no sign-in to list tools · v1.0.0 · published by com.siltwell
Your garden notebook: ask about your beds, plantings, harvests and frost dates, and log your work.
32 tools: 10 can delete or cancel things, 6 change things and 16 only read.
Scanned Oct 21, 2026
- Deletes or cancels10Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things6Claude Code: ask: see these tools
- Only reads16Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http garden https://app.siltwell.com/mcpFindings
Matches of fixed checks, with the text they matched.
- Warnlog_event
The server marks "log_event" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "log_event" says "log": a word for reading.
- Warnlog_curing
The server marks "log_curing" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "log_curing" says "log": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
32 tools
Deletes or cancels 10Claude Code: deny
add_plantingRecord that the user planted/sowed something: creates the plant in their catalog if new and the planting in the named bed.No findings
Why it is in this group
- The name "add_planting" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Add a planting
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
delete_bedRemove a bed from the garden.No findings
Why it is in this group
- The name "delete_bed" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Archive a bed
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
delete_planned_plantingRemove an entry from the succession plan outright (a queued future planting that hasn't been sown).No findings
Why it is in this group
- The name "delete_planned_planting" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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).
Annotations the server declares
- title: Delete a planned planting
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
delete_plantingRemove a planting from the garden.No findings
Why it is in this group
- The name "delete_planting" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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).
Annotations the server declares
- title: Archive a planting
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
delete_scheduleTurn off a recurring care schedule (stops its reminders).No findings
Why it is in this group
- The name "delete_schedule" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Delete a care schedule
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
place_plantingPlace 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.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Place a planting in a bed
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
update_bedChange an existing bed's name, type, or dimensions.No findings
Why it is in this group
- The name "update_bed" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Update a bed
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
update_harvestCorrect a logged harvest — the most-recent harvest of a plant (by name) or a specific harvestId.No findings
Why it is in this group
- The name "update_harvest" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Update a harvest
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
update_planned_plantingUpdate a queued succession-plan entry: change its status (planned/done/skipped), reschedule its targetDate, or adjust quantity/notes.No findings
Why it is in this group
- The name "update_planned_planting" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Update a planned planting
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
update_plantingChange 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 attac…No findings
Why it is in this group
- The name "update_planting" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Update a planting
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: false
Changes things 6Claude Code: ask
add_planned_plantingQueue 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).No findings
Why it is in this group
- The name "add_planned_planting" says "add": a word for a change.
Description, as the server wrote 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".
Annotations the server declares
- title: Plan a planting
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
create_bedAdd a garden bed.No findings
Why it is in this group
- The name "create_bed" says "create": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Create a bed
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
log_curingRecord that a harvested crop has finished curing (or dismiss the reminder).1 finding
Why it is in this group
- The name "log_curing" says "log": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "log_curing" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "log_curing" says "log": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Log curing
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
log_eventRecord something the user did or observed: watered, fertilized, transplanted, pruned, pest sighting, treatment, frost damage, or a note.1 finding
Why it is in this group
- The name "log_event" says "log": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "log_event" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "log_event" says "log": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Log a garden event
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
record_harvestRecord a harvest, e.g.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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.
Annotations the server declares
- title: Record a harvest
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
set_care_scheduleCreate a recurring care schedule (water/fertilize/custom).No findings
Why it is in this group
- The name "set_care_schedule" says "set": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Set a care schedule
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: false
Only reads 16Claude Code: allow
get_bed_layoutRead 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.No findings
Why it is in this group
- The name "get_bed_layout" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get a bed's layout
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_current_conditionsCurrent weather at the garden (station if connected, else forecast) plus per-bed soil moisture/temperature.No findings
Why it is in this group
- The name "get_current_conditions" says "get": a word for reading.
Description, as the server wrote it 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".
Annotations the server declares
- title: Get current conditions
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_forecast7-day forecast for the garden with overnight-low frost alerts.No findings
Why it is in this group
- The name "get_forecast" says "get": a word for reading.
Description, as the server wrote it 7-day forecast for the garden with overnight-low frost alerts. Use for planting timing, frost protection, watering plans.
Annotations the server declares
- title: Get the forecast
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_harvestsList harvests with per-plant totals.No findings
Why it is in this group
- The name "get_harvests" says "get": a word for reading.
Description, as the server wrote it List harvests with per-plant totals. Use when the user asks what/how much they harvested.
Annotations the server declares
- title: Get harvests
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_historyDaily weather history for the garden: min/max temp, rain, growing degree days (base 10 °C) with a cumulative total.No findings
Why it is in this group
- The name "get_history" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get weather history
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_planUpcoming 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…No findings
Why it is in this group
- The name "get_plan" says "get": a word for reading.
Description, as the server wrote it 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".
Annotations the server declares
- title: Get sowing windows and care tasks
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_season_planCompute 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…No findings
Why it is in this group
- The name "get_season_plan" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get the season plan
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_soil_readingsLatest soil moisture % and soil temperature per bed, with bed names.No findings
Why it is in this group
- The name "get_soil_readings" says "get": a word for reading.
Description, as the server wrote it Latest soil moisture % and soil temperature per bed, with bed names. Use for watering/sowing decisions.
Annotations the server declares
- title: Get soil readings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_bedsList 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.No findings
Why it is in this group
- The name "list_beds" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List beds
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_planned_plantingsList 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).No findings
Why it is in this group
- The name "list_planned_plantings" says "list": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: List planned plantings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
lookup_frost_datesAverage last spring frost, average first fall frost and hardiness zone for any place, from 10 years of weather records.No findings
Why it is in this group
- The name "lookup_frost_dates" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Look up frost dates for a place
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
lookup_frost_riskForecast lows for the next 7 days at any place and the nights at risk of frost.No findings
Why it is in this group
- The name "lookup_frost_risk" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Look up frost risk this week for a place
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
lookup_growing_seasonFrost-free season length and seasonal growing degree days at any place, and whether heat-loving crops get enough heat to ripen.No findings
Why it is in this group
- The name "lookup_growing_season" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Look up growing season length for a place
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
lookup_planting_windowsWhen 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.No findings
Why it is in this group
- The name "lookup_planting_windows" says "lookup": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Look up planting windows for a place
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
query_plantingsList the user's plantings (what is planted, where, when, how, current status).No findings
Why it is in this group
- The name "query_plantings" says "query": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Find plantings
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_eventsSearch the garden log: watering, fertilizing, transplanting, pruning, pest sightings, treatments, frost damage, notes.No findings
Why it is in this group
- The name "search_events" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Search the garden log
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http garden https://app.siltwell.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__garden__query_plantings",
"mcp__garden__search_events",
"mcp__garden__get_harvests",
"mcp__garden__list_beds",
"mcp__garden__get_bed_layout",
"mcp__garden__get_current_conditions",
"mcp__garden__get_soil_readings",
"mcp__garden__get_forecast",
"mcp__garden__get_history",
"mcp__garden__get_plan",
"mcp__garden__list_planned_plantings",
"mcp__garden__get_season_plan",
"mcp__garden__lookup_frost_dates",
"mcp__garden__lookup_planting_windows",
"mcp__garden__lookup_growing_season",
"mcp__garden__lookup_frost_risk"
],
"ask": [
"mcp__garden__log_event",
"mcp__garden__record_harvest",
"mcp__garden__log_curing",
"mcp__garden__create_bed",
"mcp__garden__set_care_schedule",
"mcp__garden__add_planned_planting"
],
"deny": [
"mcp__garden__add_planting",
"mcp__garden__update_bed",
"mcp__garden__update_planting",
"mcp__garden__delete_planting",
"mcp__garden__delete_bed",
"mcp__garden__delete_schedule",
"mcp__garden__update_harvest",
"mcp__garden__place_planting",
"mcp__garden__update_planned_planting",
"mcp__garden__delete_planned_planting"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as garden. Review it before you use it.