{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_m3w45nchp7bx","handle":"airq-mcp-timeseries","url":"https://wellknown.network/agents/airq-mcp-timeseries","links":{"self":"https://wellknown.network/agents/airq-mcp-timeseries/record.json","html":"https://wellknown.network/agents/airq-mcp-timeseries","markdown":"https://wellknown.network/agents/airq-mcp-timeseries/record.md","api":"https://wellknown.network/api/v1/agents/airq-mcp-timeseries","status":"https://wellknown.network/api/v1/agents/airq-mcp-timeseries/status","claim":"https://wellknown.network/agents/airq-mcp-timeseries/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/airq-mcp-timeseries/claim.json","badge":"https://wellknown.network/agents/airq-mcp-timeseries/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air::server:airq-mcp-timeseries","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"airq-mcp-timeseries","summary":"Shared time-series domain layer and Plotly renderer for air-Q MCP providers","description":"# airq-mcp-timeseries\n\n[![PyPI](https://img.shields.io/pypi/v/airq-mcp-timeseries)](https://pypi.org/project/airq-mcp-timeseries/)\n[![Python](https://img.shields.io/pypi/pyversions/airq-mcp-timeseries)](https://pypi.org/project/airq-mcp-timeseries/)\n[![License](https://img.shields.io/pypi/l/airq-mcp-timeseries)](LICENSE)\n[![Tests](https://github.com/CorantGmbH/airq-mcp-timeseries/actions/workflows/tests.yml/badge.svg)](https://github.com/CorantGmbH/airq-mcp-timeseries/actions/workflows/tests.yml)\n[![Publish to PyPI](https://github.com/CorantGmbH/airq-mcp-timeseries/actions/workflows/publish.yml/badge.svg)](https://github.com/CorantGmbH/airq-mcp-timeseries/actions/workflows/publish.yml)\n[![pre-commit enabled](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://pre-commit.com/)\n\nShared time-series domain layer and Plotly renderer for air-Q MCP providers.\n\nThis project is not an MCP server. It is the shared package that consolidates\ntime-series querying, normalization, resampling, summarization and plotting so\nthat `mcp-airq` and `mcp-airq-cloud` can reuse the same business logic.\n\n## Features\n\n- shared query, series, summary and plotting data models\n- source-agnostic `TimeSeriesProvider` protocol\n- metric normalization and query validation\n- resampling and peak-preserving downsampling\n- renderer-independent plot model\n- Plotly rendering for HTML plus matplotlib-based PNG, SVG and WebP exports\n- CSV and Excel export for processed time-series data\n- async high-level orchestration with `plot_history()`, `summarize_history()` and `export_history()`\n\n## Installation\n\n```bash\npip install airq-mcp-timeseries\n```\n\nThis package now includes `Pillow` as a runtime dependency so WebP rendering\nworks out of the box.\n\nFor development:\n\n```bash\nuv sync --frozen --extra dev\nuv run pre-commit install\n```\n\n## Usage\n\n```python\nfrom datetime import datetime, timedelta\n\nfrom airq_mcp_timeseries import HistoryQuery, PlotRequest, Selector,…","publisher":{"name":"Corant GmbH","url":null},"homepage":"https://github.com/CorantGmbH/airq-mcp-timeseries","repository":"https://github.com/CorantGmbH/airq-mcp-timeseries","version":"0.1.7","license":null,"protocols":["mcp"],"tags":["air-q","airq","mcp","plotly","timeseries"],"pricing":null,"endpoints":[{"url":"pypi:airq-mcp-timeseries","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","repoUrl":"pypi","summary":"pypi","version":"pypi","description":"pypi","homepageUrl":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":0.768,"provenance":"derived"},{"slug":"documents.spreadsheets","name":"Spreadsheets","confidence":0.733,"provenance":"derived"}],"categories":["content","dev","documents"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"airq-mcp-timeseries","registry":"pypi","observedAt":"2026-09-09T08:22:45.133Z","publishedAt":"2026-03-16T16:16:35.028711Z","latestVersion":"0.1.7"}},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"airq-mcp-timeseries","url":"https://pypi.org/project/airq-mcp-timeseries/","firstSeenAt":"2026-09-09T08:21:55.130Z","fetchedAt":"2026-09-09T08:21:55.130Z","normalizedAt":"2026-09-09T08:21:55.130Z"}]},"firstSeenAt":"2026-09-09T08:21:55.130Z","updatedAt":"2026-09-09T08:22:45.133Z"}