{"actions":{"bootstrapAndRun":{"effect":"installs rote if missing, inspects, prepares, and asks before running","href":"https://play.modiqo.ai/install?play=jaylabs/umbrella-check@0.1.5","method":"GET","rel":"https://rote.dev/rels/bootstrap-and-run","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"inspect":{"command":"rote play inspect https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5","effect":"read-only"},"installCliOnly":{"effect":"installs the rote CLI, nothing else","href":"https://play.modiqo.ai/install","method":"GET","rel":"https://rote.dev/rels/install-cli","requiresConsent":true,"responseMediaType":"text/x-shellscript"},"run":{"command":"rote play run https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5","effect":"executes the play locally after consent","headless":{"approvalAssertion":"--yes","approvalRequiredBeforeInvocation":true,"commandTemplate":"rote play run https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5 <name=value...> --yes","stdinPolicy":"never pipe input to automate the interactive Ready selector"},"requiresConsent":true}},"description":"People in Bangalore never know when they need an umbrella. This looks at the next three hours instead of the whole day, which is the question you have at 8am on the doorstep and at 4pm before you leave. It finds you from your IP, reads the hourly rain probability there, and gives one of four verdicts. Take it, pocket a small one, probably fine, go free. Supply coordinates and it skips the location lookup entirely, so nothing is sent to a geolocation service at all. Two public GET APIs, no key and no account. The first run on the machine that built it cost 3,946 tokens. It reads and nothing else.","distribution":{"digest":"sha256:f64812de6a07ee03cb6e351b60e2143afa26472a5658505334614bcc0d7e3db2","mediaType":"application/vnd.modiqo.rote-flow","size":7530,"verifiedBy":"rote verifies the downloaded archive against this digest before it runs"},"effects":{"credentialsProvidedBy":"runner","credentialsRemainLocal":true,"declaredWrites":[],"publisherReceivesCredentials":false},"id":"https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5","inputPolicy":{"optionalWithDefault":"show_default_and_accept_override","optionalWithoutDefault":"omit_unless_supplied","required":"ask","secrets":"collect_locally_outside_conversation"},"links":{"docs":"https://rote.dev","page":"https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5","protocol":"https://play.modiqo.ai/.well-known/rote","self":"https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5.json"},"name":"umbrella-check","owner":{"kind":"org","slug":"jaylabs"},"parameters":[{"default":3,"description":"How many hours ahead to look, counting from the hour open-meteo reports as current. Whole number from 1 to 24; anything outside that range stops the run with an error. Defaults to 3, about the length of a commute.","example":3,"input":{"allowCustom":true,"choices":[],"label":"Hours"},"name":"hours","required":false,"type":"integer"},{"description":"Latitude to read the forecast for, as a decimal between -90 and 90, used instead of the IP lookup. Set it when your IP resolves to the wrong city, a VPN exit for instance. Left empty, the run uses the coordinates ipapi returns.","example":"12.9716","input":{"allowCustom":true,"choices":[],"label":"Latitude"},"name":"latitude","required":false,"type":"string"},{"description":"Longitude to pair with latitude, as a decimal between -180 and 180. Required whenever latitude is set, and ignored when it is not.","example":"77.5946","input":{"allowCustom":true,"choices":[],"label":"Longitude"},"name":"longitude","required":false,"type":"string"}],"preparation":[{"action":{"command":"rote play inspect https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5 --json","effect":"read-only"},"step":1,"type":"inspect_local_readiness"},{"references":["/parameters"],"step":2,"type":"collect_parameters"},{"references":["/parameters","/requirements","/effects"],"step":3,"type":"review"},{"consentBoundary":"the user approves the exact play and parameter values","references":["/parameters","/requirements","/effects"],"step":4,"type":"obtain_run_consent"},{"action":{"command":"rote play run https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5","headlessCommandTemplate":"rote play run https://play.modiqo.ai/jaylabs/umbrella-check@0.1.5 <name=value...> --yes"},"preservesAcquisitionBoundaries":["adapter_selection","oauth_dcr","google_discovery","static_token_setup","runtime_security_checks"],"requiresConsent":true,"step":5,"type":"run"}],"producedBy":{"roteVersion":"0.79.0"},"publishedAt":"2026-09-04T12:22:45.782385+00:00","reference":"jaylabs/umbrella-check@0.1.5","requirements":{"adapters":[{"bindingStatus":"resolved","credentialDemand":{"requirements":[],"status":"not_required"},"displayName":"ipapi.co IP Geolocation","fingerprint":"mcp_2b1dUfnhjNT8uVnKDymTZ87oUZra","id":"ipapi","purpose":"IP geolocation with no API key. Resolves any IPv4 or IPv6 address - including the caller's own - to city, region, country, postal code, latitude, longitude, IANA timezone, UTC offset, currency, calling code and ASN/organisation. Two read-only GET operations: locateCallerIp (no arguments) and locateIp (one ip argument). Free tier, unauthenticated, rate limited by ipapi.co. Returns HTTP 200 with an error field on failure.","requirement":"jaylabs/ipapi@1.0.1","version":"1.0.1"},{"bindingStatus":"resolved","credentialDemand":{"requirements":[],"status":"not_required"},"displayName":"Open-Meteo","fingerprint":"mcp_2YgsU84PjXRHyP7ALsx5a5QE2FBy","id":"open-meteo","purpose":"Weather forecast with no API key. One read-only GET operation returns hourly, daily, current or 15-minute forecasts for any WGS84 latitude/longitude: precipitation probability, precipitation and rain totals, temperature, wind, cloud cover and WMO weather codes, out to 16 days with optional past days. Set timezone=auto for local timestamps. Free for non-commercial use under CC BY 4.0 on api.open-meteo.com; commercial traffic uses a separate host and apikey.","requirement":"jaylabs/open-meteo@1.0.1","version":"1.0.1"}],"browser":{"dependencies":[],"runtime":false,"signIn":false},"roteCli":{"minimumVersion":"0.62.0"},"sessions":true},"resolution":"pinned","schema":"rote.play.v1","stats":{"downloads":1,"installs":0},"steps":{"count":3,"names":["forecast_from_ip","forecast_pinned","locate"]},"title":"umbrella-check","type":"play","version":"0.1.5","visibility":"public"}