Haiku 5.5
Native agent · Hosted MCP connection/tools-list passedChecked operation Remote hosted MCP connection · initialize + tools/list · http://127.0.0.1:8080/mcp
Checked against the hosted endpoint only.
Agent-reported scope: Start the datarobot-genai DataRobot MCP server (drmcp) from the README-installed package and call a real drtools tool over streamable HTTP: search_datarobot_agentic_docs returned live docs results including 'MCP: DataRobot docs'.
MCP server returned: datarobot-mcp-server · version 3.4.11.
MCP tools returned: search_datarobot_agentic_docs, datarobot_docs_fetch_page. Tool listing does not establish authenticated tool-call success.
Run details
- run
- datarobot-oss--datarobot-genai-claude-haiku-5-5-1793198464047028078
- date
- Oct 28, 2026
- time to working
- 404.4s
- product hosting / execution
- Remote hosted MCP endpoint
- recorded operation scope
- remote hosted MCP initialize + tools/list
- model
- claude-haiku-5-5
- agent / version
- claude-code / 2.1.310 (Claude Code)
- platform
- linux
- reported cost
- $0.028630
- Recorded source
- https://github.com/datarobot-oss/datarobot-genai
- Backend
- hyperv
- Tool transport
- mcp-assigned-vm
- Requested source pin (not an observed revision)
- {"commit": "f55c1e69b397e94b553b5d427c780c428309619f", "url": "https://github.com/datarobot-oss/datarobot-genai"}
- Test version
- readme-2d57868128a84902c09a58991c46c5fe288928e55b1de8282ab5003e13159c2f
- revision
- f55c1e69b397e94b553b5d427c780c428309619f
Safety: Review signals: 1 connection review, 1 hardcoded secret, 51 known vulnerability. 6 static matches retained as context.
Review signals: 1 connection review, 1 hardcoded secret, 51 known vulnerability. 6 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. 3 distinct locations. 14 attributed processes.
Gitleaks found a possible hardcoded secret; value withheld. src/datarobot_genai/dragent/frontends/claim_validation.py
OSV reports a known vulnerability in this dependency version. 11 distinct locations. 30 findings.
6 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.
Answers recorded for this run
- The DataRobot-compatible MCP server runs and its drtools docs search tool returns real results: Real input produced the expected result: MCP: DataRobot docs
Source: Library of agentic tools and DataRobot-compatible MCP server
Input: {"tool": "search_datarobot_agentic_docs", "arguments": {"query": "MCP server setup", "max_results": 2}}
Expected: search results including MCP: DataRobot docs
Command: <guest-path> <guest-path> tools/call {"tool": "search_datarobot_agentic_docs", "arguments": {"query": "MCP server setup", "max_results": 2}}
Observed: …MCP: DataRobot docs\",\"result_0_url\":\"https://docs.datarobot.com/en/docs/agentic-ai/agentic-mcp/index.html\",\"result_0_description\":\"Release notes for September are available MCP ¶ Premium DataRobot's Agentic AI capabilities are a premium feature; contact your DataRobot representative for enablement information. Try this functionality for yourself in a limited capacity in the DataRobot trial experience. The Model Context Protocol (MCP) provides a standardized interface for AI agents to interact with external systems, tools, and data sources. Use MCP to centralize tool management, integra
Examples
- Standalone quickstart walks through LLM Gateway, drtools and running an agent: The quickstart is e2e-tests/examples/quickstart.ipynb and requires a DataRobot account (DATAROBOT_API_TOKEN, DATAROBOT_ENDPOINT) for LLM Gateway and deployments; no credentials are available in this guest. Ran the offline drtools MCP docs-search example instead via probe.json.
Source: README.md#Standalone end-to-end examples
Expected: documented command completes successfully
Observed: The quickstart is e2e-tests/examples/quickstart.ipynb and requires a DataRobot account (DATAROBOT_API_TOKEN, DATAROBOT_ENDPOINT) for LLM Gateway and deployments; no credentials are available in this guest. Ran the offline drtools MCP docs-search example instead via probe.json.
Local or hosted: local
What the agent did
Start the datarobot-genai DataRobot MCP server (drmcp) from the README-installed package and call a real drtools tool over streamable HTTP: search_datarobot_agentic_docs returned live docs results including 'MCP: DataRobot docs'.
cd <guest-path> && ls -la && git -C . status 2>&1 | head -3; python3 --version; ls /inputs 2>&1; wc -c README.md 2>/dev/null
cd <guest-path> && cat README.md | head -c 7000
cd <guest-path> && tail -c 2700 README.md; echo ----; grep -n "drmcp\|drtools" README.md | head -30; ls .coldpass; cat .coldpass/* 2>/dev/null | head -c 1500
cd <guest-path> && grep -n -A8 "\[project.scripts\]" pyproject.toml; grep -n "^version" pyproject.toml; ls src/datarobot_genai; python3 -m venv --help >/dev/null 2>&1 && echo venv_ok || echo venv_missing
cd <guest-path> && grep -rn "__main__\|def main\|mcp.run\|console_scripts\|scripts" pyproject.toml setup.py | head; ls src/datarobot_genai/drmcp; cat src/datarobot_genai/drmcp/__main__.py 2>/dev/null | head -40
mkdir -p <guest-path> && python3 -m venv <guest-path> && <guest-path> install -q --upgrade pip 2>&1 | tail -3; echo rc=$?
cd /tmp && timeout 7000 <guest-path> install "<guest-path>" > <guest-path> 2>&1; echo rc=$?; tail -5 <guest-path>
cd <guest-path> && ls <guest-path> | head -50; grep -rn "drmcp" docs/README.md | head; ls docs/src | head -50
cd <guest-path> && ls docs/src/drtools docs/src/dragent; grep -rln "drmcp" docs/src | head; grep -n "mcp" docs/src/drtools/*.md | head -30
cd <guest-path> && cat docs/src/drtools/README.md | head -c 3500; echo ----; grep -n "__main__\|def main\|mcp.run\|argparse\|typer\|cyclopts" src/datarobot_genai/drmcp/server.py | head; ls e2e-tests
cd <guest-path> && cat src/datarobot_genai/drmcp/server.py; ls e2e-tests/drmcp e2e-tests/examples | head -40
cd <guest-path> && grep -rn "drmcp.server\|drmcp/server\|create_mcp_server" --include=*.md --include=*.toml --include=*.yaml --include=*.py . | grep -v "^./tests" | head -20; grep -n "drmcp\|mcp" Taskfile.yaml .taskfiles/* 2>/dev/null | head -20
cd <guest-path> && sed -n 370,420p src/datarobot_genai/drmcp/core/dr_mcp_server.py; grep -n "transport" src/datarobot_genai/drmcp/core/dr_mcp_server.py | head -20; sed -n 1,40p .taskfiles/drmcp.yml | grep -n "cmds\|uv run"
cd <guest-path> && grep -rn "MCP_SERVER_PORT\|getenv\|environ" src/datarobot_genai/drmcp/core/*.py | head -30; grep -rn "guest" src/datarobot_genai/drmcp/core/*.py | head -10
cd <guest-path> && grep -rn "TELEMETRY\|DISABLE_" src/datarobot_genai/drmcp/core/telemetry.py | head -5; grep -n "port" src/datarobot_genai/drmcp/core/dr_mcp_server.py | head -10
mkdir -p <guest-path> && cd /tmp && (FASTMCP_PORT=8765 nohup setsid <guest-path> <guest-path> > <guest-path> 2>&1 &) ; sleep 25; tail -c 3000 <guest-path>; echo; curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8765/mcp
curl -s -m 10 -i -X POST http://127.0.0.1:8080/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' | head -c 1200; echo; echo ---; grep -rn "Authorization\|guest" <guest-path> | head -8
cd <guest-path> && H='-H Content-Type:application/json -H Accept:application/json,text/event-stream'; SID=$(curl -s -m 10 -D - -o /dev/null -X POST http://127.0.0.1:8080/mcp $H -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' | tr -d '\r' | awk -F': ' 'tolower($1)=="mcp-session-id"{print $2}'); echo "sid=$SID"; curl -s -m 10 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","method":"notifications/initialized"}' >/dev/null; curl -s -m 10 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | head -c 1500
cd <guest-path> && grep -rn "load_native_mcp_tools" src/datarobot_genai/drmcp/core/dr_mcp_server.py | head; grep -rn "credentials not configured" -B6 src/datarobot_genai/drmcp/core/dr_mcp_server.py | head -30
cd <guest-path> && sed -n 176,200p src/datarobot_genai/drmcp/core/dr_mcp_server.py; ls src/datarobot_genai/drtools | head -40
cd <guest-path> && grep -rn "def is_tool_enabled" -A25 src/datarobot_genai/drmcp/ | head -45; grep -rn "TOOL_CONFIGS = " -A12 src/datarobot_genai/drmcp/ | head -20
cd <guest-path> && grep -n "config_field_name\|enable_\|\"calculator\"\|CALC" src/datarobot_genai/drmcp/core/tool_config.py | head -40
cd <guest-path> && grep -rn "enable_dr_docs_tools\|enable_code_execution_tools\|enable_use_case_tools" src/datarobot_genai/drmcp/core/config.py | head; grep -rn "enable_dr_docs_tools" -A3 src/datarobot_genai/drmcp/core/config.py | head -12; grep -rln "ENABLE_DR_DOCS\|enable_dr_docs" docs e2e-tests 2>/dev/null | head
cd <guest-path> && sed -n 60,75p src/datarobot_genai/drmcp/core/config.py | head -20; grep -n "env_prefix\|class MCPServerConfig\|class .*Config" src/datarobot_genai/drmcp/core/config.py | head; ls src/datarobot_genai/drtools/dr_docs; grep -rn "datarobot\|api_token\|requests\|httpx" src/datarobot_genai/drtools/dr_docs/*.py | head -8
pkill -f "drmcp/server.py" ; sleep 2; cd /tmp && (ENABLE_DR_DOCS_TOOLS=true nohup setsid <guest-path> <guest-path> > <guest-path> 2>&1 &); sleep 20; grep -i "registered\|error\|dr_docs" <guest-path> | head; H='-H Content-Type:application/json -H Accept:application/json,text/event-stream'; SID=$(curl -s -m 10 -D - -o /dev/null -X POST http://127.0.0.1:8080/mcp $H -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' | tr -d '\r' | awk -F': ' 'tolower($1)=="mcp-session-id"{print $2}'); curl -s -m 10 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","method":"notifications/initialized"}' >/dev/null; curl -s -m 15 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | head -c 800
ps -eo pid,args | grep "[v]env/genai/bin/python <guest-path>" | awk '{print $1}' | xargs -r kill; sleep 3; ps -eo pid,args | grep "[v]env/genai/bin/python <guest-path>" | wc -l; curl -s -m 3 -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8080/mcp
cd /tmp && (ENABLE_DR_DOCS_TOOLS=true nohup setsid <guest-path> <guest-path> > <guest-path> 2>&1 &); sleep 20; grep -i "registered\|error" <guest-path> | head -5; H='-H Content-Type:application/json -H Accept:application/json,text/event-stream'; SID=$(curl -s -m 10 -D - -o /dev/null -X POST http://127.0.0.1:8080/mcp $H -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' | tr -d '\r' | awk -F': ' 'tolower($1)=="mcp-session-id"{print $2}'); curl -s -m 10 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","method":"notifications/initialized"}' >/dev/null; curl -s -m 15 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | head -c 800
H='-H Content-Type:application/json -H Accept:application/json,text/event-stream'; SID=$(curl -s -m 10 -D - -o /dev/null -X POST http://127.0.0.1:8080/mcp $H -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' | tr -d '\r' | awk -F': ' 'tolower($1)=="mcp-session-id"{print $2}'); curl -s -m 10 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","method":"notifications/initialized"}' >/dev/null; curl -s -m 60 -X POST http://127.0.0.1:8080/mcp $H -H "mcp-session-id: $SID" -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_datarobot_agentic_docs","arguments":{"query":"MCP server setup","max_results":2}}}' | head -c 1500
cd <guest-path> && grep -rln "cron\|--once\|--now\|schedule_loop\|webhook" src/datarobot_genai --include=*.py | head; ls -d build *.egg-info src/*.egg-info 2>/dev/null; git status 2>/dev/null | head -2; cat .coldpass/.gitkeep 2>/dev/null; ls -la .coldpass
cd <guest-path> && cat > probe.json <<'EOF'
{"kind":"mcp_http","argv":["<guest-path>","<guest-path>"],"cwd":"/tmp","url":"http://127.0.0.1:8080/mcp","env":{"ENABLE_DR_DOCS_TOOLS":"true"},"tool":"search_datarobot_agentic_docs","arguments":{"query":"MCP server setup","max_results":2},"expected_text":"MCP: DataRobot docs"}
EOF
cat > claims.json <<'EOF'
[{"kind":"claim","claim":"The DataRobot-compatible MCP server runs and its drtools docs search tool returns real results","source":"Library of agentic tools and DataRobot-compatible MCP server","input":"query MCP server setup","expected":"search results including MCP: DataRobot docs","probe_kind":"mcp_http","argv":["<guest-path>","<guest-path>"],"url":"http://127.0.0.1:8080/mcp","env":{"ENABLE_DR_DOCS_TOOLS":"true"},"tool":"search_datarobot_agentic_docs","arguments":{"query":"MCP server setup","max_results":2},"expected_text":"MCP: DataRobot docs","cwd":"/tmp"}]
EOF
cat > cycles.json <<'EOF'
{"detected":false,"checks":[],"reason":"Inspected README.md and src/datarobot_genai (grep for cron, --once, --now, schedule loops, webhooks): no product scheduler, cron, loop, or webhook trigger exists; only CI schedules and the Taskfile dev entrypoint were found."}
EOF
python3 -m json.tool probe.json >/dev/null && python3 -m json.tool claims.json >/dev/null && python3 -m json.tool cycles.json >/dev/null && echo ok
cd <guest-path> && cat > examples.json <<'EOF'
[{"kind":"example","claim":"Standalone quickstart walks through LLM Gateway, drtools and running an agent","source":"README.md#Standalone end-to-end examples","testable":false,"reason":"The quickstart is e2e-tests/examples/quickstart.ipynb and requires a DataRobot account (DATAROBOT_API_TOKEN, DATAROBOT_ENDPOINT) for LLM Gateway and deployments; no credentials are available in this guest. Ran the offline drtools MCP docs-search example instead via probe.json."}]
EOF
python3 -m json.tool examples.json >/dev/null && echo ok
ps -eo pid,args | grep "[v]env/genai/bin/python <guest-path>" | awk '{print $1}' | xargs -r kill; sleep 3; ls <guest-path> 2>&1; cd /tmp && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo rc=$?; tail -c 3000 <guest-path>
cd <guest-path> && head -c 1500 validate.log; echo; echo ...; grep -o '"valid": *[a-z]*' validate.log; grep -o '"verdict": "[a-z]*"' validate.log | sort | uniq -c; grep -o '"error[^"]*": "[^"]\{0,300\}' validate.log | head -5
cd <guest-path> && rm -rf build src/datarobot_genai.egg-info && cat > .coldpass/report.json <<'EOF'
{"outcome":"working","fault_owner":null,"operation":"Start the datarobot-genai DataRobot MCP server (drmcp) from the README-installed package and call a real drtools tool over streamable HTTP: search_datarobot_agentic_docs returned live docs results including 'MCP: DataRobot docs'.","operation_scope":"Offline scope only: Python 3.12 venv (README requires 3.11-3.13), pip install of the local pinned source with the [drmcp] extra, server started via the repo's documented dev entrypoint src/datarobot_genai/drmcp/server.py with ENABLE_DR_DOCS_TOOLS=true. DataRobot-account features (LLM gateway, deployments, dynamic tool registration, quickstart notebook) were NOT exercised because no DATAROBOT_API_TOKEN is available; those are needs_credentials and untested.","steps":["python3 -m venv <guest-path> && pip install --upgrade pip","pip install \"<guest-path>\" (README Installation extra drmcp, from pinned source)","Read Taskfile .taskfiles/drmcp.yml drmcp-dev: uv run src/datarobot_genai/drmcp/server.py (run with venv python instead of uv)","ENABLE_DR_DOCS_TOOLS=true python src/datarobot_genai/drmcp/server.py (server listens on 127.0.0.1:8080/mcp)","MCP initialize, notifications/initialized, tools/list -> search_datarobot_agentic_docs, datarobot_docs_fetch_page","tools/call search_datarobot_agentic_docs {query:'MCP server setup',max_results:2} -> status success, title 'MCP: DataRobot docs'","python3 -I <guest-path> --validate --replay -> valid true, replay PASS"],"deviations":["README gives no server launch command; used the Taskfile drmcp-dev entrypoint with the venv python instead of uv run.","Port is 8080 (FASTMCP_PORT env was ignored); HTTP transport is the default for server.py.","Without DataRobot credentials the server registers 0 tools; enabling ENABLE_DR_DOCS_TOOLS=true was needed to get a callable tool. The docs search tool calls the public docs site over the network.","Installed from the local workspace source rather than PyPI so the pinned commit is tested; removed build/ and egg-info outputs afterwards.","Quickstart notebook example not runnable (needs DataRobot account); recorded as testable:false.","Cycle check: no product scheduler/cron/webhook found, detected=false.","One harmless 'kill: Operation not permitted' message appeared during cleanup of an unrelated PID; no effect on the run."],"stuck_step":null,"main_blocker":null,"plain_failure":null,"suggested_fix":"For full coverage, provide a DATAROBOT_API_TOKEN and DATAROBOT_ENDPOINT in the guest to exercise DataRobot-backed MCP tools, dynamic tool registration and the quickstart notebook. Consider documenting the drmcp server launch command and the ENABLE_* tool flags in the README."}
EOF
python3 -m json.tool .coldpass/report.json >/dev/null && echo report_ok; ls .coldpass
cd /tmp && <env-var>=<guest-path> timeout 900 python3 -I <guest-path> --validate --replay > <guest-path> 2>&1; echo rc=$?; grep -o '"valid": *[a-z]*' <guest-path>; grep -o '"status": "[A-Z]*"' <guest-path> | head -3run JSON · checker evidence · agent report + check · transcript excerpt · error excerpt unavailable