coldpass

dondai1234/master-fetch

GitHub ↗ · How this check works

Per-setup public labels: Linux / Haiku: Works

Static status badge · SVG · read-only JSON. Embed with ![Coldpass status](https://coldpass.dev/badge/dondai1234--master-fetch.svg).

mcp-server

Works

The recorded run passed on 1 setup.

Answers apply to each recorded setup, revision and operation. Earlier observations remain in Run details.

Tested on Linux
PlatformHaikuLuna
Linuxyes

Linux / Haiku 5.5: yes · Oct 28, 2026 · 86d1b1329c0e · claude-code / 2.1.310 (Claude Code)
Recorded operation: <guest-path> · local stdio MCP start + initialize + tools/list

Does what it says
1 of 1 claims checked out
  • smart_fetch fetches a URL over HTTP and returns its content: Real input produced the expected result: This domain is for use in documentation examples

    Source: Fetch any URL. HTTP first, auto-escalates to the anti-detect browser if blocked.

    Input: {"tool": "mcp_smart_fetch", "arguments": {"url": "https://example.com/", "cache_ttl": 0}}

    Expected: page content returned

    Command: <guest-path> tools/call {"tool": "mcp_smart_fetch", "arguments": {"url": "https://example.com/", "cache_ttl": 0}}

    Observed: …This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.\"],\"url\":\"https://example.com/\",\"cached\":false,\"fetcher_used\":\"http\",\"extracted_type\":\"markdown\",\"session_id\":\"\",\"duration_ms\":649.630069732666,\"error\":\"\",\"content_type\":\"text/html; charset=utf-8\",\"total_size_bytes\":577,\"total_extracted_chars\":156,\"is_truncated\":false,\"next_offset\":0,\"escalation_path\":\"direct:http\",\"retry_count\":0,\"summary\":\"200 OK · 577B markdown · http\",\"content_ok\":true,\"

MCP
Yes, observed
Local or hosted
local
Local: runs on your machine
Needs keys or browser
None seen
Maintained
Slow
slow: last commit 96 days ago; 0 commits and 0 merged PRs in 90 days; 7 open issues, 5 open PRs; 17 of 44 recent threads got a maintainer reply, median first reply 2.5h; latest release 2026-07-24

Last commit Jul 24, 2026

Setup time
9 min 44 s
9 min 44 s to a working result
Issue
none found in recorded check
Evidence
README behavior checked
Agent interfaces
MCP, CLI (documented only)
MCP, CLI (documented only)

Observed interfaces were exercised by the checker. Documentation alone does not confirm compatibility.

MCP context
6 tools · about 2,846 tokens
6 tools · about 2,846 tokens

Largest returned tools/list page in these observations. Compact UTF-8 definition bytes ÷ 4, rounded up; approximate, excluding client framing and tool results. This is context size, not proof that every tool works.

Measured on linux with Haiku 5.5 · Oct 28, 2026 on 86d1b1329c0e

Tested with
Claude Code / Haiku 5.5
  • Linux: Claude Code / Haiku 5.5 · agent 2.1.310 (Claude Code) · Checked operation passed · Oct 28, 2026 on 86d1b1329c0e

Each entry describes its recorded operation and source revision.

Safety
Made outbound HTTPS connections: yes (hosts not recorded) by hound, tests

Review signals across current setups: connection review. 6 static matches retained as context.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 9 distinct locations. 17 attributed processes.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Full event, path and process lists for each observed setup:

Run details

Haiku 5.5

Native agent · Checked operation passed

Checked operation <guest-path> · local stdio MCP start + initialize + tools/list

Agent-reported scope: Run the hound MCP server over stdio and call mcp_smart_fetch to fetch https://example.com/ (HTTP tier), returning page content

MCP server returned: Hound · version 12.4.1.

MCP tools returned: mcp_smart_fetch, mcp_smart_crawl, mcp_screenshot, mcp_smart_search, cache_clear, version. Tool listing does not establish authenticated tool-call success.

Run details
run
dondai1234--master-fetch-claude-haiku-5-5-1793202549132773708
date
Oct 28, 2026
time to working
584.5s
product hosting / execution
Local stdio MCP server in the guest
recorded operation scope
product operation
model
claude-haiku-5-5
agent / version
claude-code / 2.1.310 (Claude Code)
platform
linux
reported cost
$0.025337
Recorded source
https://github.com/dondai1234/master-fetch
Backend
hyperv
Tool transport
mcp-assigned-vm
Requested source pin (not an observed revision)
{"commit": "86d1b1329c0eed6133f29e3effe6a40a29f9dcdc", "url": "https://github.com/dondai1234/master-fetch"}
Test version
readme-2d57868128a84902c09a58991c46c5fe288928e55b1de8282ab5003e13159c2f
revision
86d1b1329c0eed6133f29e3effe6a40a29f9dcdc
Whose fault: repo · diagnosed

Safety: Review signals: 1 connection review. 3 static matches retained as context.

Review signals: 1 connection review. 3 static matches retained as context.

Reviewed as expected for a test run: attempted writes that failed, so nothing was written.

Repository processes attempted these non-loopback connections; proxies can hide the final hostname. 9 distinct locations. 17 attributed processes.

2 hardcoded secret matches retained as context; full list in the evidence.

OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check.

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.

Full safety evidence →

Answers recorded for this run
  • smart_fetch fetches a URL over HTTP and returns its content: Real input produced the expected result: This domain is for use in documentation examples

    Source: Fetch any URL. HTTP first, auto-escalates to the anti-detect browser if blocked.

    Input: {"tool": "mcp_smart_fetch", "arguments": {"url": "https://example.com/", "cache_ttl": 0}}

    Expected: page content returned

    Command: <guest-path> tools/call {"tool": "mcp_smart_fetch", "arguments": {"url": "https://example.com/", "cache_ttl": 0}}

    Observed: …This domain is for use in documentation examples without needing permission. This is not a service; avoid relying on it for testing and monitoring purposes.\"],\"url\":\"https://example.com/\",\"cached\":false,\"fetcher_used\":\"http\",\"extracted_type\":\"markdown\",\"session_id\":\"\",\"duration_ms\":649.630069732666,\"error\":\"\",\"content_type\":\"text/html; charset=utf-8\",\"total_size_bytes\":577,\"total_extracted_chars\":156,\"is_truncated\":false,\"next_offset\":0,\"escalation_path\":\"direct:http\",\"retry_count\":0,\"summary\":\"200 OK · 577B markdown · http\",\"content_ok\":true,\"

Examples

  • Repository's documented offline test suite (CI command) runs: command exited with code 1: te-packages/pytest_asyncio/plugin.py:300: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. The event loop scope for asynchronous fixtures will default to the "fixture" caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to "function" scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET))

    Source: .github/workflows/ci.yml, Run tests step

    Input: python -m pytest tests/ -v --tb=short

    Expected: 762 tests pass; one date-dependent test fails on the VM clock (2026-10-28)

    Command: <guest-path> -m pytest tests/ -v --tb=short

    Observed: te-packages/pytest_asyncio/plugin.py:300: PytestDeprecationWarning: The configuration option "asyncio_default_fixture_loop_scope" is unset. The event loop scope for asynchronous fixtures will default to the "fixture" caching scope. Future versions of pytest-asyncio will default the loop scope for asynchronous fixtures to "function" scope. Set the default fixture loop scope explicitly in order to avoid unexpected behavior in the future. Valid fixture loop scopes are: "function", "class", "module", "package", "session" warnings.warn(PytestDeprecationWarning(_DEFAULT_FIXTURE_LOOP_SCOPE_UNSET))

Local or hosted: local

What the agent did

Run the hound MCP server over stdio and call mcp_smart_fetch to fetch https://example.com/ (HTTP tier), returning page content

cd <guest-path> && ls -la && cat README.md | head -c 6000 && python3 --version && echo "CDP=$CDP_URL" && curl -s -m 10 -i $CDP_URL/json/version | head -20
cd <guest-path> && grep -n "^## \|^### " README.md | head -80
cd <guest-path> && awk '/^## .*Install/{f=1} /^## .*(The 6 tools|Tools)/{if(f)exit} f' README.md | head -c 7000
cd <guest-path> && sed -n 81,100p README.md; sed -n 146,158p README.md
cd <guest-path> && grep -n "requires-python\|^name\|^version" pyproject.toml; python3 -m venv --help >/dev/null 2>&1 && echo venv_ok || echo no_venv; ls .coldpass
mkdir -p <guest-path> && python3 -m venv <guest-path> && <guest-path> install -q --upgrade pip 2>&1 | tail -3; <guest-path> install "hound-mcp[all]" 2>&1 | tail -5
cd /tmp && <guest-path> uninstall -y -q hound-mcp && <guest-path> install -q "<guest-path>" 2>&1 | tail -5; <guest-path> show hound-mcp | head -2; cd <guest-path> && git status 2>&1 | head -3; ls -a
cd /tmp && H=<guest-path>; $H -v 2>&1 | head -5; echo "rc=$?"; $H --help 2>&1 | head -40
cd /tmp && printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | timeout 60 <guest-path> 2><guest-path> | python3 -c 'import sys,json
for l in sys.stdin:
    d=json.loads(l)
    if d.get("id")==2:
        for t in d["result"]["tools"]:
            print(t["name"], list(t.get("inputSchema",{}).get("properties",{}).keys()), t.get("inputSchema",{}).get("required"))
'; echo rc=$?; head -c 300 <guest-path>
cd /tmp && cat <guest-path> | tail -25
cd <guest-path> && grep -n -i "mcp" pyproject.toml; <guest-path> show mcp | head -2; ls <guest-path> && grep -n "pip\|mcp" .github/workflows/*.yml | head -20
cd /tmp && <guest-path> install -q "mcp>=1.27.0,<2" 2>&1 | tail -3; <guest-path> show mcp | head -2; printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | timeout 60 <guest-path> 2><guest-path> > <guest-path>; echo rc=$?; python3 -I -c 'import json
for l in open("<guest-path>"):
    d=json.loads(l)
    if d.get("id")==2:
        for t in d["result"]["tools"]:
            print(t["name"], list(t.get("inputSchema",{}).get("properties",{}).keys()), t.get("inputSchema",{}).get("required"))
'; tail -3 <guest-path>
cd /tmp && grep -o '"name": *"[^"]*"' <guest-path> | sort -u | head; printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"version","arguments":{}}}' '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"mcp_smart_fetch","arguments":{"url":"https://example.com/","cache_ttl":0}}}' | timeout 120 <guest-path> 2><guest-path> | head -c 2500; echo; echo rc=$?
cat <guest-path> | tail -30
cd /tmp && ( printf '%s\n' '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"t","version":"1"}}}' '{"jsonrpc":"2.0","method":"notifications/initialized"}' '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"version","arguments":{}}}'; sleep 20; printf '%s\n' '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"mcp_smart_fetch","arguments":{"url":"https://example.com/","cache_ttl":0}}}'; sleep 60 ) | timeout 110 <guest-path> 2><guest-path> | cut -c1-1500; echo rc=$?; tail -c 800 <guest-path>
cd <guest-path> && mkdir -p .coldpass && cat > .coldpass/probe.json <<'EOF'
{"kind":"mcp","argv":["<guest-path>"],"cwd":"<guest-path>","tool":"mcp_smart_fetch","arguments":{"url":"https://example.com/","cache_ttl":0},"expected_text":"This domain is for use in documentation examples"}
EOF
cat > .coldpass/claims.json <<'EOF'
[{"kind":"claim","claim":"smart_fetch fetches a URL over HTTP and returns its content","source":"Fetch any URL. HTTP first, auto-escalates to the anti-detect browser if blocked.","input":"https://example.com/","expected":"page content returned","probe_kind":"mcp","argv":["<guest-path>"],"tool":"mcp_smart_fetch","arguments":{"url":"https://example.com/","cache_ttl":0},"expected_text":"This domain is for use in documentation examples","cwd":"<guest-path>"}]
EOF
python3 -I -m json.tool .coldpass/probe.json >/dev/null && python3 -I -m json.tool .coldpass/claims.json >/dev/null && echo ok; grep -c "Fetch any URL. HTTP first, auto-escalates to the anti-detect browser if blocked." README.md
cd <guest-path> && grep -rn -i "cron\|schedul\|--once\|webhook" src README.md --include=*.py --include=*.md | head -10; echo ---; sed -n 30,60p .github/workflows/ci.yml
cd <guest-path> && sed -n '/optional-dependencies/,/^\[tool/p' pyproject.toml | head -30
cd /tmp && <guest-path> install -q "pytest>=8.0" "pytest-asyncio>=0.24" "pytest-mock>=3.14" 2>&1 | tail -3; cd <guest-path> && timeout 900 <guest-path> -m pytest tests/ -q --tb=line -p no:cacheprovider 2>&1 | tail -15
cd <guest-path> && sed -n 270,290p tests/test_envelope.py
cd <guest-path> && cat > .coldpass/examples.json <<'EOF'
[{"kind":"example","claim":"Repository's documented offline test suite (CI command) runs","source":".github/workflows/ci.yml, Run tests step","input":"python -m pytest tests/ -v --tb=short","expected":"762 tests pass; one date-dependent test fails on the VM clock (2026-10-28)","argv":["<guest-path>","-m","pytest","tests/","-v","--tb=short"],"cwd":"<guest-path>","env":{},"expected_text":"762 passed","expected_returncode":1,"expected_exit_meaning":"one test failure in tests/test_envelope.py (test-owned date assumption)"}]
EOF
cat > .coldpass/cycles.json <<'EOF'
{"detected":false,"checks":[],"reason":"Inspected README.md and src/master_fetch (cli.py, server.py): Hound is a stdio/streamable-HTTP MCP server with no cron, scheduler, --once/--now, loop, or webhook trigger. Only CI schedules and cache TTLs exist, which are not product cycles."}
EOF
python3 -I -m json.tool .coldpass/examples.json >/dev/null && python3 -I -m json.tool .coldpass/cycles.json >/dev/null && echo ok; ls <guest-path> /inputs 2>&1 | head
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay 2>&1 | tail -c 4000
cd <guest-path> && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo rc=$?; python3 -I -c '
import json,re
t=open("<guest-path>").read()
print(len(t)); print(t[:600])
' ; grep -o '"valid": *[a-z]*\|"outcome": "[a-z_]*"\|"verdict": "[a-z]*"\|"error": "[^"]\{0,200\}' <guest-path> | head -20
cd <guest-path> && python3 -I -c '
import json
t=open("<guest-path>").read()
d=json.loads(t[t.index("{"):])
print(d.get("valid")); print(len(d.get("problems",[])))
for p in d.get("problems",[]): print("PROBLEM:", p[:150])
print(list(d.keys()))
'
grep -n "expected_returncode\|expected_exit_meaning\|def _example\|returncode" <guest-path> | head -30
sed -n 1520,1560p <guest-path> | cut -c1-260
cd <guest-path> && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":"repo","operation":"Run the hound MCP server over stdio and call mcp_smart_fetch to fetch https://example.com/ (HTTP tier), returning page content","operation_scope":"Linux guest, Python 3.12.3 venv at <guest-path>, hound-mcp 12.4.1 installed from the pinned workspace source with [all] extras; HTTP-only fetch, no stealth browser used; network access required","steps":["pip install hound-mcp[all] (installed from the pinned workspace source instead of PyPI, to test the pinned code)","Browser download step for chromium (SKIPPED: task forbids downloading a browser; browser tier not exercised)","hound (stdio MCP server; initialize then tools/call mcp_smart_fetch url=https://example.com/ cache_ttl=0 returned 200 OK, fetcher_used=http, title Example Domain)","hound -v (version 12.4.1, reports 13.2.0 available)","python -m pytest tests/ -v --tb=short (CI command; 762 passed, 1 failed)"],"deviations":["pyproject.toml declares mcp>=1.27.0 with no upper bound; pip resolved mcp 2.3.0, and hound crashed at startup with AttributeError: 'Server' object has no attribute 'list_tools' (src/master_fetch/server.py:2987). Worked around in the venv by pinning mcp>=1.27.0,<2 (mcp 1.30.0); no product source edited.","Installed from the pinned workspace source (12.4.1) rather than PyPI (which provides 13.2.0), to test the pinned code.","Skipped the chromium browser download because the task forbids it; the CDP endpoint http://<internal-ip>:9226/json/version returned HTTP 200 (Chrome/155.0.8059.84) but no browser-dependent operation was run through it.","Tool names are exposed as mcp_smart_fetch, mcp_smart_crawl, mcp_screenshot, mcp_smart_search (README says smart_fetch etc.); used the server's actual names.","Test suite: tests/test_envelope.py::TestFreshness::test_no_fetched_at_falls_back_to_today fails on the VM clock (2026-10-28): it hardcodes a 2026-07-20 publish date and asserts age <= 10 days, but the actual age is 100 days. This is a date-dependent test defect in the repo, not a product fault.","Patchright printed a non-fatal Playwright-was-updated banner on stderr during fetch because no browser is installed."],"stuck_step":null,"main_blocker":null,"plain_failure":"Validation reports valid=false solely because the documented CI pytest example exits 1 on the date-dependent test in tests/test_envelope.py; the checker does not accept a nonzero example exit unless the source documents it, and the CI yml does not. The smart_fetch probe and README claim both replay successfully.","suggested_fix":"(1) Pin mcp<2 in pyproject.toml (or port server.py to the mcp 2.x API) so pip does not resolve an incompatible major version. (2) Make test_no_fetched_at_falls_back_to_today compute its expected age relative to the fixed reference date or freeze the clock, so it does not depend on the current date."}
EOF
python3 -I -m json.tool .coldpass/report.json >/dev/null && echo report_ok; ls -a; ls -d build *.egg-info .pytest_cache 2>/dev/null; echo done
cd <guest-path> && rm -rf .pytest_cache && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo rc=$?; python3 -I -c '
import json
t=open("<guest-path>").read()
d=json.loads(t[t.index("{"):])
print("valid=",d.get("valid")); [print("PROBLEM:",p[:120]) for p in d.get("problems",[])]'; rm -rf .pytest_cache; ls -a | head -3

No product verdict. Run record.