{
  "run_id": "kaelorlabs--smitline-claude-haiku-5-5-1792814787192125279",
  "date": "2026-10-24T04:10:16.809181+00:00",
  "repo": "kaelorlabs/smitline",
  "kind": "mcp",
  "source": "https://github.com/kaelorlabs/smitline",
  "commit": "32da3f17659fdc204b9a65c673a7335cc5af76e0",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 198.26509459409863,
  "total_s": 229.61703038215637,
  "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> && which docker node npm uv 2>&1; docker --version 2>&1; ls .coldpass; sed -n 1,80p docs/development.md; echo ----; sed -n 1,60p SETUP.md; echo; ls /inputs 2>&1; cat <guest-path> >/dev/null 2>&1 && echo checker-present",
    "sudo -n true && echo SUDO_OK; cat /etc/os-release | head -2; (sudo -n apt-get update -qq 2>&1 | tail -3); sudo -n apt-get install -y -qq docker.io 2>&1 | tail -5; which docker && docker --version",
    "sudo -n systemctl start docker 2>&1; sleep 3; sudo -n docker info 2>&1 | head -15; echo ---; curl -sS -m 20 -o /dev/null -w '%{http_code}\\n' https://ghcr.io/v2/ 2>&1; echo env: $HTTPS_PROXY $https_proxy",
    "sudo -n docker run -d --name smitline --restart unless-stopped --network host -v smitline:/data ghcr.io/kaelorlabs/smitline 2>&1 | tail -5; sleep 15; sudo -n docker ps -a --filter name=smitline 2>&1; sudo -n docker logs --tail 30 smitline 2>&1 | tail -30",
    "cd <guest-path> && sed -n 1,120p docs/agents.md; echo ----; curl -fsS -m 10 -o /dev/null -w '%{http_code}\\n' http://127.0.0.1:8095/calls; sudo -n docker exec smitline smitline --help 2>&1 | head -40",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport json, subprocess, sys\nargv = json.loads(sys.argv[1]); tool = sys.argv[2] if len(sys.argv) > 2 else None\nargs = json.loads(sys.argv[3]) if len(sys.argv) > 3 else {}\np = subprocess.Popen(argv, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)\ndef send(m): p.stdin.write(json.dumps(m)+\"\\n\"); p.stdin.flush()\ndef recv():\n    while True:\n        line = p.stdout.readline()\n        if not line: raise SystemExit(\"EOF; stderr=\" + p.stderr.read())\n        msg = json.loads(line)\n        if \"id\" in msg: return msg\nsend({\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"h\",\"version\":\"1\"}}})\nprint(json.dumps(recv().get(\"result\",{}).get(\"serverInfo\")))\nsend({\"jsonrpc\":\"2.0\",\"method\":\"notifications/initialized\"})\nif tool is None:\n    send({\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"})\n    for t in recv()[\"result\"][\"tools\"]: print(t[\"name\"])\nelse:\n    send({\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":tool,\"arguments\":args}})\n    print(json.dumps(recv(), indent=1)[:3000])\np.stdin.close(); p.wait(timeout=20)\nEOF\ncd <guest-path> && timeout 120 python3 -I mcpcall.py '[\"sudo\",\"-n\",\"docker\",\"exec\",\"-i\",\"smitline\",\"smitline\",\"mcp\"]' 2>&1 | head -60",
    "cd <guest-path> && timeout 120 python3 -I mcpcall.py '[\"sudo\",\"-n\",\"docker\",\"exec\",\"-i\",\"smitline\",\"smitline\",\"mcp\"]' list_voices '{}' 2>&1 | head -40; echo ====; timeout 120 python3 -I mcpcall.py '[\"sudo\",\"-n\",\"docker\",\"exec\",\"-i\",\"smitline\",\"smitline\",\"mcp\"]' check_call_brief '{\"channel\":\"phone\",\"to\":\"+14155550142\",\"objective\":\"Book a table for 4 at 7pm\",\"onBehalfOf\":\"Sam\"}' 2>&1 | head -60",
    "cd <guest-path> && grep -rniE \"setInterval|cron|--once|--now|schedule|setTimeout\\(.*loop|while \\(true\\)|for await\" --include=*.mjs --include=*.js --include=*.py --include=*.ts --include=*.sh meeting-runtime packages control-panel docker start-*.sh scripts 2>/dev/null | grep -v node_modules | head -30; echo ----; cat package.json; echo; sudo -n docker exec smitline smitline voices 2>&1 | head -5",
    "cd <guest-path> && grep -n \"Works with your agent\" README.md; grep -n \"MCP, a CLI or a REST API\" README.md | cut -c1-300; grep -n \"Smitline makes the call\" README.md | cut -c1-200",
    "cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'\n{\"kind\":\"mcp\",\"argv\":[\"sudo\",\"-n\",\"docker\",\"exec\",\"-i\",\"smitline\",\"smitline\",\"mcp\"],\"cwd\":\"<guest-path>\",\"tool\":\"list_voices\",\"arguments\":{},\"expected_text\":\"marin\"}\nEOF\ncat > .coldpass/claims.json <<'EOF'\n[\n {\"kind\":\"claim\",\"claim\":\"Smitline exposes call tools to MCP-capable agents such as Claude Desktop\",\"source\":\"**Works with your agent.** Claude Code, Codex, Cursor, Claude Desktop, OpenClaw, Hermes, and anything that can use MCP, a CLI or a REST API.\",\"input\":\"list_voices with no arguments\",\"expected\":\"the GPT-Live voice list, default marin\",\"probe_kind\":\"mcp\",\"argv\":[\"sudo\",\"-n\",\"docker\",\"exec\",\"-i\",\"smitline\",\"smitline\",\"mcp\"],\"tool\":\"list_voices\",\"arguments\":{},\"expected_text\":\"marin\",\"cwd\":\"<guest-path>\"},\n {\"kind\":\"claim\",\"claim\":\"Calls need your own OpenAI key; without it the brief check reports the missing key\",\"source\":\"**Runs on your computer.** One Docker container, your own OpenAI and phone keys, open source under Apache-2.0.\",\"input\":\"check_call_brief for a phone call with no OPENAI_API_KEY set\",\"expected\":\"ok false with problem 'openai is not configured'\",\"probe_kind\":\"mcp\",\"argv\":[\"sudo\",\"-n\",\"docker\",\"exec\",\"-i\",\"smitline\",\"smitline\",\"mcp\"],\"tool\":\"check_call_brief\",\"arguments\":{\"channel\":\"phone\",\"to\":\"+14155550142\",\"objective\":\"Book a table for 4 at 7pm\",\"onBehalfOf\":\"Sam\"},\"expected_text\":\"openai is not configured\",\"cwd\":\"<guest-path>\"}\n]\nEOF\ncat > .coldpass/examples.json <<'EOF'\n[\n {\"kind\":\"example\",\"claim\":\"The smitline CLI lists GPT-Live voices inside the running container\",\"source\":\"README.md Prefer to set it up yourself? / docs/agents.md CLI\",\"input\":\"voices\",\"expected\":\"JSON with default marin\",\"argv\":[\"sudo\",\"-n\",\"docker\",\"exec\",\"smitline\",\"smitline\",\"voices\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"marin\"}\n]\nEOF\ncat > .coldpass/cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Entry points inspected (start-*.sh, Dockerfile, packages/cli, meeting-runtime, control-panel). No cron, --once/--now, or product scheduler loop was found. The only setInterval calls are console UI refresh timers in control-panel/app.js and calls.js. The daemon is a request-driven HTTP/MCP server; calls are placed on demand, not on a schedule.\",\"checks\":[]}\nEOF\nfor f in probe claims examples cycles; do python3 -I -m json.tool .coldpass/$f.json >/dev/null && echo \"$f ok\"; done; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -40",
    "cd <guest-path> && sudo -n docker stop smitline >/dev/null && sudo -n docker ps -a --filter name=smitline --format '{{.Names}} {{.Status}}'; mkdir -p .coldpass && cat > .coldpass/report.json <<'EOF'\n{\"outcome\":\"needs_credentials\",\"fault_owner\":\"prerequisite\",\"operation\":\"Run the Smitline container from the README and call its MCP tools (list_voices works; placing a phone call needs an OpenAI key)\",\"operation_scope\":\"Linux Ubuntu 24.04 guest, Docker Engine 29.1.3 installed via apt (sudo), image ghcr.io/kaelorlabs/smitline pulled from GHCR, phone-only run (no Docker socket). Not tested: placing a real phone call (needs OpenAI key plus SignalWire/Twilio account), meetings, the Node 22 npm test suite, the meeting image build.\",\"steps\":[\"sudo apt-get install -y docker.io (Docker prerequisite from README 'What you need'; Docker was missing, installed 29.1.3)\",\"sudo systemctl start docker\",\"docker run -d --name smitline --restart unless-stopped --network host -v smitline:/data ghcr.io/kaelorlabs/smitline (README 'Prefer to set it up yourself?', phone-only variant)\",\"curl http://127.0.0.1:8095/calls returned 200\",\"smitline mcp over stdio: tools/call list_voices returned default marin and 13 voices\",\"smitline mcp: tools/call check_call_brief returned ok false, problem 'openai is not configured: set OPENAI_API_KEY'\",\"docker exec smitline smitline voices returned the voice list\",\"docker stop smitline\"],\"deviations\":[\"Docker was not installed in the guest; installed docker.io via apt with sudo (the README requires Docker but the guest lacked it).\",\"Probes use 'sudo -n docker exec' because the ubuntu user is not in the docker group.\",\"Used the README's phone-only docker run to avoid mounting the Docker socket; the meeting option was not exercised.\",\"Node 22 and the documented npm test and meeting-image test suite were not run; they are repo tests, not product operations.\",\"No OpenAI key or phone provider credentials are available in this guest, so no call was placed; the README says keys go on the local setup <email>:8095, which was not completed.\"],\"stuck_step\":\"Placing a call: the brief check fails with 'openai is not configured: set OPENAI_API_KEY'\",\"main_blocker\":\"No OpenAI API key (and no SignalWire/Twilio phone account) is available in this disposable guest, and I was not given credentials.\",\"plain_failure\":\"The Smitline app starts and its agent tools respond, but it cannot place a phone call here because it has no OpenAI key or phone account. Adding those keys on its local setup page is needed to test calls.\",\"suggested_fix\":\"Provide an OpenAI key with GPT-Live access and a SignalWire or Twilio account, enter them on the setup page at http://127.0.0.1:8095 (not in chat), then rerun the check_call_brief and a real call.\"}\nEOF\npython3 -I -m json.tool .coldpass/report.json >/dev/null && echo report ok; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c \"import json,sys; d=json.load(sys.stdin); print(d['valid'], d['problems'], d['replay']['status'])\"",
    "cd <guest-path> && sudo -n docker start smitline >/dev/null && sleep 12 && curl -fsS -m 10 -o /dev/null -w '%{http_code}\\n' http://127.0.0.1:8095/calls; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c \"import json,sys; d=json.load(sys.stdin); print(d['valid'], d['problems'], d['replay']['status'])\"",
    "cd <guest-path> && python3 -I - <<'EOF'\nimport json\np='.coldpass/report.json'\nr=json.load(open(p))\nr['deviations'].append(\"The smitline container is intentionally left RUNNING after the run: the probe, claims and examples call 'docker exec smitline smitline mcp/voices', which need it up for the checker replay. Stop it with: sudo docker rm -f smitline (the console on 127.0.0.1:8095 and the stdio MCP are the only processes; they are the product's own runtime, not background processes I spawned separately).\")\nr['steps'].append(\"docker stop smitline then docker start smitline were needed because the first stop broke the checker replay; final container state: running\")\njson.dump(r,open(p,'w'),indent=1)\nEOF\npython3 -I -m json.tool .coldpass/report.json >/dev/null && echo report ok; <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c \"import json,sys; d=json.load(sys.stdin); print(d['valid'], d['problems'], d['replay']['status'])\"; sudo -n docker ps --filter name=smitline --format '{{.Names}} {{.Status}}'; ls -la .coldpass"
  ],
  "stuck_step": "Placing a call: the brief check fails with 'openai is not configured: set OPENAI_API_KEY'",
  "error_excerpt": null,
  "what_it_did": "Run the Smitline container from the README and call its MCP tools (list_voices works; placing a phone call needs an OpenAI key)",
  "suggested_fix": null,
  "tokens_in": 400321,
  "tokens_out": 12800,
  "cost_usd": 0.01824246,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "sudo",
          "-n",
          "docker",
          "exec",
          "-i",
          "smitline",
          "smitline",
          "mcp"
        ],
        "kind": "mcp",
        "serverInfo": {
          "name": "smitline",
          "version": "0.3.0"
        },
        "tools": [
          "start_call",
          "check_call_brief",
          "wait_for_call",
          "get_call",
          "list_calls",
          "save_call_note",
          "list_contacts",
          "send_call_instruction",
          "reply_to_call_request",
          "end_call",
          "transfer_call_to_me",
          "list_voices",
          "get_profile",
          "update_profile"
        ],
        "tool_schema_bytes": 22031,
        "tool_result": {
          "content": [
            {
              "type": "text",
              "text": "{\"default\":\"marin\",\"voices\":[\"marin\",\"vesper\",\"quartz\",\"ripple\",\"willow\",\"stone\",\"gleam\",\"meridian\",\"bossa\",\"tempo\",\"beacon\",\"delta\",\"cinder\"]}"
            }
          ],
          "structuredContent": {
            "default": "marin",
            "voices": [
              "marin",
              "vesper",
              "quartz",
              "ripple",
              "willow",
              "stone",
              "gleam",
              "meridian",
              "bossa",
              "tempo",
              "beacon",
              "delta",
              "cinder"
            ]
          },
          "isError": false
        },
        "tool_result_checked": true,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "No problems traced to this repository code in these checks. 1 static matches retained as context.",
    "findings": [],
    "context": [
      {
        "kind": "hardcoded-secret",
        "count": 1,
        "note": "Gitleaks found a possible hardcoded secret; value withheld.",
        "location_count": 1,
        "path": "packages/cli/test/setup.test.mjs"
      }
    ],
    "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=kaelorlabs--smitline-claude-haiku-5-5-1792814787192125279",
    "evidence_file": "/data/safety/kaelorlabs--smitline-claude-haiku-5-5-1792814787192125279.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.300 (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": 14,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "32da3f17659fdc204b9a65c673a7335cc5af76e0",
    "url": "https://github.com/kaelorlabs/smitline"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": "prerequisite",
    "status": "diagnosed",
    "reason": "No OpenAI API key (and no SignalWire/Twilio phone account) is available in this disposable guest, and I was not given credentials."
  },
  "fix_id": null,
  "verifies_run_id": null,
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 14,
  "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": "Apache-2.0",
  "repo_url": "https://github.com/kaelorlabs/smitline",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "local",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "outcome": "Entry points inspected (start-*.sh, Dockerfile, packages/cli, meeting-runtime, control-panel). No cron, --once/--now, or product scheduler loop was found. The only setInterval calls are console UI refresh timers in control-panel/app.js and calls.js. The daemon is a request-driven HTTP/MCP server; calls are placed on demand, not on a schedule.",
      "evidence": "Entry points inspected (start-*.sh, Dockerfile, packages/cli, meeting-runtime, control-panel). No cron, --once/--now, or product scheduler loop was found. The only setInterval calls are console UI refresh timers in control-panel/app.js and calls.js. The daemon is a request-driven HTTP/MCP server; calls are placed on demand, not on a schedule.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Smitline exposes call tools to MCP-capable agents such as Claude Desktop",
      "source": "**Works with your agent.** Claude Code, Codex, Cursor, Claude Desktop, OpenClaw, Hermes, and anything that can use MCP, a CLI or a REST API.",
      "input": "{\"tool\": \"list_voices\", \"arguments\": {}}",
      "expected": "the GPT-Live voice list, default marin",
      "command": "sudo -n docker exec -i smitline smitline mcp tools/call {\"tool\": \"list_voices\", \"arguments\": {}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: marin",
      "evidence": "marin\\\",\\\"voices\\\":[\\\"marin\\\",\\\"vesper\\\",\\\"quartz\\\",\\\"ripple\\\",\\\"willow\\\",\\\"stone\\\",\\\"gleam\\\",\\\"meridian\\\",\\\"bossa\\\",\\\"tempo\\\",\\\"beacon\\\",\\\"delta\\\",\\\"cinder\\\"]}\"}], \"structuredContent\": {\"default\": \"marin\", \"voices\": [\"marin\", \"vesper\", \"quartz\", \"ripple\", \"willow\", \"stone\", \"gleam\", \"meridian\", \"bossa\", \"tempo\", \"beacon\", \"delta\", \"cinder\"]}, \"isError\": false}",
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "Calls need your own OpenAI key; without it the brief check reports the missing key",
      "source": "**Runs on your computer.** One Docker container, your own OpenAI and phone keys, open source under Apache-2.0.",
      "input": "{\"tool\": \"check_call_brief\", \"arguments\": {\"channel\": \"phone\", \"to\": \"+14155550142\", \"objective\": \"Book a table for 4 at 7pm\", \"onBehalfOf\": \"Sam\"}}",
      "expected": "ok false with problem 'openai is not configured'",
      "command": "sudo -n docker exec -i smitline smitline mcp tools/call {\"tool\": \"check_call_brief\", \"arguments\": {\"channel\": \"phone\", \"to\": \"+14155550142\", \"objective\": \"Book a table for 4 at 7pm\", \"onBehalfOf\": \"Sam\"}}",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: openai is not configured",
      "evidence": "openai is not configured: set OPENAI_API_KEY\\\"],\\\"carried\\\":0}\"}], \"structuredContent\": {\"ok\": false, \"brief\": {\"channel\": \"phone\", \"to\": \"+14155550142\", \"onBehalfOf\": \"Sam\", \"objective\": \"Book a table for 4 at 7pm\", \"mayAgreeTo\": [], \"mustNotShare\": [], \"maxMinutes\": 10, \"rehearsal\": false}, \"problems\": [\"Smitline calls people between 8:00 AM and 9:00 PM their time. It is 9:10 PM for +14155550142 (America/Los_Angeles). Try again later, or set afterHours to true if the user confirms this person expects a call now.\", \"openai is not configured: set OPENAI_API_KEY\"], \"carried\": 0}, \"isError\": fal",
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "The smitline CLI lists GPT-Live voices inside the running container",
      "source": "README.md Prefer to set it up yourself? / docs/agents.md CLI",
      "input": "voices",
      "command": "sudo -n docker exec smitline smitline voices",
      "evidence": "{\n  \"default\": \"marin\",\n  \"voices\": [\n    \"marin\",\n    \"vesper\",\n    \"quartz\",\n    \"ripple\",\n    \"willow\",\n    \"stone\",\n    \"gleam\",\n    \"meridian\",\n    \"bossa\",\n    \"tempo\",\n    \"beacon\",\n    \"delta\",\n    \"cinder\"\n  ]\n}",
      "deferred": false,
      "expected": "JSON with default marin",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-22T00:39:09Z",
    "commits_90d": 301,
    "merged_prs_90d": 43,
    "open_issues": 2,
    "open_prs": 3,
    "reply_share": 1.0,
    "reply_threads": 2,
    "median_reply_hours": 148.2,
    "last_release_at": "2026-10-22T01:02:35Z",
    "archived": false,
    "verdict": "maintained",
    "note": "actively maintained: last commit 2 days ago; 301 commits and 43 merged PRs in 90 days; 2 open issues, 3 open PRs; 2 of 2 recent threads got a maintainer reply, median first reply 148.2h; latest release 2026-10-22"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 2 days ago; 301 commits and 43 merged PRs in 90 days; 2 open issues, 3 open PRs; 2 of 2 recent threads got a maintainer reply, median first reply 148.2h; latest release 2026-10-22",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago; 2 open issues, 3 answered or closed",
  "last_commit_at": "2026-10-23T04:43:44Z",
  "last_release_at": "2026-10-22T01:02:35Z",
  "open_issues": 2,
  "answered_issues": 3,
  "platforms_claimed": [
    "linux",
    "windows"
  ],
  "topic": "mcp-server",
  "agent_interfaces": [
    {
      "interface": "mcp",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "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": 14,
    "schema_bytes": 22031,
    "tokens_approx": 5508,
    "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-24T04:10:16.809181+00:00",
  "tested_commit": "32da3f17659fdc204b9a65c673a7335cc5af76e0",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.300 (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": "kaelorlabs/smitline",
    "source": "https://github.com/kaelorlabs/smitline",
    "commit": "32da3f17659fdc204b9a65c673a7335cc5af76e0",
    "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.300 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "32da3f17659fdc204b9a65c673a7335cc5af76e0",
      "url": "https://github.com/kaelorlabs/smitline"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Run the Smitline container from the README and call its MCP tools (list_voices works; placing a phone call needs an OpenAI key)",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "mcp",
    "test_version": "readme-bdc1b9b3c0d2673aef87e076d14084a8123ddcf09d520c1ee2e364a37c3f4bb9",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": null,
  "report_url": "/reports/kaelorlabs--smitline-claude-haiku-5-5-1792814787192125279.json"
}
