{
  "run_id": "LingChen-tsjmdlc--pyside-iconify-mcp-claude-haiku-5-5-1793163190998162453",
  "checker": {
    "claims": [
      {
        "claim": "get_reference with no topic lists the reference topics",
        "command": "uv run pyside-iconify-mcp tools/call {\"tool\": \"get_reference\", \"arguments\": {}}",
        "evidence": "\u2026# pyside-iconify reference topics\\n\\nGenerated for pyside-iconify 1.2.0. Call get_reference with one of:\\n\\n- `overview`: What the library is, which entry point to use, icon names, rules\\n- `icon_widget`: IconWidget: full signature, methods and signals\\n- `get_icon`: get_icon and get_pixmap: signature, and what they do not support\\n- `set_icon`: set_icon: putting icons on buttons, actions, tabs, items, windows\\n- `colors`: Every accepted color form, mappings, theme and state colors\\n- `sizes`: Every accepted size form\\n- `animation`: Built-in effects and the icon's own SMIL animation\\n- `pitfa",
        "expected": "topic list header",
        "input": "{\"tool\": \"get_reference\", \"arguments\": {}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: # pyside-iconify reference topics",
        "source": "Input: optional `topic`. Without a topic it lists them",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      },
      {
        "claim": "get_reference returns Markdown generated from the installed library",
        "command": "uv run pyside-iconify-mcp tools/call {\"tool\": \"get_reference\", \"arguments\": {\"topic\": \"colors\"}}",
        "evidence": "\u2026# Colors\\n\\n## Accepted color values\\n\\n| Form | Example | Notes |\\n| --- | --- | --- |\\n| CSS / SVG color name | `\\\"red\\\"`, `\\\"rebeccapurple\\\"` | Resolved by Qt |\\n| HEX | `\\\"#f00\\\"`, `\\\"#ff0000\\\"`, `\\\"#ff000080\\\"` | 3, 4, 6 or 8 digits. The 8-digit form is `#RRGGBBAA` (alpha last, CSS order), not Qt's `#AARRGGBB` |\\n| `rgb()` / `rgba()` | `\\\"rgb(255, 0, 0)\\\"`, `\\\"rgba(255, 0, 0, 0.5)\\\"` | Comma separated. Channels are integers 0-255 or percentages; alpha is 0-1 or a percentage |\\n| `hsl()` / `hsla()` | `\\\"hsl(210, 50%, 40%)\\\"` | Comma separated. Saturation and lightness must be percentages |",
        "expected": "Colors markdown section",
        "input": "{\"tool\": \"get_reference\", \"arguments\": {\"topic\": \"colors\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: # Colors",
        "source": "Output: Markdown. The signatures are generated from the installed `pyside-iconify`",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: pyproject [project.scripts] pyside-iconify-mcp = pyside_iconify_mcp.server:main is a stdio MCP server that runs only when a client calls it; README Development lists only uv sync, uv run pytest, uv run pyside-iconify-mcp. No scheduler, cron, loop, webhook, --once or --now found.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: pyproject [project.scripts] pyside-iconify-mcp = pyside_iconify_mcp.server:main is a stdio MCP server that runs only when a client calls it; README Development lists only uv sync, uv run pytest, uv run pyside-iconify-mcp. No scheduler, cron, loop, webhook, --once or --now found.",
        "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": "# Colors\n\n## Accepted color values\n\n| Form | Example | Notes |\n| --- | --- | --- |\n| CSS / SVG color name | `\"red\"`, `\"rebeccapurple\"` | Resolved by Qt |\n| HEX | `\"#f00\"`, `\"#ff0000\"`, `\"#ff000080\"` | 3, 4, 6 or 8 digits. The 8-digit form is `#RRGGBBAA` (alpha last, CSS order), not Qt's `#AARRGGBB` |\n| `rgb()` / `rgba()` | `\"rgb(255, 0, 0)\"`, `\"rgba(255, 0, 0, 0.5)\"` | Comma separated. Channels are integers 0-255 or percentages; alpha is 0-1 or a percentage |\n| `hsl()` / `hsla()` | `\"hsl(210, 50%, 40%)\"` | Comma separated. Saturation and lightness must be percentages |\n| Tuple | `(255, 0, 0)`, `(255, 0, 0, 128)` | 3 or 4 integers, 0-255 |\n| `\"transparent\"` | | Fully transparent |\n| `QColor`, `Qt.GlobalColor` | `QColor(\"red\")`, `Qt.GlobalColor.red` | Qt objects |\n\nAnything else raises `InvalidColorError`; an unparseable color never turns black silently.\n\n## Single color versus mapping\n\n- A single color recolors the parts of the icon drawn with `currentColor`. Monochrome\n  icons are entirely `currentColor`.\n- Multi-color icons (brand logos, flags) hard-code their colors and ignore a single color.\n  To recolor them, pass a `{original: replacement}` mapping. `check_icons` lists an icon's\n  fixed colors in `fixed_colors`.\n- The key `\"currentColor\"` may be used in a mapping to recolor the `currentColor` parts.\n- The keys of a mapping are the ORIGINAL colors. `color={\"light\": ..., \"dark\": ...}` is\n  wrong; use `color_light_theme` and `color_dark_theme`.\n\n```python\nfrom pyside_iconify import IconWidget\n\nlogo = IconWidget(\"logos:google-icon\", size=32, color={\"#4285f4\": \"red\"})\ntinted = IconWidget(\"mdi:home\", color=\"#d4af37\")\nthemed = IconWidget(\"mdi:home\", color_light_theme=\"black\", color_dark_theme=\"white\")\n```\n\n## Theme and state colors\n\n| Parameter | Where | Meaning |\n| --- | --- | --- |\n| `color` | all entry points | Base color; `None` follows the widget text color and the theme |\n| `color_light_theme`, `color_dark_theme` | all | Win over `color` on a light or dark theme |\n| `hover_color`, `hover_color_light_theme`, `hover_color_dark_theme` | `IconWidget`, `set_icon` | Hover color, opt-in |\n| `selected_color`, `selected_color_light_theme`, `selected_color_dark_theme` | `get_icon`, `set_icon` | Selected item color |\n\nWith no color set, icons follow the widget's text color and switch between light and dark\nthemes automatically. Disabled icons fade (alpha) instead of turning gray.\n",
            "type": "text"
          }
        ],
        "isError": false,
        "structuredContent": {
          "result": "# Colors\n\n## Accepted color values\n\n| Form | Example | Notes |\n| --- | --- | --- |\n| CSS / SVG color name | `\"red\"`, `\"rebeccapurple\"` | Resolved by Qt |\n| HEX | `\"#f00\"`, `\"#ff0000\"`, `\"#ff000080\"` | 3, 4, 6 or 8 digits. The 8-digit form is `#RRGGBBAA` (alpha last, CSS order), not Qt's `#AARRGGBB` |\n| `rgb()` / `rgba()` | `\"rgb(255, 0, 0)\"`, `\"rgba(255, 0, 0, 0.5)\"` | Comma separated. Channels are integers 0-255 or percentages; alpha is 0-1 or a percentage |\n| `hsl()` / `hsla()` | `\"hsl(210, 50%, 40%)\"` | Comma separated. Saturation and lightness must be percentages |\n| Tuple | `(255, 0, 0)`, `(255, 0, 0, 128)` | 3 or 4 integers, 0-255 |\n| `\"transparent\"` | | Fully transparent |\n| `QColor`, `Qt.GlobalColor` | `QColor(\"red\")`, `Qt.GlobalColor.red` | Qt objects |\n\nAnything else raises `InvalidColorError`; an unparseable color never turns black silently.\n\n## Single color versus mapping\n\n- A single color recolors the parts of the icon drawn with `currentColor`. Monochrome\n  icons are entirely `currentColor`.\n- Multi-color icons (brand logos, flags) hard-code their colors and ignore a single color.\n  To recolor them, pass a `{original: replacement}` mapping. `check_icons` lists an icon's\n  fixed colors in `fixed_colors`.\n- The key `\"currentColor\"` may be used in a mapping to recolor the `currentColor` parts.\n- The keys of a mapping are the ORIGINAL colors. `color={\"light\": ..., \"dark\": ...}` is\n  wrong; use `color_light_theme` and `color_dark_theme`.\n\n```python\nfrom pyside_iconify import IconWidget\n\nlogo = IconWidget(\"logos:google-icon\", size=32, color={\"#4285f4\": \"red\"})\ntinted = IconWidget(\"mdi:home\", color=\"#d4af37\")\nthemed = IconWidget(\"mdi:home\", color_light_theme=\"black\", color_dark_theme=\"white\")\n```\n\n## Theme and state colors\n\n| Parameter | Where | Meaning |\n| --- | --- | --- |\n| `color` | all entry points | Base color; `None` follows the widget text color and the theme |\n| `color_light_theme`, `color_dark_theme` | all | Win over `color` on a light or dark theme |\n| `hover_color`, `hover_color_light_theme`, `hover_color_dark_theme` | `IconWidget`, `set_icon` | Hover color, opt-in |\n| `selected_color`, `selected_color_light_theme`, `selected_color_dark_theme` | `get_icon`, `set_icon` | Selected item color |\n\nWith no color set, icons follow the widget's text color and switch between light and dark\nthemes automatically. Disabled icons fade (alpha) instead of turning gray.\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": "Offline test suite documented in README Development section",
        "command": "uv run pytest -v",
        "deferred": false,
        "evidence": "jects_bad_input[kwargs0-empty] PASSED [ 97%]\ntests/tools/test_search_icons.py::test_search_rejects_bad_input[kwargs1-too long] PASSED [ 97%]\ntests/tools/test_search_icons.py::test_search_rejects_bad_input[kwargs2-invalid icon set prefix] PASSED [ 98%]\ntests/tools/test_search_icons.py::test_search_rejects_bad_input[kwargs3-limit] PASSED [ 98%]\ntests/tools/test_search_icons.py::test_search_rejects_bad_input[kwargs4-limit] PASSED [ 99%]\ntests/tools/test_search_icons.py::test_empty_prefix_means_all_sets PASSED [100%]\n\n============================= 180 passed in 5.17s ==============================",
        "expected": "all tests pass",
        "input": "uv run pytest -v",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "README.md Development",
        "verdict": "yes"
      }
    ],
    "status": "PASS"
  },
  "diagnosis": null
}
