{
  "run_id": "finereli--whatsapp-mcp-gpt-6-luna-1792809664924278168",
  "date": "2026-10-24T02:45:24.625319+00:00",
  "repo": "finereli/whatsapp-mcp",
  "kind": "mcp",
  "source": "https://github.com/finereli/whatsapp-mcp",
  "commit": "64f1b3017931e4f6fe33eec4f95999a10f839b99",
  "model": "gpt-6-luna",
  "model_version": "gpt-6-luna",
  "test_version": "readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf",
  "pass": null,
  "outcome": "needs_credentials",
  "time_to_working_s": null,
  "total_s": 259.70102095603943,
  "steps": [
    "cd <guest-path> && pwd && rg --files -g 'README*' -g 'AGENTS.md' -g 'pyproject.toml' -g 'package.json' -g 'Dockerfile' -g '*.md' | head -80 && python3 --version && id -u && ls -la",
    "cd <guest-path> && cat README.md && cat package.json && find src scripts -maxdepth 2 -type f -print",
    "cd <guest-path> && node --version; npm --version; git status --short; test -f <guest-path> && echo checker-found; cat .gitignore; grep -nE 'Local development|Checking a change|Node 20|Node 22|list_chats|cron 04:00' README.md",
    "cd <guest-path> && cat > /tmp/install-node.sh <<'EOF'\n#!/bin/bash\nset -e\ncurl -fsSL https://deb.nodesource.com/setup_22.x | bash -\nsudo apt-get install -y nodejs\nEOF\nbash /tmp/install-node.sh",
    "cd <guest-path> && sudo -n id; find /usr/local/bin /opt <guest-path> -maxdepth 4 -type f \\( -name node -o -name npm \\) -print 2>/dev/null | head -20; find .coldpass -maxdepth 2 -type f -print -exec cat {} \\;",
    "cd <guest-path> && sudo -n bash /tmp/install-node.sh && node --version && npm --version",
    "cd <guest-path> && npm install && npm run typecheck && npm test",
    "cd <guest-path> && sed -n '1,100p' src/index.ts; sed -n '1,100p' .coldpass/* 2>/dev/null; sed -n '1,120p' <guest-path>",
    "cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'\n{\"kind\":\"cli\",\"argv\":[\"npm\",\"run\",\"dev\",\"--\",\"--ip\",\"127.0.0.1\"],\"cwd\":\"<guest-path>\",\"stays_running\":true,\"expected_text\":\"Ready on\"}\nEOF\ncat > .coldpass/claims.json <<'EOF'\n[{\"kind\":\"claim\",\"claim\":\"The server lists chats, most recent first.\",\"source\":\"| `list_chats` | Chats, most recent first. Filter by name or number. |\",\"testable\":false,\"reason\":\"The README local Durable Object starts with empty storage; listing requires a phone-linked account, which is unavailable in this guest.\"}]\nEOF\ncat > .coldpass/examples.json <<'EOF'\n[{\"kind\":\"example\",\"claim\":\"Typecheck and store behavior tests\",\"source\":\"README.md, Checking a change\",\"input\":\"npm run typecheck; npm test\",\"expected\":\"Typecheck succeeds and all store tests pass.\",\"argv\":[\"npm\",\"run\",\"typecheck\"],\"cwd\":\"<guest-path>\"},{\"kind\":\"example\",\"claim\":\"Store behavior tests\",\"source\":\"README.md, Checking a change\",\"input\":\"npm test\",\"expected\":\"all passed\",\"argv\":[\"npm\",\"test\"],\"cwd\":\"<guest-path>\"}]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":true,\"checks\":[{\"claim\":\"Daily scheduled pull\",\"source\":\"README.md, Shape of the thing\",\"quote\":\"cron 04:00 UTC\",\"schedule\":\"Daily at 04:00 UTC\",\"method\":\"not triggered in guest; requires Cloudflare deployment and linked credentials\",\"input\":\"none\",\"expected\":\"pull executes\",\"testable\":false,\"reason\":\"Cloudflare account deployment and linked WhatsApp credentials unavailable\"}]}\nEOF\ncat > .coldpass/report.json <<'EOF'\n{\"outcome\":\"blocked\",\"fault_owner\":\"prerequisite\",\"operation\":\"npm run dev local app and documented store checks\",\"operation_scope\":\"Node 22 installed; dependencies, typecheck and store tests verified. Local app replay needs server startup; actual WhatsApp read tools require a linked phone and Cloudflare deployment.\",\"steps\":[\"Installed Node.js 22.23.4 with NodeSource setup script and sudo apt install.\",\"npm install\",\"npm run typecheck\",\"npm test\"],\"deviations\":[\"Initial unprivileged NodeSource setup failed apt update with permission denied; reran using sudo successfully.\",\"MCP read calls and scheduled pull not exercised because the guest has no linked WhatsApp account or Cloudflare deployment.\"],\"stuck_step\":\"Real message operation\",\"main_blocker\":\"No linked WhatsApp account or deployment credentials.\",\"plain_failure\":\"The local install and store checks pass, but this fresh guest has no linked phone messages to exercise the WhatsApp tools.\",\"suggested_fix\":\"Deploy using the README steps, link a phone, then call list_chats and read a chat.\"}\nEOF\n<env-var>=<guest-path> python3 -I <guest-path> --validate --replay",
    "cd <guest-path> && cat > .coldpass/cycles.json <<'EOF'\n{\"detected\":true,\"checks\":[{\"claim\":\"Daily scheduled pull\",\"source\":\"README.md\",\"quote\":\"cron 04:00 UTC\",\"schedule\":\"Daily at 04:00 UTC\",\"method\":\"not triggered in guest; requires Cloudflare deployment and linked credentials\",\"input\":\"none\",\"expected\":\"pull executes\",\"testable\":false,\"reason\":\"Cloudflare account deployment and linked WhatsApp credentials unavailable\"}]}\nEOF\n<env-var>=<guest-path> python3 -I <guest-path> --validate --replay"
  ],
  "stuck_step": "Real message operation",
  "error_excerpt": "No linked WhatsApp account or deployment credentials.",
  "what_it_did": "npm run dev local app and documented store checks",
  "suggested_fix": "Deploy using the README steps, link a phone, then call list_chats and read a chat.",
  "tokens_in": 215040,
  "tokens_out": 1948,
  "cost_usd": null,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": false,
        "argv": [
          "npm",
          "run",
          "dev",
          "--",
          "--ip",
          "127.0.0.1"
        ],
        "kind": "cli",
        "returncode": 0,
        "stdout": "\n> whatsapp-mcp@0.0.1 dev\n> wrangler dev --ip 127.0.0.1\n\n\n \u26c5\ufe0f wrangler 4.151.1 (update available 4.152.0)\n\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\nYour Worker has access to the following bindings:\nBinding                                          Resource            Mode\nenv.WA (WhatsAppStore)                           Durable Object      local\nenv.OAUTH_KV (REPLACE_WITH_KV_NAMESPACE_ID)      KV Namespace        local\n\n[excerpt truncated]",
        "stderr": "[33m\u25b2 [43;33m[[43;30mWARNING[43;33m][0m [1mScheduled Workers are not automatically triggered during local development.[0m\n\n  To manually trigger a scheduled event, run:\n    curl \"http://127.0.0.1:8787/cdn-cgi/local/scheduled\"\n  For more details, see [4mhttps://developers.cloudflare.com/workers/configuration/cron-triggers/#test-cron-triggers-locally[0m\n\n\n[33m\u25b2 [43;33m[[43;30mWARNING[43;33m][0m [1mCIMD (Client ID Metadata Document) is disabled: add '\"compatibility_flags\": [\"global_fetch_strictly_public\"]' to your wrangler.jsonc to enable. See: https://developers.cloudflare.com/workers/configuration/compatibility-flags/#global-fetch-strictly-public[0m\n\n",
        "needs_credentials": false,
        "needs_browser": false,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 1 connection review, 14 known vulnerability.",
    "expected": "Reviewed as expected for a test run: 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": 3,
        "process_count": 3
      },
      {
        "kind": "known-vulnerability",
        "count": 14,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 5
      }
    ],
    "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=finereli--whatsapp-mcp-gpt-6-luna-1792809664924278168",
    "evidence_file": "/data/safety/finereli--whatsapp-mcp-gpt-6-luna-1792809664924278168.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "codex",
  "agent_runtime_version": "codex-cli 0.163.0",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": "standard",
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 10,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "64f1b3017931e4f6fe33eec4f95999a10f839b99",
    "url": "https://github.com/finereli/whatsapp-mcp"
  },
  "purpose": "test_rerun",
  "profile": {
    "model": "gpt-6-luna",
    "reasoning": "low"
  },
  "fault": {
    "owner": "prerequisite",
    "status": "diagnosed",
    "reason": "No linked WhatsApp account or deployment credentials."
  },
  "fix_id": null,
  "verifies_run_id": "finereli--whatsapp-mcp-gpt-6-luna-1792798369354093824",
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 10,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "partly_checked",
  "works": "untested",
  "install_s": null,
  "first_use_s": null,
  "mcp": "unknown",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "cli"
  ],
  "license": "MIT",
  "repo_url": "https://github.com/finereli/whatsapp-mcp",
  "cost_to_try": null,
  "hardware": null,
  "what_failed": "No linked WhatsApp account or deployment credentials.",
  "local_or_hosted": "both",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Daily scheduled pull",
      "source": "README.md",
      "input": "none",
      "expected": "pull executes",
      "command": "",
      "schedule": "Daily at 04:00 UTC",
      "method": "not triggered in guest; requires Cloudflare deployment and linked credentials",
      "verdict": "blocked",
      "outcome": "Cloudflare account deployment and linked WhatsApp credentials unavailable",
      "evidence": "Cloudflare account deployment and linked WhatsApp credentials unavailable"
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "The server lists chats, most recent first.",
      "source": "| `list_chats` | Chats, most recent first. Filter by name or number. |",
      "input": "",
      "expected": "",
      "command": "",
      "verdict": "blocked",
      "outcome": "The README local Durable Object starts with empty storage; listing requires a phone-linked account, which is unavailable in this guest.",
      "evidence": "The README local Durable Object starts with empty storage; listing requires a phone-linked account, which is unavailable in this guest.",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Typecheck and store behavior tests",
      "source": "README.md, Checking a change",
      "input": "npm run typecheck; npm test",
      "command": "npm run typecheck",
      "evidence": "> whatsapp-mcp@0.0.1 typecheck\n> tsc --noEmit",
      "deferred": false,
      "expected": "Typecheck succeeds and all store tests pass.",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Store behavior tests",
      "source": "README.md, Checking a change",
      "input": "npm test",
      "command": "npm test",
      "evidence": " comes first\nok   last thing THEY said, not me\nok   unnamed count\nok   save reports saved and which have chats\nok   named chat leaves the unnamed list\nok   new name shows in chat list\nok   sender name used in messages\nok   empty name removes it\nok   group message sender resolves to custom name\nok   toJid(\"+972 52-421-9320\", undefined)\nok   toJid(\"052-421-9320\", 972)\nok   toJid(\"052-421-9320\", undefined)\nok   toJid(\"00972524219320\", undefined)\nok   toJid(\"524219320\", 972)\nok   toJid(\"<email>\", undefined)\nok   toJid(\"abc\", 972)\nok   toJid(\"+1 (818) 917-7834\", 972)\n\nall passed",
      "deferred": false,
      "expected": "all passed",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": null,
  "maintenance": {
    "archived": false,
    "commits_90d": 6,
    "last_commit_at": "2026-10-18T22:20:41Z",
    "last_release_at": null,
    "median_reply_hours": null,
    "merged_prs_90d": 0,
    "note": "actively maintained: last commit 4 days ago; 6 commits and 0 merged PRs in 90 days; 1 open issues, 1 open PRs; no releases",
    "open_issues": 1,
    "open_prs": 1,
    "reply_share": null,
    "reply_threads": 0,
    "verdict": "maintained"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 4 days ago; 6 commits and 0 merged PRs in 90 days; 1 open issues, 1 open PRs; no releases",
  "maintained": "active",
  "maintained_note": "last commit 4 days ago; 1 open issues, 0 answered or closed",
  "last_commit_at": "2026-10-19T17:08:34Z",
  "last_release_at": null,
  "open_issues": 1,
  "answered_issues": 0,
  "platforms_claimed": [
    "linux"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "cli",
      "evidence": "independent checker",
      "observed": true,
      "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": null,
  "tested_at": "2026-10-24T02:45:24.625319+00:00",
  "tested_commit": "64f1b3017931e4f6fe33eec4f95999a10f839b99",
  "tested_with": {
    "agent": "codex",
    "agent_version": "codex-cli 0.163.0",
    "model": "gpt-6-luna",
    "model_route": "gpt-6-luna",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "finereli/whatsapp-mcp",
    "source": "https://github.com/finereli/whatsapp-mcp",
    "commit": "64f1b3017931e4f6fe33eec4f95999a10f839b99",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "gpt-6-luna",
    "model_version": "gpt-6-luna",
    "agent_execution": "native_agent",
    "agent_runtime": "codex",
    "agent_runtime_version": "codex-cli 0.163.0",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "64f1b3017931e4f6fe33eec4f95999a10f839b99",
      "url": "https://github.com/finereli/whatsapp-mcp"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": "standard",
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "npm run dev local app and documented store checks",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-f72312298d35d84837d4fc5f6f22b138d54d456600b5ed431e36e8f5db931dbf",
    "evidence_version": null
  },
  "transcript_url": null,
  "report_url": "/reports/finereli--whatsapp-mcp-gpt-6-luna-1792809664924278168.json"
}
