{
  "checker": {
    "claims": [
      {
        "claim": "execute_query runs a DuckDB SQL query and returns the result",
        "command": "<guest-path> --directory <guest-path> run mcp-server-motherduck --db-path :memory: --read-write tools/call {\"tool\": \"execute_query\", \"arguments\": {\"sql\": \"SELECT 'duck-probe-7319' AS marker\"}}",
        "evidence": "duck-probe-7319\\\"\\n    ]\\n  ],\\n  \\\"rowCount\\\": 1\\n}\", \"type\": \"text\"}], \"isError\": false, \"structuredContent\": {\"result\": \"{\\n  \\\"success\\\": true,\\n  \\\"columns\\\": [\\n    \\\"marker\\\"\\n  ],\\n  \\\"columnTypes\\\": [\\n    \\\"VARCHAR\\\"\\n  ],\\n  \\\"rows\\\": [\\n    [\\n      \\\"duck-probe-7319\\\"\\n    ]\\n  ],\\n  \\\"rowCount\\\": 1\\n}\"}}",
        "expected": "the query result containing duck-probe-7319",
        "input": "{\"tool\": \"execute_query\", \"arguments\": {\"sql\": \"SELECT 'duck-probe-7319' AS marker\"}}",
        "kind": "claim",
        "outcome": "Real input produced the expected result: duck-probe-7319",
        "source": "Execute SQL query (DuckDB dialect)",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected (src/mcp_server_motherduck/server.py, __init__.py, database.py) and grep for cron/schedule/loop/webhook/--once/--now found nothing. The product is a request-driven stdio/streamable-HTTP MCP server with no product scheduler or loop; no cycle was triggered.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected (src/mcp_server_motherduck/server.py, __init__.py, database.py) and grep for cron/schedule/loop/webhook/--once/--now found nothing. The product is a request-driven stdio/streamable-HTTP MCP server with no product scheduler or loop; no cycle was triggered.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "<guest-path>",
        "--directory",
        "<guest-path>",
        "run",
        "mcp-server-motherduck",
        "--db-path",
        ":memory:",
        "--read-write"
      ],
      "kind": "mcp",
      "scope": "product operation",
      "serverInfo": {
        "icons": [
          {
            "mimeType": "image/png",
            "src": "data:image/png;base64,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"
          }
        ],
        "name": "mcp-server-motherduck",
        "version": "1.1.0"
      },
      "tool_result": {
        "_meta": {
          "fastmcp": {
            "wrap_result": true
          }
        },
        "content": [
          {
            "text": "{\n  \"success\": true,\n  \"columns\": [\n    \"marker\"\n  ],\n  \"columnTypes\": [\n    \"VARCHAR\"\n  ],\n  \"rows\": [\n    [\n      \"duck-probe-7319\"\n    ]\n  ],\n  \"rowCount\": 1\n}",
            "type": "text"
          }
        ],
        "isError": false,
        "structuredContent": {
          "result": "{\n  \"success\": true,\n  \"columns\": [\n    \"marker\"\n  ],\n  \"columnTypes\": [\n    \"VARCHAR\"\n  ],\n  \"rows\": [\n    [\n      \"duck-probe-7319\"\n    ]\n  ],\n  \"rowCount\": 1\n}"
        }
      },
      "tool_result_checked": true,
      "tool_schema_bytes": 2914,
      "tools": [
        "execute_query",
        "list_databases",
        "list_tables",
        "list_columns"
      ],
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Local in-memory DuckDB tests pass (documented e2e suite, memory DB file)",
        "command": "<guest-path> run --directory <guest-path> pytest tests/e2e/test_memory_duckdb.py -q",
        "deferred": false,
        "evidence": "........                                                                 [100%]\n=============================== warnings summary ===============================\ntests/e2e/test_memory_duckdb.py::test_simple_select\n  <guest-path> FastMCPDeprecationWarning: Accessing `CallToolResult.isError` is deprecated; MCP SDK v2 renamed this field to `is_error`. Update your code to read `.is_error` instead.\n    assert result.isError is False\n\n-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html\n8 passed, 1 warning in 30.11s",
        "expected": "pytest exits 0",
        "input": "tests/e2e/test_memory_duckdb.py",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "makefile test-e2e target / tests/e2e/test_memory_duckdb.py",
        "verdict": "yes"
      },
      {
        "claim": "make test-unit target",
        "command": "",
        "deferred": false,
        "evidence": "makefile runs tests/unit/ but that directory does not exist in this snapshot (only tests/e2e/); not runnable. Ran make test-e2e instead: 91 passed, 56 skipped, 2 failed (S3 tests need s3://md-test-bucket-user-1 credentials not available in this guest).",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "makefile runs tests/unit/ but that directory does not exist in this snapshot (only tests/e2e/); not runnable. Ran make test-e2e instead: 91 passed, 56 skipped, 2 failed (S3 tests need s3://md-test-bucket-user-1 credentials not available in this guest).",
        "source": "makefile test-unit target",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "python3-venv was missing; installed with sudo apt-get install python3.12-venv, then created venv for uv.",
    "make was missing; installed with sudo apt-get install make.",
    "make test-unit fails: makefile target points at tests/unit/, which does not exist in this snapshot (only tests/e2e/). Recorded as an example with reason; ran make test-e2e instead.",
    "make test-e2e: 91 passed, 56 skipped, 2 failed. Both failures are tests/e2e/test_s3_duckdb.py (test_s3_simple_select, test_s3_show_tables), which need the s3://md-test-bucket-user-1 bucket and credentials not present in this guest. Prerequisite gap, not run successfully.",
    "Used absolute uv path <guest-path> instead of uvx because the README's uvx entry was not in PATH and the source-run form was used.",
    "Cycle: no product scheduler, loop, webhook or --once/--now found; detected=false.",
    "The e2e fixtures launch a bare 'uv' command (tests/e2e/conftest.py), so uv had to be on PATH for the checker's replay; created symlink sudo ln -sf <guest-path> /usr/local/bin/uv. Before this the replayed memory-DB example failed with FileNotFoundError: 'uv'."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Run the MCP server (stdio) from source and call execute_query to run a DuckDB SQL query in an in-memory database",
  "operation_scope": "Local stdio MCP server, in-memory DuckDB (:memory:), read-write. Requires uv (installed via pip into a venv) and python3.12 (venv module installed via apt). S3 e2e tests need S3 credentials/bucket and were not run successfully.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "git init; git remote add origin https://github.com/motherduckdb/mcp-server-motherduck; git fetch --depth 1 origin 41acb581d9bc04e427655ba5178b2c5c01f68cd2; git reset --mixed FETCH_HEAD",
    "pip install uv (README Quick Start prerequisite), installed in <guest-path>",
    "make install (uv sync --all-extras)",
    "make test-e2e (documented test target)",
    "uv --directory <guest-path> run mcp-server-motherduck --db-path :memory: --read-write (README Development section, stdio MCP)",
    "MCP tools/call execute_query with sql SELECT 'duck-probe-7319' AS marker"
  ],
  "stuck_step": null,
  "suggested_fix": "Fix makefile test-unit target (tests/unit/ does not exist). For full e2e, provide S3 test bucket credentials to run the two S3 tests."
}
