{"name":"io.github.davidmosiah/wellness-air","slug":"davidmosiah-wellness-air","title":null,"description":"Local-first air-quality MCP for AI agents — AirGradient, AirThings, PurpleAir, IQAir, Awair.","url":"https://mcp.market/server/davidmosiah-wellness-air","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":18,"stars":0,"forks":0,"downloads_week":null,"last_push_at":"2026-08-29T10:34:34.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/davidmosiah/wellness-air","website":"https://wellness.delx.ai/connectors/air","version":"0.5.6","remotes":[],"packages":[{"registryType":"npm","identifier":"wellness-air","version":"0.5.6","transport":{"type":"stdio"}}],"tools":[{"name":"air_agent_manifest","description":"Returns the wellness-air agent manifest: tool list, supported clients, env vars, recommended first calls, capabilities, privacy posture, and community links.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_aqi_check","description":"Returns just the AQI number + band for the configured location. Use for fast 'is the air OK to go outside?' prompts.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_capabilities","description":"Lists supported providers, configured providers (via env vars), available metrics, and privacy modes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_compare_locations","description":"Compare current readings across multiple location IDs (default: AirGradient public sensors).","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_connection_status","description":"Reports which providers are configured, which is the default, and any warnings the agent should surface to the user.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_current_reading","description":"Fetches the most recent air-quality reading for a location. Defaults to the AirGradient public sensor at WELLNESS_AIR_DEFAULT_LOCATION (or pass locationId).","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_daily_summary","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_data_inventory","description":"Returns the inventory of air-quality metrics this connector exposes plus per-provider availability hints (no remote calls).","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_demo","description":"Returns a realistic example payload of what air_current_reading + air_daily_summary look like in practice. Use this to help users understand what the connector will return BEFORE they configure anything.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_health_bands","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_health_recommendation","description":"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_ba","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_list_devices","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_onboarding","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_privacy_audit","description":"Returns what wellness-air stores locally, what it sends to providers, what it never logs, and agent rules.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_profile_get","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_profile_update","description":"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.","write_action":true,"price_micros":0,"input_schema":null},{"name":"air_quickstart","description":"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?'","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_search_public_sensors","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"air_trend","description":"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). Pass `pollutant: 'all'` (default) for an array of per-pollutant trends p","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-26T11:37:35.566Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T11:37:35.601Z","components":{"code":{"score":25,"max":25,"notes":["30 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 28 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"wellness-air","version":"0.5.6","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":4,"publishedAt":"2026-05-29T13:11:01.728Z","repositoryUrl":"git+https://github.com/davidmosiah/wellness-air.git"}],"repo":{"found":true,"owner":"davidmosiah","repo":"wellness-air","archived":false,"pushedAt":"2026-08-29T10:34:34Z","stars":0,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/624359?v=4","ownerCreatedAt":"2011-02-18T00:23:21Z","license":"MIT"},"icon":{"url":"https://wellness.delx.ai/favicon.svg","source":"site"},"presence":{"stars":0,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-29T10:34:34.000Z","score":18}}}},"grade_history":[],"reviews":[]}