{
  "run_id": "LingChen-tsjmdlc--pyside-iconify-mcp-gpt-6-luna-1793166920744250652",
  "checker": {
    "claims": [
      {
        "claim": "The reference tool returns version-matched usage by topic.",
        "command": "uv run pyside-iconify-mcp tools/call {\"tool\": \"get_reference\", \"arguments\": {\"topic\": \"overview\"}}",
        "evidence": "\u2026Which entry point?\\n\\n| Need | Use | Returns |\\n| --- | --- | --- |\\n| A standalone icon in a layout; animation; hover color | `IconWidget(icon, ...)` | a `QWidget` |\\n| An icon for any widget or item view that takes a `QIcon` | `get_icon(icon, ...)` | `QIcon` |\\n| Put an icon on an existing button, action, tab, list or tree item, or window in one call | `set_icon(target, icon, ...)` | `QIcon` (also applied) |\\n| A static image | `get_pixmap(icon, ...)` | `QPixmap` |\\n\\nThe first parameter of all four is named `icon`, and it is positional: write\\n`get_icon(\\\"mdi:home\\\")`, not `get_icon(name=\\\"",
        "expected": "Which entry point?",
        "input": "{\"tool\": \"get_reference\", \"arguments\": {\"topic\": \"overview\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Which entry point?",
        "source": "Output: Markdown. The signatures are generated from the installed `pyside-iconify`, so",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Inspected README setup and development entrypoints; the repository documents an on-demand stdio MCP server with tools, no scheduler, cron, loop, webhook, or cycle trigger.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Inspected README setup and development entrypoints; the repository documents an on-demand stdio MCP server with tools, no scheduler, cron, loop, webhook, or cycle trigger.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "uv",
        "run",
        "pyside-iconify-mcp"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "name": "pyside-iconify",
        "version": "1.0.0"
      },
      "tool_result": {
        "_meta": {
          "fastmcp": {
            "wrap_result": true
          }
        },
        "content": [
          {
            "text": "# pyside-iconify overview\n\nLibrary version this reference was generated for: 1.2.0.\n\npyside-iconify gives Qt's `QIcon` an Iconify data source. Icons are fetched by name\n(for example `mdi:home`) from the Iconify ecosystem on first use, cached on disk and\nrendered locally. It supports PySide6 and PyQt6 (primary), PyQt5 and PySide2 (compatible).\nIt is not affiliated with the Iconify project.\n\n## Install\n\n```bash\npip install \"pyside-iconify[pyside6]\"   # or [pyqt6], [pyqt5], [pyside2]\n```\n\nWithout an extra the library installs but brings no Qt; it uses whichever binding the\nprogram has already imported.\n\n## Which entry point?\n\n| Need | Use | Returns |\n| --- | --- | --- |\n| A standalone icon in a layout; animation; hover color | `IconWidget(icon, ...)` | a `QWidget` |\n| An icon for any widget or item view that takes a `QIcon` | `get_icon(icon, ...)` | `QIcon` |\n| Put an icon on an existing button, action, tab, list or tree item, or window in one call | `set_icon(target, icon, ...)` | `QIcon` (also applied) |\n| A static image | `get_pixmap(icon, ...)` | `QPixmap` |\n\nThe first parameter of all four is named `icon`, and it is positional: write\n`get_icon(\"mdi:home\")`, not `get_icon(name=\"mdi:home\")`.\n\n## Icon names\n\nAn icon name is `prefix:name`. Both parts use only lowercase letters, digits and hyphens\nand start with a letter or digit. The prefix is the icon set (`mdi`, `lucide`, `line-md`).\nNames are not guessable: there are hundreds of thousands of icons. Find real ones with the\n`search_icons` tool and verify every name with `check_icons` before using it.\n\n## Minimal example\n\n```python\nfrom PySide6.QtWidgets import QApplication, QPushButton\nfrom pyside_iconify import IconWidget, get_icon, set_icon\n\napp = QApplication([])\n\nicon = IconWidget(\"mdi:home\", size=24, color=\"red\")   # standalone icon widget\nbutton = QPushButton(\"Settings\")\nbutton.setIcon(get_icon(\"mdi:cog\", size=20))           # a standard QIcon\nset_icon(button, \"mdi:home\", size=20, hover_color=\"red\")  # or apply it and add a hover color\n\napp.exec()\n```\n\n## Rules that prevent most mistakes\n\n- Create the `QApplication` first, and create widgets and icons on the main thread.\n- Invalid values raise (`InvalidColorError`, `InvalidSizeError`, ...); nothing silently\n  falls back. Check values before shipping.\n- `get_icon`, `get_pixmap` and `set_icon` produce static images: no animation parameters\n  and no hover on a bare `QIcon`. Use `IconWidget` for animation, `set_icon` or\n  `IconWidget` for hover.\n- A multi-color icon ignores a single `color`; pass a `{original: new}` mapping.\n\n## Suggested workflow with this server\n\n1. Read the topic you need with `get_reference` before writing code.\n2. Find icons with `search_icons`; verify every icon name with `check_icons`.\n3. Run the finished code through `check_code`.\n",
            "type": "text"
          }
        ],
        "isError": false,
        "structuredContent": {
          "result": "# pyside-iconify overview\n\nLibrary version this reference was generated for: 1.2.0.\n\npyside-iconify gives Qt's `QIcon` an Iconify data source. Icons are fetched by name\n(for example `mdi:home`) from the Iconify ecosystem on first use, cached on disk and\nrendered locally. It supports PySide6 and PyQt6 (primary), PyQt5 and PySide2 (compatible).\nIt is not affiliated with the Iconify project.\n\n## Install\n\n```bash\npip install \"pyside-iconify[pyside6]\"   # or [pyqt6], [pyqt5], [pyside2]\n```\n\nWithout an extra the library installs but brings no Qt; it uses whichever binding the\nprogram has already imported.\n\n## Which entry point?\n\n| Need | Use | Returns |\n| --- | --- | --- |\n| A standalone icon in a layout; animation; hover color | `IconWidget(icon, ...)` | a `QWidget` |\n| An icon for any widget or item view that takes a `QIcon` | `get_icon(icon, ...)` | `QIcon` |\n| Put an icon on an existing button, action, tab, list or tree item, or window in one call | `set_icon(target, icon, ...)` | `QIcon` (also applied) |\n| A static image | `get_pixmap(icon, ...)` | `QPixmap` |\n\nThe first parameter of all four is named `icon`, and it is positional: write\n`get_icon(\"mdi:home\")`, not `get_icon(name=\"mdi:home\")`.\n\n## Icon names\n\nAn icon name is `prefix:name`. Both parts use only lowercase letters, digits and hyphens\nand start with a letter or digit. The prefix is the icon set (`mdi`, `lucide`, `line-md`).\nNames are not guessable: there are hundreds of thousands of icons. Find real ones with the\n`search_icons` tool and verify every name with `check_icons` before using it.\n\n## Minimal example\n\n```python\nfrom PySide6.QtWidgets import QApplication, QPushButton\nfrom pyside_iconify import IconWidget, get_icon, set_icon\n\napp = QApplication([])\n\nicon = IconWidget(\"mdi:home\", size=24, color=\"red\")   # standalone icon widget\nbutton = QPushButton(\"Settings\")\nbutton.setIcon(get_icon(\"mdi:cog\", size=20))           # a standard QIcon\nset_icon(button, \"mdi:home\", size=20, hover_color=\"red\")  # or apply it and add a hover color\n\napp.exec()\n```\n\n## Rules that prevent most mistakes\n\n- Create the `QApplication` first, and create widgets and icons on the main thread.\n- Invalid values raise (`InvalidColorError`, `InvalidSizeError`, ...); nothing silently\n  falls back. Check values before shipping.\n- `get_icon`, `get_pixmap` and `set_icon` produce static images: no animation parameters\n  and no hover on a bare `QIcon`. Use `IconWidget` for animation, `set_icon` or\n  `IconWidget` for hover.\n- A multi-color icon ignores a single `color`; pass a `{original: new}` mapping.\n\n## Suggested workflow with this server\n\n1. Read the topic you need with `get_reference` before writing code.\n2. Find icons with `search_icons`; verify every icon name with `check_icons`.\n3. Run the finished code through `check_code`.\n"
        }
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 3979,
      "tools": [
        "get_reference",
        "search_icons",
        "check_icons",
        "check_code"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Call the documented overview reference tool.",
        "command": "uv run pyside-iconify-mcp",
        "deferred": false,
        "evidence": "                                                                           \u2502\n\u2502                  \ud83d\udda5  Server:      pyside-iconify, 1.0.0                       \u2502\n\u2502                  \ud83d\ude80 Deploy free: https://horizon.prefect.io                  \u2502\n\u2502                                                                              \u2502\n\u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256f\n\n\n[10/28/26 05:56:53] INFO     Starting MCP server                transport.py:241\n                             'pyside-iconify' with transport                    \n                             'stdio'",
        "expected": "overview usage markdown",
        "input": "topic=overview",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md / Tools / get_reference",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
