{
  "run_id": "vibeforge1111--dexscreener-cli-mcp-tool-claude-haiku-5-5-1793027294102608573",
  "date": "2026-10-26T15:14:25.924670+00:00",
  "repo": "vibeforge1111/dexscreener-cli-mcp-tool",
  "kind": "mcp",
  "source": "https://github.com/vibeforge1111/dexscreener-cli-mcp-tool",
  "commit": "177295c5ad3704c8647ee3eb4a3e9598e9224e5f",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-ca496ea10bb07418d1d8f1c256c2433a55547acc0fb62d8b6d86ae33c976fbfa",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 342.8309286379954,
  "total_s": 371.82203340530396,
  "steps": [
    "cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat README.md 2>/dev/null | head -200",
    "cd <guest-path> && sed -n 200,420p README.md",
    "cd <guest-path> && cat install.sh; echo ---; cat ds dexscreener-mcp; echo ---; cat pyproject.toml | head -60; ls .coldpass tests docs; cat .env.example",
    "cd <guest-path> && sed -n 420,520p README.md | cut -c1-300",
    "cd <guest-path> && chmod +x install.sh && ./install.sh 2>&1 | tail -60",
    "cd <guest-path> && ./ds search solana --json 2>&1 | head -c 1200; echo; echo \"rc=$?\"; ls -la <guest-path> /inputs 2>&1 | head",
    "cd <guest-path> && grep -n \"def search_pairs\\|def inspect_token\\|def save_preset\\|def get_cli_quickstart\" -A12 dexscreener_cli/mcp_server.py | head -90",
    "cd <guest-path> && grep -n \"argv\\|stays_running\\|expected_file\\|source_file\\|README\" check.py | head -80",
    "cd <guest-path> && ./ds search So11111111111111111111111111111111111111112 --json 2>/dev/null | grep -c \"So11111111111111111111111111111111111111112\"; mkdir -p .coldpass && ls -la .coldpass",
    "cd <guest-path> && cat > probe.json <<'EOF'\n{\"kind\":\"mcp\",\"argv\":[\"<guest-path>\"],\"cwd\":\"<guest-path>\",\"tool\":\"search_pairs\",\"arguments\":{\"query\":\"So11111111111111111111111111111111111111112\",\"limit\":3},\"expected_text\":\"So11111111111111111111111111111111111111112\"}\nEOF\ncat > claims.json <<'EOF'\n[{\"kind\":\"claim\",\"claim\":\"The MCP server exposes search_pairs, which searches pairs by name, symbol, or address\",\"source\":\"README.md\",\"input\":\"query So11111111111111111111111111111111111111112\",\"expected\":\"matching pairs containing the wrapped SOL address\",\"probe_kind\":\"mcp\",\"argv\":[\"<guest-path>\"],\"tool\":\"search_pairs\",\"arguments\":{\"query\":\"So11111111111111111111111111111111111111112\",\"limit\":3},\"expected_text\":\"So11111111111111111111111111111111111111112\",\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"CLI search finds tokens by address\",\"source\":\"README.md\",\"input\":\"ds search So11111111111111111111111111111111111111112 --json\",\"expected\":\"JSON pairs containing the wrapped SOL address\",\"probe_kind\":\"cli\",\"argv\":[\"./ds\",\"search\",\"So11111111111111111111111111111111111111112\",\"--json\"],\"expected_text\":\"So11111111111111111111111111111111111111112\",\"cwd\":\"<guest-path>\"}]\nEOF\npython3 -I -c \"import json;json.load(open('probe.json'));json.load(open('claims.json'));print('ok')\"",
    "cd <guest-path> && cat > claims.json <<'EOF'\n[{\"kind\":\"claim\",\"claim\":\"The MCP server search_pairs tool searches pairs by address\",\"source\":\"Search pairs by name, symbol, or address\",\"input\":\"query So11111111111111111111111111111111111111112\",\"expected\":\"matching pairs containing the wrapped SOL address\",\"probe_kind\":\"mcp\",\"argv\":[\"<guest-path>\"],\"tool\":\"search_pairs\",\"arguments\":{\"query\":\"So11111111111111111111111111111111111111112\",\"limit\":3},\"expected_text\":\"So11111111111111111111111111111111111111112\",\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"CLI search finds tokens by address\",\"source\":\"Search tokens by name, symbol, or address\",\"input\":\"ds search So11111111111111111111111111111111111111112 --json\",\"expected\":\"JSON pairs containing the wrapped SOL address\",\"probe_kind\":\"cli\",\"argv\":[\"./ds\",\"search\",\"So11111111111111111111111111111111111111112\",\"--json\"],\"expected_text\":\"So11111111111111111111111111111111111111112\",\"cwd\":\"<guest-path>\"}]\nEOF\ncd <guest-path> && <env-var>=<guest-path> timeout 600 python3 -I <guest-path> --validate --replay 2>&1 | tail -60",
    "cd <guest-path> && .venv/bin/pip show mcp 2>/dev/null | head -2; .venv/bin/pip install \"mcp>=1.23.0,<2\" -q 2>&1 | tail -5; .venv/bin/pip show mcp | head -2; .venv/bin/python -I -c \"import mcp.server.fastmcp as f; print('fastmcp ok')\"",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | head -c 4000",
    "cd <guest-path> && grep -n \"def task_daemon\\|def task_run\\|once\\|def task_create\" -A6 dexscreener_cli/cli.py | head -80; ./ds task --help 2>&1 | tail -25",
    "cd <guest-path> && ./ds task create cycle-check --chains solana --limit 3 2>&1 | tail -5; timeout 120 ./ds task daemon --task cycle-check --once --no-alerts 2>&1 | tail -15; echo \"rc=${PIPESTATUS[0]}\"; ./ds task runs 2>&1 | tail -8",
    "cd <guest-path> && ls .github/workflows && grep -n \"run:\" -A3 .github/workflows/*.yml | head -40",
    "cd <guest-path> && .venv/bin/pip install -q pytest 2>&1 | tail -3; timeout 600 .venv/bin/pytest tests/ -q 2>&1 | tail -8; echo \"rc=${PIPESTATUS[0]}\"",
    "cd <guest-path> && sed -n 1,40p tests/test_cli_json.py; ./ds search pepe --json 2>/dev/null | head -2; echo ---; ./ds search pepe --json 2>&1 >/dev/null | head -3",
    "cd <guest-path> && cat > cycles.json <<'EOF'\n{\"detected\":true,\"checks\":[{\"claim\":\"ds task daemon --once runs one due scan cycle and exits\",\"source\":\"dexscreener_cli/cli.py\",\"quote\":\"Run one due cycle and exit\",\"schedule\":\"ds task daemon polling loop (poll_seconds default 5.0)\",\"method\":\"run-once: daemon --once with --no-alerts so no external webhook is contacted\",\"input\":\"task cycle-check (created with --chains solana --limit 3)\",\"expected\":\"one cycle scans the task and prints its summary\",\"kind\":\"cli\",\"argv\":[\"./ds\",\"task\",\"daemon\",\"--task\",\"cycle-check\",\"--once\",\"--no-alerts\"],\"cwd\":\"<guest-path>\",\"expected_text\":\"task=cycle-check results=3\"}]}\nEOF\ncat > examples.json <<'EOF'\n[{\"kind\":\"example\",\"claim\":\"Inspect a token by address on a chain\",\"source\":\"README.md\",\"input\":\"So11111111111111111111111111111111111111112 --chain solana --json\",\"expected\":\"JSON token details for wrapped SOL\",\"argv\":[\"./ds\",\"inspect\",\"So11111111111111111111111111111111111111112\",\"--chain\",\"solana\",\"--json\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"So11111111111111111111111111111111111111112\"},\n{\"kind\":\"example\",\"claim\":\"Repository offline test suite (CI test job runs pytest tests/ -q)\",\"source\":\".github/workflows/ci.yml\",\"reason\":\"Ran pytest tests/ -q in the venv: 72 passed, 2 failed (tests/test_cli_json.py::test_search_json_output and test_inspect_json_output, JSONDecodeError). Not a README claim; the failures look related to the 'Tip: Run ds setup' line printed to stdout before JSON on a fresh install. Recorded as a finding, not a product success.\"}]\nEOF\npython3 -I -c \"import json;[json.load(open(f)) for f in ['cycles.json','examples.json']];print('ok')\"; cd <guest-path> && ./ds inspect So11111111111111111111111111111111111111112 --chain solana --json 2>/dev/null | grep -c So11111111111111111111111111111111111111112",
    "cd <guest-path> && cat > report.json <<'EOF'\n{\"outcome\":\"working\",\"fault_owner\":\"repo\",\"operation\":\"Search Dexscreener tokens through the dexscreener-mcp stdio server (search_pairs) and the ds CLI, and run one scheduler cycle (ds task daemon --once)\",\"operation_scope\":\"Linux guest, Python 3.12.3 (README needs 3.11+), no API keys; public Dexscreener API reachable (HTTP 200). MORALIS_API_KEY optional and unset.\",\"steps\":[\"git clone is replaced by the pinned snapshot already in <guest-path>\",\"./install.sh (README Mac/Linux installer: creates .venv, pip install -e ., runs ds doctor)\",\"./ds search So11111111111111111111111111111111111111112 --json\",\"./dexscreener-mcp (stdio MCP) tools/call search_pairs {query, limit:3}\",\"./ds inspect So11111111111111111111111111111111111111112 --chain solana --json\",\"./ds task create cycle-check --chains solana --limit 3\",\"./ds task daemon --task cycle-check --once --no-alerts\",\"pytest tests/ -q (repo test suite from CI)\"],\"deviations\":[\"install.sh with unpinned mcp>=1.23.0 installed mcp 2.3.0, which removed mcp.server.fastmcp; dexscreener-mcp crashed on start (ModuleNotFoundError). Fixed by running .venv/bin/pip install 'mcp>=1.23.0,<2' (installed mcp 1.30.0). Product source not edited.\",\"pip install -q pytest added to the venv to run the repo's CI test command.\",\"Test suite: 2 of 74 failed (tests/test_cli_json.py search/inspect JSON tests, JSONDecodeError); not fixed, recorded as a finding.\",\"README 'ds setup' was not run (interactive); a non-interactive 'Tip' line is printed on stdout before JSON output on a fresh install.\"],\"stuck_step\":null,\"main_blocker\":null,\"plain_failure\":\"On a fresh install the MCP server does not start unless the mcp library is pinned below version 2, because the project's dependency range allows mcp 2.x, which removed the API the server uses. Separately, two of the project's JSON-output tests fail on a fresh install. After the pin, the MCP search, CLI search and inspect, and the one-cycle scheduler run all worked.\",\"suggested_fix\":\"Pin mcp<2 in pyproject.toml dependencies (or migrate dexscreener_cli/mcp_server.py to the mcp 2.x MCPServer API). Send the 'Tip: Run ds setup' message to stderr, or skip it when --json is used, so JSON stdout parses; then re-run tests/test_cli_json.py.\"}\nEOF\npython3 -I -c \"import json;json.load(open('report.json'));print('ok')\"; cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | head -c 2500",
    "cd <guest-path> && ./ds task configure --help 2>/dev/null | grep -i interval | head -3; ./ds task configure cycle-check --interval-seconds 1 2>&1 | tail -2; sleep 3; timeout 120 ./ds task daemon --task cycle-check --once --no-alerts 2>&1 | tail -4",
    "cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo \"rc=$?\"; python3 -I -c \"\nimport json,sys\nd=json.loads(open('<guest-path>').read().strip().splitlines()[-1]) if False else None\n\" ; head -c 600 <guest-path>; echo; grep -o '\"valid\": [a-z]*' <guest-path>; grep -o '\"problems\": \\[[^]]*\\]' <guest-path> | head -c 800; echo; grep -o '\"status\": \"[A-Z]*\"' <guest-path>",
    "pgrep -fa \"dexscreener-mcp|ds task daemon\" || echo \"no background processes\"; ls -la <guest-path>"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Search Dexscreener tokens through the dexscreener-mcp stdio server (search_pairs) and the ds CLI, and run one scheduler cycle (ds task daemon --once)",
  "suggested_fix": null,
  "tokens_in": 762001,
  "tokens_out": 15375,
  "cost_usd": 0.02657392,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "dexscreener-cli-mcp-tool",
          "version": "1.30.0"
        },
        "tools": [
          "scan_hot_tokens",
          "get_rate_budget_stats",
          "save_preset",
          "list_presets",
          "create_task",
          "list_tasks",
          "run_task_scan",
          "run_due_tasks",
          "test_task_alert",
          "list_task_runs",
          "export_state_bundle",
          "import_state_bundle",
          "search_pairs",
          "inspect_token",
          "get_cli_quickstart"
        ],
        "tool_schema_bytes": 13491,
        "tool_result": {
          "content": [
            {
              "type": "text",
              "text": "{\n  \"chainId\": \"solana\",\n  \"pairAddress\": \"Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE\",\n  \"tokenAddress\": \"So11111111111111111111111111111111111111112\",\n  \"tokenSymbol\": \"SOL\",\n  \"dexId\": \"orca\",\n  \"priceUsd\": 102.026,\n  \"volumeH24\": 106598846.24,\n  \"txnsH1\": 5191,\n  \"liquidityUsd\": 29143515.62,\n  \"pairUrl\": \"https://dexscreener.com/solana/czfq3xzzdmsdgduyrnltrhgc47cxcztlg4crryfu44ze\"\n}"
            },
            {
              "type": "text",
              "text": "{\n  \"chainId\": \"solana\",\n  \"pairAddress\": \"8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj\",\n  \"tokenAddress\": \"So11111111111111111111111111111111111111112\",\n  \"tokenSymbol\": \"SOL\",\n  \"dexId\": \"raydium\",\n  \"priceUsd\": 102.073,\n  \"volumeH24\": 552050.49,\n  \"txnsH1\": 5112,\n  \"liquidityUsd\": 477105.13,\n  \"pairUrl\": \"https://dexscreener.com/solana/8slbnzoa1cfnvmjlpfp98zlanfsycfapfjkmbixnlwxj\"\n}"
            },
            {
              "type": "text",
              "text": "{\n  \"chainId\": \"solana\",\n  \"pairAddress\": \"58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2\",\n  \"tokenAddress\": \"So11111111111111111111111111111111111111112\",\n  \"tokenSymbol\": \"SOL\",\n  \"dexId\": \"raydium\",\n  \"priceUsd\": 102.34,\n  \"volumeH24\": 2495514.05,\n  \"txnsH1\": 3057,\n  \"liquidityUsd\": 19109944.23,\n  \"pairUrl\": \"https://dexscreener.com/solana/58oqchx4ywmvkdwllzzbi4chocc2fqcuwbkwmihlyqo2\"\n}"
            }
          ],
          "structuredContent": {
            "result": [
              {
                "chainId": "solana",
                "pairAddress": "Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE",
                "tokenAddress": "So11111111111111111111111111111111111111112",
                "tokenSymbol": "SOL",
                "dexId": "orca",
                "priceUsd": 102.026,
                "volumeH24": 106598846.24,
                "txnsH1": 5191,
                "liquidityUsd": 29143515.62,
                "pairUrl": "https://dexscreener.com/solana/czfq3xzzdmsdgduyrnltrhgc47cxcztlg4crryfu44ze"
              },
              {
                "chainId": "solana",
                "pairAddress": "8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj",
                "tokenAddress": "So11111111111111111111111111111111111111112",
                "tokenSymbol": "SOL",
                "dexId": "raydium",
                "priceUsd": 102.073,
                "volumeH24": 552050.49,
                "txnsH1": 5112,
                "liquidityUsd": 477105.13,
                "pairUrl": "https://dexscreener.com/solana/8slbnzoa1cfnvmjlpfp98zlanfsycfapfjkmbixnlwxj"
              },
              {
                "chainId": "solana",
                "pairAddress": "58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2",
                "tokenAddress": "So11111111111111111111111111111111111111112",
                "tokenSymbol": "SOL",
                "dexId": "raydium",
                "priceUsd": 102.34,
                "volumeH24": 2495514.05,
                "txnsH1": 3057,
                "liquidityUsd": 19109944.23,
                "pairUrl": "https://dexscreener.com/solana/58oqchx4ywmvkdwllzzbi4chocc2fqcuwbkwmihlyqo2"
              }
            ]
          },
          "isError": false
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review.",
    "expected": "Reviewed as expected for a test run: a Python interpreter or package manager probed its own interpreter file under a system program folder; attempted writes that failed, so nothing was written; resolver address lookups that send no data.",
    "findings": [
      {
        "kind": "connection-review",
        "count": 1,
        "note": "Repository processes attempted these non-loopback connections; proxies can hide the final hostname.",
        "location_count": 20,
        "process_count": 71
      }
    ],
    "context": [],
    "limitations": [
      "A short run cannot establish that code is safe.",
      "Connections show IP addresses; proxies can hide the final hostname.",
      "Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=vibeforge1111--dexscreener-cli-mcp-tool-claude-haiku-5-5-1793027294102608573",
    "evidence_file": "/data/safety/vibeforge1111--dexscreener-cli-mcp-tool-claude-haiku-5-5-1793027294102608573.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.310 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 23,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "177295c5ad3704c8647ee3eb4a3e9598e9224e5f",
    "url": "https://github.com/vibeforge1111/dexscreener-cli-mcp-tool"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": "repo",
    "status": "diagnosed",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": null,
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 23,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "local",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "mcp"
  ],
  "license": null,
  "repo_url": "https://github.com/vibeforge1111/dexscreener-cli-mcp-tool",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "both",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "ds task daemon --once runs one due scan cycle and exits",
      "source": "dexscreener_cli/cli.py",
      "input": "task cycle-check (created with --chains solana --limit 3)",
      "expected": "one cycle scans the task and prints its summary",
      "command": "./ds task daemon --task cycle-check --once --no-alerts",
      "schedule": "ds task daemon polling loop (poll_seconds default 5.0)",
      "method": "run-once: daemon --once with --no-alerts so no external webhook is contacted",
      "verdict": "yes",
      "outcome": "Triggered one cycle by hand (run-once: daemon --once with --no-alerts so no external webhook is contacted; normal trigger: ds task daemon polling loop (poll_seconds default 5.0)): Tip: Run ds setup to pick your chains and preferences (takes 30 seconds).\n\ntask=cycle-check results=3 top=ANT alerts=disabled",
      "evidence": "Tip: Run ds setup to pick your chains and preferences (takes 30 seconds).\n\ntask=cycle-check results=3 top=ANT alerts=disabled",
      "returncode": 0
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "The MCP server search_pairs tool searches pairs by address",
      "source": "Search pairs by name, symbol, or address",
      "input": "{\"tool\": \"search_pairs\", \"arguments\": {\"query\": \"So11111111111111111111111111111111111111112\", \"limit\": 3}}",
      "expected": "matching pairs containing the wrapped SOL address",
      "command": "<guest-path> tools/call {\"tool\": \"search_pairs\", \"arguments\": {\"query\": \"So11111111111111111111111111111111111111112\", \"limit\": 3}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: So11111111111111111111111111111111111111112",
      "evidence": "So11111111111111111111111111111111111111112\\\",\\n  \\\"tokenSymbol\\\": \\\"SOL\\\",\\n  \\\"dexId\\\": \\\"orca\\\",\\n  \\\"priceUsd\\\": 102.026,\\n  \\\"volumeH24\\\": 106598846.24,\\n  \\\"txnsH1\\\": 5191,\\n  \\\"liquidityUsd\\\": 29143515.62,\\n  \\\"pairUrl\\\": \\\"https://dexscreener.com/solana/czfq3xzzdmsdgduyrnltrhgc47cxcztlg4crryfu44ze\\\"\\n}\"}, {\"type\": \"text\", \"text\": \"{\\n  \\\"chainId\\\": \\\"solana\\\",\\n  \\\"pairAddress\\\": \\\"8sLbNZoA1cfnvMJLPfp98ZLAnFSYCFApfJKMbiXNLwxj\\\",\\n  \\\"tokenAddress\\\": \\\"So11111111111111111111111111111111111111112\\\",\\n  \\\"tokenSymbol\\\": \\\"SOL\\\",\\n  \\\"dexId\\\": \\\"raydium\\\",\\n  \\\"priceUsd\\\": 102.073,\\n  \\\"vo",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "CLI search finds tokens by address",
      "source": "Search tokens by name, symbol, or address",
      "input": "ds search So11111111111111111111111111111111111111112 --json",
      "expected": "JSON pairs containing the wrapped SOL address",
      "command": "./ds search So11111111111111111111111111111111111111112 --json",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: So11111111111111111111111111111111111111112",
      "evidence": "So11111111111111111111111111111111111111112\",\n    \"tokenSymbol\": \"SOL\",\n    \"tokenName\": \"Wrapped SOL\",\n    \"quoteSymbol\": \"USDC\",\n    \"priceUsd\": 102.026,\n    \"priceChangeH1\": 0.74,\n    \"priceChangeH24\": 0.5,\n    \"volumeH24\": 106598846.24,\n    \"volumeH6\": 33058559.75,\n    \"volumeH1\": 9154470.07,\n    \"volumeM5\": 513705.32,\n    \"buysH1\": 2425,\n    \"sellsH1\": 2766,\n    \"buysH24\": 35690,\n    \"sellsH24\": 41641,\n    \"txnsH1\": 5191,\n    \"txnsH24\": 77331,\n    \"liquidityUsd\": 29143515.62,\n    \"marketCap\": 0.0,\n    \"fdv\": 0.0,\n    \"holdersCount\": null,\n    \"holdersSource\": null,\n    \"pairCreatedAtMs\": ",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Inspect a token by address on a chain",
      "source": "README.md",
      "input": "So11111111111111111111111111111111111111112 --chain solana --json",
      "command": "./ds inspect So11111111111111111111111111111111111111112 --chain solana --json",
      "evidence": ",\n    \"sellsH1\": 2775,\n    \"buysH24\": 35694,\n    \"sellsH24\": 41650,\n    \"txnsH1\": 5204,\n    \"txnsH24\": 77344,\n    \"liquidityUsd\": 29160966.83,\n    \"marketCap\": 0.0,\n    \"fdv\": 0.0,\n    \"holdersCount\": 8746986,\n    \"holdersSource\": \"geckoterminal\",\n    \"pairCreatedAtMs\": 1688106058000,\n    \"ageHours\": 29144.889084961666\n  },\n  \"distributionProxy\": {\n    \"liquidity_to_market_cap\": 0.0,\n    \"volume_to_liquidity_24h\": 3.6556,\n    \"buy_sell_imbalance_1h\": -0.0665,\n    \"status\": \"concentrated-liquidity\"\n  },\n  \"boostTotal\": 40.0,\n  \"boostCount\": 4,\n  \"hasProfile\": true,\n  \"additionalPairCount\": 29\n}",
      "deferred": false,
      "expected": "JSON token details for wrapped SOL",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Repository offline test suite (CI test job runs pytest tests/ -q)",
      "source": ".github/workflows/ci.yml",
      "input": "",
      "command": "",
      "evidence": "Ran pytest tests/ -q in the venv: 72 passed, 2 failed (tests/test_cli_json.py::test_search_json_output and test_inspect_json_output, JSONDecodeError). Not a README claim; the failures look related to the 'Tip: Run ds setup' line printed to stdout before JSON on a fresh install. Recorded as a finding, not a product success.",
      "deferred": false,
      "expected": "documented command completes successfully",
      "verdict": "blocked",
      "outcome": "Ran pytest tests/ -q in the venv: 72 passed, 2 failed (tests/test_cli_json.py::test_search_json_output and test_inspect_json_output, JSONDecodeError). Not a README claim; the failures look related to the 'Tip: Run ds setup' line printed to stdout before JSON on a fresh install. Recorded as a finding, not a product success."
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-03-08T15:45:36Z",
    "commits_90d": 0,
    "merged_prs_90d": 0,
    "open_issues": 0,
    "open_prs": 14,
    "reply_share": 0.0,
    "reply_threads": 14,
    "median_reply_hours": null,
    "last_release_at": null,
    "archived": false,
    "verdict": "slow",
    "note": "slow: last commit 231 days ago; 0 commits and 0 merged PRs in 90 days; 0 open issues, 14 open PRs; 0 of 14 recent threads got a maintainer reply; no releases"
  },
  "maintenance_verdict": "slow",
  "maintenance_note": "slow: last commit 231 days ago; 0 commits and 0 merged PRs in 90 days; 0 open issues, 14 open PRs; 0 of 14 recent threads got a maintainer reply; no releases",
  "maintained": "slow",
  "maintained_note": "last commit 231 days ago",
  "last_commit_at": "2026-03-08T15:45:54Z",
  "last_release_at": null,
  "open_issues": null,
  "answered_issues": null,
  "platforms_claimed": [
    "linux",
    "mac",
    "windows"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    },
    {
      "interface": "cli",
      "evidence": "README metadata",
      "observed": false,
      "operation_checked": false
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": {
    "tool_count": 15,
    "schema_bytes": 13491,
    "tokens_approx": 3373,
    "estimate_method": "ceil(compact UTF-8 tools/list JSON bytes / 4)",
    "scope": "returned tools/list page only; excludes client framing and tool results"
  },
  "tested_at": "2026-10-26T15:14:25.924670+00:00",
  "tested_commit": "177295c5ad3704c8647ee3eb4a3e9598e9224e5f",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.310 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "vibeforge1111/dexscreener-cli-mcp-tool",
    "source": "https://github.com/vibeforge1111/dexscreener-cli-mcp-tool",
    "commit": "177295c5ad3704c8647ee3eb4a3e9598e9224e5f",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.310 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "177295c5ad3704c8647ee3eb4a3e9598e9224e5f",
      "url": "https://github.com/vibeforge1111/dexscreener-cli-mcp-tool"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Search Dexscreener tokens through the dexscreener-mcp stdio server (search_pairs) and the ds CLI, and run one scheduler cycle (ds task daemon --once)",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-ca496ea10bb07418d1d8f1c256c2433a55547acc0fb62d8b6d86ae33c976fbfa",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": "/transcripts/vibeforge1111--dexscreener-cli-mcp-tool-claude-haiku-5-5-1793027294102608573.txt",
  "report_url": "/reports/vibeforge1111--dexscreener-cli-mcp-tool-claude-haiku-5-5-1793027294102608573.json"
}
