Skip to main content
Glama

check_grass_conditions

Read-onlyIdempotent

Retrieve current outdoor context including approximate location, weather conditions, temperature, minutes until sunset, golden-hour flag, and streak state to determine if an outdoor break is appropriate.

Instructions

Read-only. Returns the user's current outdoor context: approximate city/region (IP-based, cached 24h), weather code + temperature, minutes until sunset, golden-hour flag, and current streak state.

Data freshness: location is cached for 24h on disk; weather, temperature, and sunset are fetched live on every call (no caching, ~200–600ms latency depending on region). Streak fields reflect the on-disk state at call time. No permissions required beyond outbound HTTPS and read access to ~/.touch-grass/state.json.

Side effects: makes outbound HTTPS calls to ip-api.com (location, cached to ~/.touch-grass/state.json for 24h) and open-meteo.com (weather + sunset, no key, no rate limit at typical use). Reads ~/.touch-grass/state.json. No writes to streak state. No auth required.

When to use: once per session before deciding whether to nudge the user toward an outdoor break. The Claude Code plugin's SessionStart hook already injects this context, so prefer reading that injected block over calling this tool again.

When NOT to use: don't poll repeatedly within a single conversation — conditions change on the order of minutes, not seconds. If you only need streak data without a network call, use get_stats instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Behavior4/5

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

Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds data freshness details (location cached 24h, weather live), side effects (HTTPS calls to specific APIs, reads state.json), and latency. No contradiction.

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

Conciseness4/5

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

Well-structured with clear sections (initial summary, data freshness, side effects, when to use/not use). Slightly verbose but every sentence adds value.

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?

Extremely complete: explains returned fields, data sources, caching, latency, side effects, and usage guidelines. No missing information given zero parameters and no output schema.

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

Parameters4/5

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

Zero parameters; baseline is 4 per instructions. Description implicitly confirms no input required by describing what it returns.

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?

Verb 'returns' + specific resource 'user's current outdoor context'. Distinguishes from sibling get_stats by noting that get_stats gives streak data without a network call.

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

Usage Guidelines5/5

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

Explicitly states when to use (once per session before deciding to nudge) and when not to (don't poll repeatedly, use get_stats for streak only). Provides clear alternatives.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nalediym/touch-grass'

If you have feedback or need assistance with the MCP directory API, please join our Discord server