Skip to main content
Glama

GO AI Tools

Plant watering calendar (.ics)

plant_watering_calendar
Read-onlyIdempotent

Builds a soil-check interval per houseplant from a fixed drought-tolerance table (32 common houseplants), adjusted by pot size, pot material, light and season, and returns both a schedule breakdown and the full text of a downloadable RFC 5545 .ics calendar file -- one recurring all-day 'check the soil' reminder per plant (deliberately never 'water', since only the plant's own soil can say that). Matches GO AI's browser watering-calendar tool exactly, including its northern-hemisphere-season default when season is omitted, its terracotta/glazed/low-light/winter multipliers, and its 75-octet .ics line folding. The starting intervals are heuristic drought-tolerance bands, not a measurement of any specific plant, pot or room -- the tool says so in its own FAQ.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
lightNoLight level: bright direct sun dries soil fastest, low light slowest. Defaults to bright-but-indirect.indirect
plantsYesHouseplant ids to include (each event uses this exact catalog, no free text). Duplicates are ignored. Ids: snake, zz, aloe, jade, echeveria, cactus, hawortia, ponytail, rubber, monstera, pothos, philodendron, fiddle, dracaena, yucca, schefflera, spider, peaceLily, anthurium, orchid, birdOfPara, parlour, kentia, areca, chinese, prayer, calathea, fern, maidenhair, fittonia, begonia, africanViolet.
seasonNoCurrent season, which scales every interval (summer fastest, winter roughly 60% slower). If omitted, defaults from today's calendar month assuming the *northern* hemisphere, exactly like the source page -- pass this explicitly for a southern-hemisphere season or to plan for a season other than the current one.
potSizeNoPot diameter band: small (under 12cm), medium (12-25cm, default), large (over 25cm). A larger pot holds more soil and dries more slowly.medium
startDateNoFirst reminder date, YYYY-MM-DD. Every plant's recurring event starts on this same date, each with its own repeat interval. Defaults to today.
potMaterialNoUnglazed terracotta breathes and dries noticeably faster than plastic (default) or glazed ceramic.plastic

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
noteYesStanding caution that these intervals are a starting point to adjust against the actual soil.
summaryYesThe set at a glance, for deciding a single watering day.
calendarYesThe schedule as a subscribable calendar. Returned inline as text, not as a file download.
scheduleYesOne entry per requested plant, in catalogue order.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "calendar": {
      +      "additionalProperties": false,
      +      "description": "The schedule as a subscribable calendar. Returned inline as text, not as a file download.",
      +      "properties": {
      +        "filename": {
      +          "description": "Suggested filename for the calendar file.",
      +          "type": "string"
      +        },
      +        "icsText": {
      +          "description": "A complete iCalendar document with a repeating event per plant, ready to write to a file and import.",
      +          "type": "string"
      +        },
      +        "mimeType": {
      +          "description": "MIME type of icsText, i.e. text/calendar.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "filename",
      +        "mimeType",
      +        "icsText"
      +      ],
      +      "type": "object"
      +    },
      +    "note": {
      +      "description": "Standing caution that these intervals are a starting point to adjust against the actual soil.",
      +      "type": "string"
      +    },
      +    "schedule": {
      +      "description": "One entry per requested plant, in catalogue order.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "baseDays": {
      +            "description": "The plant's baseline interval before pot, light and season adjustments.",
      +            "type": "number"
      +          },
      +          "intervalDays": {
      +            "description": "Days between waterings after every adjustment -- the number to act on.",
      +            "type": "number"
      +          },
      +          "key": {
      +            "description": "Stable identifier for the plant, as given in the input.",
      +            "type": "string"
      +          },
      +          "multiplier": {
      +            "description": "The combined adjustment applied to baseDays, so the difference is auditable rather than magic.",
      +            "type": "number"
      +          },
      +          "name": {
      +            "description": "The plant's common name.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "key",
      +          "name",
      +          "intervalDays",
      +          "baseDays",
      +          "multiplier"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "summary": {
      +      "additionalProperties": false,
      +      "description": "The set at a glance, for deciding a single watering day.",
      +      "properties": {
      +        "chosenCount": {
      +          "description": "How many plants were scheduled.",
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "maxIntervalDays": {
      +          "description": "The longest interval in the set.",
      +          "type": "number"
      +        },
      +        "minIntervalDays": {
      +          "description": "The thirstiest plant's interval -- the cadence that actually governs a shared watering round.",
      +          "type": "number"
      +        },
      +        "seasonFactor": {
      +          "description": "The season multiplier applied to every plant.",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "chosenCount",
      +        "minIntervalDays",
      +        "maxIntervalDays",
      +        "seasonFactor"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "schedule",
      +    "summary",
      +    "calendar",
      +    "note"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint=false), the description adds substantial behavioral context: the output format, the one-recurring-event-per-plant design, the deliberate refusal to label reminders as 'water', the exact compatibility target including northern-hemisphere defaults and 75-octet line folding, and the heuristic nature of the intervals. No contradiction exists between the description and the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: the first sentence states the core function and output, the second captures compatibility and exact behavioral matching, and the third adds a necessary caveat about heuristic values. It is front-loaded with the most important information and contains no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, 32-plant catalog, computed schedule, .ics generation), the description covers the key behavioral model, output format, defaults, compatibility, and limitations. An output schema exists to document return values, so the description does not need to restate them. Nothing essential for an agent to select and invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the input schema already explains each parameter's meaning, defaults, and effect (e.g., larger pot dries slower, terracotta dries faster, season defaults from northern hemisphere). The description adds overall algorithm context but does not meaningfully deepen per-parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and object: it builds a soil-check interval per houseplant from a fixed drought-tolerance table and returns both a schedule breakdown and an RFC 5545 .ics file. It also clarifies the exact scope (32 common houseplants) and the deliberate distinction between 'check the soil' and 'water', making the purpose unmistakable and easily distinguishable from any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys when this tool is appropriate: when generating soil-check reminder calendars for houseplants, and specifically when matching GO AI's browser watering-calendar tool. It does not explicitly name excluded alternatives, but the sibling list contains no comparable tool, and the description is specific enough that an agent would not confuse it with the other calculators or app-store utilities.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources