io.github.davidmosiah/wellness-air
Local-first air-quality MCP for AI agents — AirGradient, AirThings, PurpleAir, IQAir, Awair.
Versions
0.5.6latestTools 19
air_agent_manifest Returns the wellness-air agent manifest: tool list, supported clients, env vars, recommended first calls, capabilities, privacy posture, and community links.
air_capabilities Lists supported providers, configured providers (via env vars), available metrics, and privacy modes.
air_connection_status Reports which providers are configured, which is the default, and any warnings the agent should surface to the user.
air_privacy_audit Returns what wellness-air stores locally, what it sends to providers, what it never logs, and agent rules.
air_data_inventory Returns the inventory of air-quality metrics this connector exposes plus per-provider availability hints (no remote calls).
air_current_reading Fetches the most recent air-quality reading for a location. Defaults to the AirGradient public sensor at WELLNESS_AIR_DEFAULT_LOCATION (or pass locationId).
air_list_devices Lists devices owned by the configured provider account. v0.3 supports AirThings (requires AIRTHINGS_CLIENT_ID/SECRET). For AirGradient owned sensors use air_search_public_sensors instead.
air_aqi_check Returns just the AQI number + band for the configured location. Use for fast 'is the air OK to go outside?' prompts.
air_daily_summary Returns a synthesized daily snapshot for a location. v0.1 returns the current reading framed as a daily snapshot; richer multi-hour aggregation arrives in v0.2.
air_compare_locations Compare current readings across multiple location IDs (default: AirGradient public sensors).
air_search_public_sensors Helper for discovering AirGradient public sensors. Returns a curated list of well-maintained public sensors plus a hint to the AirGradient map for finding more.
air_quickstart Returns a personalized 3-step setup walkthrough for the human based on the current agent/env state. Call this first when the user asks 'how do I use this?'
air_profile_get Returns the shared Delx Wellness profile (~/.delx-wellness/profile.json). Read-only. Surfaces the user's preferred location, sensitivity flags (asthma, etc.), and units so wellness-air can choose tighter AQI thresholds.
air_profile_update Persist a partial patch to the shared Delx Wellness profile. Requires explicit_user_intent: true. Rejects any field containing oauth/token/secret/password/cookie/refresh/api_key/session — the profile is for non-secret wellness context only.
air_onboarding Returns the 11-question onboarding flow for the shared Delx Wellness profile. Read-only. The agent should ask these questions next so wellness-air (and the rest of the wellness stack) can personalize responses — non-secret data only, stored at ~/.delx-wellness/profile.json.
air_demo Returns a realistic example payload of what air_current_reading + air_aqi_check + air_daily_summary look like in practice. Use this to help users understand what the connector will return BEFORE they configure anything. The field names and nesting are not hand-maintained guesses: scripts/demo-contract-test.mjs runs the real handlers over a synthetic sensor fixture and fails the build if this sample invents a key or omits one.
air_health_recommendation Quick PM2.5-centric health recommendation. Pass current PM2.5 (µg/m³) and optionally CO2 (ppm) and VOC index; returns WHO/EPA-aligned bands per pollutant, the overall worst band, and a deduplicated list of plain-language actions. Use this when you have a reading already and just want a 'what should I do?' answer. For richer four-pollutant classification with full source citations use air_health_bands.
air_health_bands Classify PM2.5, PM10, CO2, and VOC readings into WHO 2021 / EPA / ASHRAE / UBA health bands. Pass readings directly, or omit them and the tool will fetch the current reading from the default provider (PM2.5, PM10, CO2, VOC where available). Returns per-pollutant band + the worst signal across pollutants + deduplicated recommended actions + source citations.
air_trend Windowed trend analysis for PM2.5 / CO2 / VOC. Pulls past measurements from AirGradient (public or owned) and returns per-pollutant mean / median / min / max / current / rate_of_change_per_hour / peak_at / trough_at / time_above_threshold_minutes plus an optional natural-language observation (only when the data supports one). `time_above_threshold_minutes` integrates real sample spacing, so sensor downtime lowers it instead of inflating it; check `coverage_ratio` (0–1 fraction of the window the sensor actually reported) and `last_sample_at` before treating it — or `current` — as a full-window figure. Pass `pollutant: 'all'` (default) for an array of per-pollutant trends plus `worst_pollutant` per current WHO/ASHRAE bands. Use this for 'is PM2.5 climbing?' / 'was CO2 stable overnight?' / 'when did VOC spike?' kinds of questions.
Permissions 2
shell high env_vars low