An AI-powered weather notification agent built with Goose + Infobip.
Ask Goose to check the weather and it sends you a notification — no coding required.
You → Goose → wttr.in (weather) → Infobip Message MCP → your phone
- You tell Goose "Check the weather and send me a message"
- Goose fetches live weather from wttr.in (free, no API key)
- Goose sends a message via the Infobip Message MCP server (SMS, RCS, or Viber)
- A scheduled recipe runs daily at 8am automatically
- macOS, Linux, or Windows computer
- Infobip account (free trial) — sign up here
- Infobip API key with messaging scopes
- A sender name set up in Infobip for your chosen channel (SMS, RCS, or Viber)
- A phone number to receive test messages
- An Anthropic API key (or other LLM provider)
macOS (Apple Silicon):
curl -sL "https://github.com/aaif-goose/goose/releases/download/v1.37.0/goose-aarch64-apple-darwin.tar.gz" -o /tmp/goose.tar.gz
tar xzf /tmp/goose.tar.gz -C /tmp
mv /tmp/goose ~/.local/bin/goose
chmod +x ~/.local/bin/gooseOther platforms: download from the releases page.
Verify:
goose --versionAdd to ~/.zshrc or ~/.bashrc:
export GOOSE_PROVIDER=anthropic
export GOOSE_MODEL=sonnet
export ANTHROPIC_API_KEY="sk-your-key-here"If using a custom endpoint:
export ANTHROPIC_HOST="https://your-custom-endpoint.com"- Log in to your Infobip account
- Go to Security > API Keys and create an API key with messaging scopes
- Go to Channels and set up a sender for SMS, RCS, or Viber
Edit ~/.config/goose/config.yaml:
extensions:
infobip-message:
name: Infobip Message
uri: https://mcp.infobip.com/message
type: streamable_http
enabled: true
timeout: 300
headers:
Authorization: "App YOUR_INFOBIP_API_KEY"Replace YOUR_INFOBIP_API_KEY with your actual API key.
gooseThen paste:
Check the weather in Newcastle and send a text message to 447700900123 from sender IBSelfServe.
Note:
IBSelfServeis a Viber sender name configured in Infobip. Replace it with your own sender name, and447700900123with your actual phone number (E.164 format, no+).
goose run -t "Check the weather in Newcastle and send a text message to 447700900123 from sender IBSelfServe."Goose has a built-in scheduler. Create a recipe and schedule it — no cron required.
Save this as weather-message.yaml:
version: "1.0.0"
title: "Daily Newcastle Weather Message"
description: "Fetches the weather for Newcastle and sends it as a text message."
prompt: |
1. Run this shell command to get the weather:
curl -s "wttr.in/Newcastle?format=3"
2. Send the result as a text message to 447700900123 from sender IBSelfServe.
3. Confirm the message was sent successfully.
extensions:
- type: platform
name: developer
bundled: true
description: "Run shell commands"
timeout: 30
- type: streamable_http
name: infobip-message
uri: https://mcp.infobip.com/message
timeout: 300
settings:
goose_provider: anthropic
goose_model: sonnet
max_turns: 10Important: The recipe's
extensionssection must match your actual authentication method. If your API key is in your globalconfig.yamlheaders (recommended), the recipe needsheadersnotenv_keys. See the example above.
The recipe needs to be copied to Goose's scheduled recipes directory:
mkdir -p ~/.local/share/goose/scheduled_recipes
cp weather-message.yaml ~/.local/share/goose/scheduled_recipes/daily-newcastle-weather.yamlgoose schedule add \
--schedule-id daily-newcastle-weather \
--cron "0 0 7 * * *" \
--recipe-source ~/.local/share/goose/scheduled_recipes/daily-newcastle-weather.yamlThis runs daily at 7:00 UTC = 8:00 AM BST. The cron format is 6-field (seconds, minutes, hours, day, month, weekday).
| Action | Command |
|---|---|
| List schedules | goose schedule list |
| Test immediately | goose schedule run-now --schedule-id daily-newcastle-weather |
| View past runs | goose schedule sessions --schedule-id daily-newcastle-weather |
| Remove schedule | goose schedule remove --schedule-id daily-newcastle-weather |
Goose's scheduler runs in the background only while Goose is running (Desktop app or CLI). If Goose isn't open at the scheduled time, the job is skipped. The scheduler does not run as a background daemon.
Troubleshooting: If you didn't get a scheduled message, check:
goose schedule list— verify the schedule exists and has rungoose schedule sessions --schedule-id daily-newcastle-weather— check past session logs- Check your Infobip account for delivery status — the Message MCP has no log tools
- Make sure Goose was actually running at the scheduled time
- Test immediately:
goose schedule run-now --schedule-id daily-newcastle-weather
If you want the alert to run even when Goose isn't open, use a system cron job:
crontab -eAdd this line (runs at 8am daily):
0 8 * * * cd /path/to/weather-alert-agent && /usr/bin/env GOOSE_PROVIDER=anthropic GOOSE_MODEL=sonnet ANTHROPIC_API_KEY="sk-..." ANTHROPIC_HOST="https://your-endpoint.com" /usr/local/bin/goose schedule run-now --schedule-id daily-newcastle-weather >> /tmp/goose-cron.log 2>&1
Replace the paths and API key with your actual values. This way the job fires regardless.
weather-alert-agent/
├── README.md ← You are here
├── goose-config.md ← Configuration guide
├── recipe.yaml ← Reusable Goose recipe
├── prompts/
│ └── examples.md ← Copy-pasteable prompts
└── screenshots/ ← Example screenshots (coming soon)
- Change city — edit the recipe prompt or use
wttr.in/London?format=3 - Add SMS failover — the Message MCP doesn't support failover; use the Viber MCP instead, which has built-in failover options — note it exposes more tools and will consume more tokens
- Rich forecasts — use
wttr.in/Newcastle?format=j1for full JSON with 3-day forecast