{
  "tokens_out": 3466,
  "outcome": "pass",
  "suggested_fix": null,
  "cycle_checks": null,
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null,
    "evidence": []
  },
  "runtime_revision": null,
  "agent_execution": "native_agent",
  "time_to_working_s": null,
  "usage_complete": true,
  "runtime": null,
  "architecture": null,
  "local_or_hosted": null,
  "agent_interfaces_note": null,
  "platform_details": null,
  "platforms_claimed": null,
  "maintenance": null,
  "evidence_strength": null,
  "purpose": "initial",
  "topic": null,
  "needs_which": null,
  "tested_with": null,
  "native_bundle": null,
  "agent_runtime": "claude-code",
  "maintenance_note": null,
  "runtime_version": null,
  "does_what_it_says": null,
  "commit": "545aae42bfeed8184d7af211633cc99ac461cd1d",
  "failure_origin": null,
  "stuck_step": null,
  "repo_url": null,
  "needs": null,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "-m",
          "adloop"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "AdLoop",
          "version": "4.1.1",
          "websiteUrl": "https://getadloop.com",
          "icons": [
            {
              "src": "https://getadloop.com/icon-512.png",
              "mimeType": "image/png",
              "sizes": [
                "512x512"
              ]
            },
            {
              "src": "https://getadloop.com/favicon.svg",
              "mimeType": "image/svg+xml",
              "sizes": [
                "any"
              ]
            }
          ]
        },
        "tools": [
          "health_check",
          "get_account_summaries",
          "run_ga4_report",
          "run_realtime_report",
          "get_tracking_events",
          "list_key_events",
          "list_ga4_dimensions_and_metrics",
          "list_gsc_sites",
          "run_gsc_report",
          "analyze_page_speed",
          "list_merchant_accounts",
          "get_merchant_feed_health",
          "get_merchant_product_issues",
          "list_accounts",
          "get_campaign_performance",
          "get_ad_performance",
          "get_keyword_performance",
          "get_search_terms",
          "get_negative_keywords",
          "get_negative_keyword_lists",
          "get_negative_keyword_list_keywords",
          "get_negative_keyword_list_campaigns",
          "get_recommendations",
          "get_pmax_performance",
          "get_pmax_assets",
          "get_detailed_asset_performance",
          "get_audience_performance",
          "get_demographic_targeting",
          "get_change_history",
          "analyze_campaign_conversions",
          "landing_page_analysis",
          "attribution_check",
          "audit_event_coverage",
          "list_gtm_accounts",
          "list_gtm_containers",
          "list_gtm_tags",
          "get_gtm_tag",
          "list_gtm_triggers",
          "get_gtm_trigger",
          "list_gtm_variables",
          "list_gtm_workspaces",
          "get_gtm_workspace_diff",
          "list_gtm_versions",
          "get_gtm_version",
          "get_gtm_version_diff",
          "draft_gtm_tag",
          "draft_gtm_trigger",
          "draft_gtm_variable",
          "draft_delete_gtm_entity",
          "draft_publish_gtm_workspace",
          "draft_rollback_gtm_version",
          "run_gaql",
          "get_audience_lists",
          "search_audience_segments",
          "get_audience_targeting",
          "draft_audience_attachment",
          "get_shopping_product_performance",
          "get_asset_group_signals",
          "draft_asset_group_signals",
          "draft_pmax_product_exclusions",
          "draft_asset_group_assets",
          "draft_shopping_campaign",
          "draft_campaign",
          "draft_ad_group",
          "update_campaign",
          "draft_responsive_search_ad",
          "update_responsive_search_ad",
          "draft_keywords",
          "get_custom_conversion_goals",
          "draft_custom_conversion_goal",
          "draft_update_custom_conversion_goal",
          "draft_assign_custom_conversion_goal",
          "draft_clear_custom_conversion_goal",
          "add_negative_keywords",
          "add_negative_locations",
          "propose_negative_keyword_list",
          "add_to_negative_keyword_list",
          "attach_shared_set_to_campaigns",
          "detach_shared_set_from_campaigns",
          "get_ai_max_settings",
          "draft_ai_max_settings",
          "draft_prepare_brand_exclusions",
          "draft_demographic_targeting",
          "update_ad_group",
          "draft_callouts",
          "draft_structured_snippets",
          "draft_image_assets",
          "pause_entity",
          "enable_entity",
          "remove_entity",
          "draft_sitelinks",
          "confirm_and_apply",
          "upload_images",
          "upload_conversion_csv",
          "list_uploads",
          "list_reddit_accounts",
          "list_reddit_funding_instruments",
          "get_reddit_campaigns",
          "get_reddit_ad_groups",
          "get_reddit_ads",
          "get_reddit_performance",
          "run_reddit_report",
          "get_reddit_pixels",
          "get_reddit_audiences",
          "search_reddit_targeting",
          "get_reddit_account_history",
          "estimate_reddit_ad_group",
          "pause_reddit_entity",
          "enable_reddit_entity",
          "remove_reddit_entity",
          "update_reddit_campaign",
          "update_reddit_ad_group",
          "update_reddit_ad",
          "draft_reddit_custom_audience",
          "draft_reddit_campaign",
          "draft_reddit_ad_group",
          "draft_reddit_ad",
          "draft_key_event",
          "draft_delete_key_event",
          "draft_create_conversion_action",
          "draft_update_conversion_action",
          "draft_remove_conversion_action",
          "draft_upload_call_conversions",
          "draft_upload_enhanced_conversions_for_leads",
          "validate_tracking",
          "generate_tracking_code",
          "estimate_budget",
          "discover_keywords",
          "suggest_brands",
          "check_brand_names",
          "get_brand_lists",
          "get_brand_list_brands",
          "get_brand_list_campaigns",
          "propose_brand_list",
          "add_to_brand_list",
          "remove_from_brand_list",
          "attach_brand_list_to_campaigns",
          "detach_brand_list_from_campaigns"
        ],
        "scope": "product operation"
      }
    }
  ],
  "open_issues": null,
  "agent_runtime_version": "2.1.300 (Claude Code)",
  "verifies_run_id": null,
  "total_s": 89.61410117149353,
  "license": null,
  "tool_calls": 8,
  "model_version": "claude-haiku-5-5",
  "example_checks": [],
  "mcp": null,
  "other_model": null,
  "first_use_s": null,
  "native_tool_calls": 8,
  "last_commit_at": null,
  "source": "https://github.com/kLOsk/adloop",
  "models_agree": null,
  "maintenance_verdict": null,
  "cost_usd": 0.009434249999999998,
  "safety": null,
  "answered_issues": null,
  "what_failed": null,
  "steps": [
    "cd <host-path> && ls -la && cat README.md | head -300",
    "cd <host-path> && git log -1 --format=%H 2>/dev/null; ls -la .github/workflows 2>/dev/null; cat pyproject.toml 2>/dev/null | head -60; ls <host-path> 2>/dev/null",
    "cd <host-path> && grep -n '^#' README.md | head -80; grep -n -E 'uv |pip |adloop (init|--|mcp|serve|version|doctor)|curl|uvx' README.md | head -60; cat .github/workflows/ci.yml; cat .mcp.json",
    "cat <host-path> | head -250; which uv python3; python3 --version",
    "cd <host-path> && sed -n 355,400p README.md; sed -n 500,515p README.md; grep -n 'validate' <host-path> | head; ls -la .coldpass 2>/dev/null",
    "cd <host-path> && (command -v uv || (python3 -m pip --version 2>/dev/null || sudo apt-get install -y python3-pip >/tmp/apt.log 2>&1; python3 -m pip install --user --break-system-packages uv 2>&1 | tail -3)); export PATH=$HOME/.local/bin:$PATH; uv --version && uv sync 2>&1 | tail -20; echo EXIT=$?",
    "cd <host-path> && cat > /tmp/mcp_smoke.py <<'EOF'\nimport json, subprocess, sys\np = subprocess.Popen([\"<host-path>\", \"-m\", \"adloop\"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=\"<host-path>\")\ndef send(d): p.stdin.write((json.dumps(d)+\"\\n\").encode()); p.stdin.flush()\ndef recv():\n    while True:\n        line = p.stdout.readline()\n        if not line: raise SystemExit(\"EOF; stderr=\" + p.stderr.read().decode()[-2000:])\n        try: doc = json.loads(line)\n        except ValueError: continue\n        if \"id\" in doc: return doc\nsend({\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"capabilities\":{},\"clientInfo\":{\"name\":\"smoke\",\"version\":\"1\"}}})\ninit = recv(); print(\"serverInfo:\", init[\"result\"].get(\"serverInfo\"))\nsend({\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"})\nsend({\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\",\"params\":{}})\ntools = recv()[\"result\"][\"tools\"]\nprint(\"tools:\", len(tools), [t[\"name\"] for t in tools][:8])\np.terminate(); p.wait(timeout=5)\nEOF\ntimeout 120 python3 -I /tmp/mcp_smoke.py; echo EXIT=$?",
    "cd <host-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'\n{\"kind\":\"mcp\",\"argv\":[\"<host-path>\",\"-m\",\"adloop\"],\"cwd\":\"<host-path>\"}\nEOF\ncat > .coldpass/report.json <<'EOF'\n{\n  \"outcome\": \"working\",\n  \"operation\": \"Start the AdLoop stdio MCP server (README: 'From source' install, then MCP server via .venv/bin/python -m adloop per the Claude Code snippet) and call initialize + tools/list\",\n  \"operation_scope\": \"Verified server startup and tool discovery only (138 tools, serverInfo AdLoop 4.1.1). Tool calls against Google Ads/GA4 were not exercised: they require OAuth via 'adloop init' (interactive, browser sign-in and a Google Cloud project), which is outside this smoke task.\",\n  \"steps\": [\n    \"git clone/pinned source already present in <host-path>\",\n    \"Installed uv 0.13.1 via python3 -m pip install --user --break-system-packages uv (uv not preinstalled in guest)\",\n    \"uv sync (README 'From source' install step; resolved and installed dependencies into .venv)\",\n    \"Started MCP server: <host-path> -m adloop; sent initialize, notifications/initialized, tools/list; received 138 tools\"\n  ],\n  \"deviations\": [\n    \"README 'From source' lists 'uv sync' and 'uv run adloop init'; uv was not present in the guest, so it was installed with pip first (--break-system-packages, --user).\",\n    \"Did not run 'uv run adloop init' (interactive OAuth/Google Cloud setup, out of scope for smoke). The MCP server still starts and lists tools without credentials.\",\n    \"Did not run the test suite (tests/ via pytest) per task instructions.\"\n  ],\n  \"stuck_step\": null,\n  \"main_blocker\": null,\n  \"suggested_fix\": null\n}\nEOF\nrm -f /tmp/mcp_smoke.py; <env-var>=<host-path> python3 -I <host-path> --validate; echo EXIT=$?"
  ],
  "platform_conflicts": null,
  "claims_note": null,
  "maintained_note": null,
  "repo": "kLOsk/adloop",
  "service_tier": null,
  "maintained": null,
  "source_pin": null,
  "operation_scope": "product operation",
  "reasoning": "low",
  "claims": [],
  "platform": "linux",
  "cost_to_try": null,
  "backend": null,
  "tool_transport": "mcp-assigned-vm",
  "hardware": null,
  "agent_interface": null,
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "date": "2026-10-18T16:23:37.738677+00:00",
  "kind": "mcp",
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "error_excerpt": null,
  "pass": true,
  "evidence_version": null,
  "source_revision": null,
  "run_id": "kLOsk--adloop-claude-haiku-5-5-1792340528124568123",
  "last_release_at": null,
  "furthest_model": null,
  "model": "claude-haiku-5-5",
  "what_it_did": "Start the AdLoop stdio MCP server (README: 'From source' install, then MCP server via .venv/bin/python -m adloop per the Claude Code snippet) and call initialize + tools/list",
  "sandbox_source": null,
  "other_run_id": null,
  "hosting": null,
  "tested_commit": null,
  "guest_setup": null,
  "mcp_context": null,
  "agent_interfaces": [],
  "setup_identity": null,
  "works": null,
  "install_s": null,
  "fix_id": null,
  "tokens_in": 185445,
  "tested_at": null,
  "test_version": "readme-03aea4c41d53955e3723c330e9927d2a9df627f6642624cc0078a97c73a53c8a",
  "recovery": {
    "source": "legacy-oct16-18",
    "original_run_id": "kLOsk--adloop-claude-haiku-5-5-1792340528124568123",
    "historical": true,
    "ledger_sha256": "c5e6a833c182c1e2aecf69d0bd0020aec63c65d98f3e933e4b32232340312736"
  },
  "transcript_url": "/transcripts/kLOsk--adloop-claude-haiku-5-5-1792340528124568123.txt",
  "report_url": "/reports/kLOsk--adloop-claude-haiku-5-5-1792340528124568123.json"
}
