{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_qkg788h6rzvk","handle":"air-quality-mcp","url":"https://wellknown.network/agents/air-quality-mcp","links":{"self":"https://wellknown.network/agents/air-quality-mcp/record.json","html":"https://wellknown.network/agents/air-quality-mcp","markdown":"https://wellknown.network/agents/air-quality-mcp/record.md","api":"https://wellknown.network/api/v1/agents/air-quality-mcp","status":"https://wellknown.network/api/v1/agents/air-quality-mcp/status","claim":"https://wellknown.network/agents/air-quality-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/air-quality-mcp/claim.json","badge":"https://wellknown.network/agents/air-quality-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/air-quality-mcp/history","tools":"https://wellknown.network/api/v1/agents/air-quality-mcp/tools"},"ard":{"identifier":"urn:air:ads.getlulu.dev:server:air-quality-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Air Quality MCP","summary":"Free, keyless real-time air quality (US AQI plus PM2.5, PM10, ozone, NO2, SO2, CO) for any city.","description":"Free, keyless real-time air quality (US AQI plus PM2.5, PM10, ozone, NO2, SO2, CO) for any city.","publisher":{"name":"Lulu-The-Narwhal","url":null},"homepage":null,"repository":"https://github.com/Lulu-The-Narwhal/lulu-platform","version":"0.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://ads.getlulu.dev/air-quality/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-08-09T12:00:15.867064Z","publishedAt":"2026-08-09T12:00:15.867064Z","registryName":"io.github.Lulu-The-Narwhal/air-quality-mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":0.554,"provenance":"derived"}],"categories":["dev"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 4h ago.","lastOkAt":"2026-10-09T21:27:28.574Z","lastProbedAt":"2026-10-09T21:27:28.574Z","statusComputedAt":"2026-10-09T21:28:11.545Z","reliability30d":{"probes":514,"successRate":1,"p50Ms":130,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":513,"ok":513,"authBoundaryOk":0,"serviceOk":513,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T21:27:28.574Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":112,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T15:32:58.389Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":123,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T09:26:40.516Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":116,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T02:27:30.920Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":115,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T20:24:16.830Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":120,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:22:48.331Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":132,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T06:22:44.046Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":135,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T23:25:40.630Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":144,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:28:56.280Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":116,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T10:48:18.537Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":112,"error":null,"detail":{"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"toolCount":1,"toolsHash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","serverName":"air-quality","capabilities":["experimental","logging","prompts","resources","tools","extensions"],"serverVersion":"3.4.4","protocolVersion":"2025-06-18"}}],"tools":[{"name":"get_air_quality","description":"Get the current air quality for a city, from real-time monitoring\nand atmospheric model data. Use for any \"what's the air quality in X\",\n\"is it safe to go outsi"}],"package":{"name":"domain-rdap-mcp","registry":"pypi","observedAt":"2026-09-26T10:27:48.053Z","publishedAt":"2026-08-07T08:11:12.493746Z","latestVersion":"0.1.0"},"toolSurface":{"id":"ts_x62fksj82hjz","endpointId":"ep_nr5cnggyy8vq","hash":"d2f9e7d4b0d990bf42759fcce413b564f690a4fcafe7709b9759f2abefb4ce39","toolCount":1,"serverName":"air-quality","serverVersion":"3.4.4","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T11:26:50.848Z","lastSeenAt":"2026-10-09T21:27:28.565Z","observations":100,"toolNames":["get_air_quality"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_nr5cnggyy8vq","url":"https://ads.getlulu.dev/air-quality/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T06:22:44.050Z","auth":{"observedAt":"2026-10-08T06:22:44.204Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T06:22:44.221Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"ads.getlulu.dev","issuer":{"commonName":"WR3","organization":"Google Trust Services"},"validFrom":"2026-09-05T16:06:13.000Z","validTo":"2026-12-04T16:59:46.000Z","daysToExpiry":55,"sanCount":1,"fingerprint256":"1E:7E:FD:6D:62:93:D5:CE:07:7A:74:AF:B0:14:05:B0:BE:A7:35:F5:B1:E7:80:6C:88:8F:F0:CC:EB:42:99:58"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.Lulu-The-Narwhal/air-quality-mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.Lulu-The-Narwhal%2Fair-quality-mcp","firstSeenAt":"2026-09-06T04:20:52.895Z","fetchedAt":"2026-10-09T22:20:32.733Z","normalizedAt":"2026-10-09T22:20:32.733Z"}]},"firstSeenAt":"2026-09-06T04:20:52.895Z","updatedAt":"2026-10-09T21:29:12.316Z"}