{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T20:30:49.185Z","url":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi","markdownUrl":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi.md","server":{"slug":"pipeworx-io-waqi","name":"Waqi","registryName":"io.github.pipeworx-io/waqi","description":"WAQI MCP — World Air Quality Index (free key)","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"pipeworx-mcp-waqi","type":"npm","identifier":"@pipeworx/mcp-waqi","withdrawn":false,"url":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi","version":"0.2.0","transport":"stdio","scoredAt":"2026-11-05T01:04:24.768Z"},"score":{"total":81,"tier":"high trust","status":"scored","weekDelta":0,"history":[{"date":"2026-11-05","total":81},{"date":"2026-11-04","total":81},{"date":"2026-11-03","total":81},{"date":"2026-11-02","total":81},{"date":"2026-11-01","total":81},{"date":"2026-10-31","total":81},{"date":"2026-10-30","total":81},{"date":"2026-10-29","total":81}]},"categories":[{"name":"Supply Chain Security","score":100,"verdict":"pass","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","No production dependencies, so there is no dependency health to assess."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.no_dependencies","args":{"deps":"0","unhealthy":"0"}}]},{"name":"Provenance & Transparency","score":97,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Cryptographically verified build provenance (signed, bound to pipeworx-io/mcp-waqi).","Clear OSI-approved license (MIT).","Actively maintained (last published 6 days ago).","Disclosure check failed: no security disclosure policy was found in the source repository."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.verified","args":{"repo":"pipeworx-io/mcp-waqi"}},{"code":"license.osi","args":{"spdx":"MIT"}},{"code":"maintenance.recent","args":{"age_days":"6"}},{"code":"disclosure.absent","args":{}}]},{"name":"Schema Quality & AI Usability","score":76,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Tool/resource definitions use about 496 tokens (~124/item across 4 items; 4 tools + 0 resources), lean.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_lean","args":{"avg":"124","items":"4","tools":"4","tokens":"496","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":0,"verdict":"unverified","reasons":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"codes":[{"code":"stability.insufficient_history","args":{}}]},{"name":"Tool Coverage","score":100,"verdict":"pass","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","100% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"100"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 4 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 5 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"4"}},{"code":"toolsafety.manipulation_clean","args":{"units":"5","judged":"5"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":["Stability not yet verified: not enough scan history yet (needs a 30-day window)."],"malware":[],"components":[{"slug":"waqi-mcp","type":"remote","identifier":"https://gateway.pipeworx.io/waqi/mcp","withdrawn":false,"score":63,"current":false,"url":"https://verifymcp.io/servers/pipeworx-io-waqi/waqi-mcp","markdownUrl":"https://verifymcp.io/servers/pipeworx-io-waqi/waqi-mcp.md"},{"slug":"pipeworx-mcp-waqi","type":"npm","identifier":"@pipeworx/mcp-waqi","withdrawn":false,"score":81,"current":true,"url":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi","markdownUrl":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@pipeworx/mcp-waqi"},{"label":"Version","value":"0.2.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"get_aqi_by_city","title":null,"description":"Latest AQI for a city from the World Air Quality Index Project station network. Accepts \"city\" or \"city, country\" (e.g. \"Rome, Italy\"). The matched station is checked against the requested place: a station that is not plausibly in it (the upstream resolves \"Venice\" to Dayton, Ohio) is never served; the call errors naming what it matched and listing candidates, and the response carries a place block stating requested vs matched. Every reading carries measured_at, station identity, data_age_hours and freshness. A reading older than 24h is never returned as current: a reporting station within 100 km is used (station_selection=fallback_fresher_station; skipped_stale_station says what was passed over) or the call errors naming the station and its age. Returns AQI value, dominant pollutant, individual pollutant readings (PM2.5, PM10, O3, NO2, SO2, CO), temperature/humidity/pressure, and station info.","inputs":[{"name":"city","type":"string","required":true,"description":"City name, optionally qualified by country or region after a comma (e.g., \"beijing\", \"los-angeles\", \"Rome, Italy\", \"Paris, Texas\")"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":258},{"name":"get_aqi_by_location","title":null,"description":"Latest AQI for the WAQI station nearest a lat/lon. Carries measured_at, data_age_hours and freshness; a station silent for over 24h is replaced by a reporting one within 100 km or the call errors.","inputs":[{"name":"latitude","type":"number","required":true,"description":"Latitude"},{"name":"longitude","type":"number","required":true,"description":"Longitude"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":75},{"name":"get_aqi_by_station","title":null,"description":"Latest AQI for a specific WAQI station by UID (numeric). Returned as asked even if the station has gone quiet, so check freshness and data_age_hours (stale = over 24h).","inputs":[{"name":"station_id","type":"number","required":true,"description":"WAQI station UID (returned by search_stations)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":70},{"name":"search_stations","title":null,"description":"Search stations by keyword (city/region name). Returns station UID, name, current AQI, and location.","inputs":[{"name":"keyword","type":"string","required":true,"description":"Search keyword"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":41}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T01:04:24.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"verified","label":"Verified","reason":"verified","reasonLabel":"Verified","discovery":"attestation_endpoint","discoveryLabel":"Registry attestation endpoint","sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":0,"partial":false,"deprecated":null,"stale":null,"noRepo":null}},"mismatches":[],"changelog":{"trackingSince":"2026-10-29","recent":[{"id":"chg_01a18740-688e-74d1-ab52-7627a0764244","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-29","url":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi#chg-chg_01a18740-688e-74d1-ab52-7627a0764244"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi/changelog.json"},"links":{"html":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi","markdown":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi.md","changelogJson":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi/changelog.json","changelogRss":"https://verifymcp.io/servers/pipeworx-io-waqi/pipeworx-mcp-waqi.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@pipeworx/mcp-waqi"},{"label":"Socket report","href":"https://socket.dev/npm/package/@pipeworx/mcp-waqi"},{"label":"Repository","href":"https://github.com/pipeworx-io/mcp-waqi"},{"label":"Website","href":"https://pipeworx.io/packs/waqi"}]}}