{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_xq97swkkd6cc","handle":"openqa-mcp","url":"https://wellknown.network/agents/openqa-mcp","links":{"self":"https://wellknown.network/agents/openqa-mcp/record.json","html":"https://wellknown.network/agents/openqa-mcp","markdown":"https://wellknown.network/agents/openqa-mcp/record.md","api":"https://wellknown.network/api/v1/agents/openqa-mcp","status":"https://wellknown.network/api/v1/agents/openqa-mcp/status","claim":"https://wellknown.network/agents/openqa-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/openqa-mcp/claim.json","badge":"https://wellknown.network/agents/openqa-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/openqa-mcp/history","tools":"https://wellknown.network/api/v1/agents/openqa-mcp/tools"},"ard":{"identifier":"urn:air::server:openqa-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"openqa-mcp","summary":"Local openQA mcp client","description":"# openqa-mcp\n\nAn [MCP](https://modelcontextprotocol.io) server that exposes curated,\ntyped tools over the [openQA](https://open.qa) REST API. It is built on\n[fastmcp](https://github.com/jlowin/fastmcp) 3.x and the\n[openqa-async](https://pypi.org/project/openqa-async/) transport client.\n\nRead tools work anonymously; mutating tools require API credentials and\nreturn `403` without them.\n\n## Install\n\n```sh\nuv sync\n```\n\nThis installs the package and its dependencies into a project virtualenv\nand exposes the `openqa-mcp` console script.\n\n## Configuration\n\nThe server reads its configuration from environment variables, falling back\nto the openQA client config file for credentials.\n\n### Environment variables\n\n| Variable | Default | Purpose |\n| --- | --- | --- |\n| `OPENQA_SERVER` | openqa-async default | openQA host (e.g. `openqa.opensuse.org`). |\n| `OPENQA_API_KEY` | *(unset)* | API key; overrides the config file when set. |\n| `OPENQA_API_SECRET` | *(unset)* | API secret; overrides the config file when set. |\n| `OPENQA_VERIFY` | `true` | TLS verification: `true`/`false`, or a path to a CA bundle. |\n| `OPENQA_MCP_TIMEOUT` | `30.0` | Per-request HTTP timeout (seconds) for openQA calls; raise for slow queries like large `latest=1` failed-job lists. `<=0` disables the timeout. |\n\n`OPENQA_API_KEY` and `OPENQA_API_SECRET` only take effect when **both** are\nset; a partial pair is ignored so the client is never half-configured.\n\n### Config file\n\nIf the env credentials are not set, openqa-async loads them from\n`~/.config/openqa/client.conf` (or `/etc/openqa/client.conf`). Generate a\nkey/secret from the *API keys* page of your openQA instance and add a section\nkeyed by the host:\n\n```ini\n[openqa.opensuse.org]\nkey = YOUR_API_KEY\nsecret = YOUR_API_SECRET\n```\n\nWithout any credentials the server is GET-only (read tools succeed, mutating\ntools get `403`).\n\n## Tools\n\n### Read tools\n\n| Tool | Description |\n| --- | --- |\n| `list_jobs` | List jobs matching the given filters. Pass `summary=True…","publisher":null,"homepage":null,"repository":null,"version":"0.6.0","license":null,"protocols":["mcp"],"tags":["mcp"],"pricing":null,"endpoints":[{"url":"pypi:openqa-mcp","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","summary":"pypi","version":"pypi","description":"pypi"}},"derived":{"capabilities":[{"slug":"dev.package-management","name":"Packages & Dependencies","confidence":1,"provenance":"derived"}],"categories":["dev"],"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":"openqa-mcp","registry":"pypi","observedAt":"2026-11-09T23:24:53.302Z","publishedAt":"2026-07-20T10:18:56.976596Z","latestVersion":"0.6.0"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"openqa-mcp","url":"https://pypi.org/project/openqa-mcp/","firstSeenAt":"2026-09-10T08:26:52.474Z","fetchedAt":"2026-11-09T23:22:40.375Z","normalizedAt":"2026-11-09T23:22:40.375Z"}]},"firstSeenAt":"2026-09-10T08:26:52.474Z","updatedAt":"2026-11-09T23:24:53.302Z"}