Full-stack Agent runtime: LangGraph ReAct + Spring Boot microservices + MCP protocol tools + RAG + Eval
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport stdio · http counts 16 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
content_search
-
directory_tree
-
file_info
-
file_search
-
import_copilot_sessions
-
import_project_knowledge
-
memory_compact_execute
-
memory_compact_plan
-
memory_context
-
memory_delete
-
memory_get
-
memory_list
-
memory_pin
-
memory_search
-
memory_set
-
read_file_content
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 251b017 · analyzer v33 · 3w ago
danger signals1
- dynamic code execution pickle.loads() E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_compressor.py :160
restored = pickle.loads(pickle.dumps(state))
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 655
filesystem 86
- fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-sdk/agent_sdk/plugin.py :4
from pathlib import Path - fs (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-sdk/tests/test_plugin_manifest.py :3
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/agent/intent/eval_cli.py :6
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/api/workspace.py :4
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/config.py :1
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/context/workspace.py :8
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/deploy.py :13
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/events/model_provenance.py :14
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/feedback/store.py :8
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/logging_config.py :26
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/main.py :6
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/plugins/loader.py :9
from pathlib import Path
show 28 more
- fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/code.py :39
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/fixed_size.py :4
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/html.py :6
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/markdown.py :5
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/metadata.py :5
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/openapi.py :5
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/pdf.py :4
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/chunking/registry.py :3
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/compression/ast.py :41
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/eval/benchmark_rerankers.py :6
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/eval/customer_qa.py :4
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/eval/dataset.py :6
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/eval/ranking.py :8
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/index/indexer.py :16
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/index/redis_retriever.py :186
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/index/retriever.py :19
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/reranking/learned.py :21
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/registry/config_loader.py :5
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/registry/watcher.py :5
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/runtime/agent_output.py :12
r"test(?:ing)?|review(?:ing)?|open(?:ing)?|list(?:ing)?|" - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/runtime/approval.py :10
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/runtime/checkpoint.py :8
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/runtime/store.py :10
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/agent_mode.py :20
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/definitions.py :237
with open(resolved, 'r', encoding='utf-8', errors='replace') as f: - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/ops_tools.py :12
from pathlib import Path - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/ticket_backend.py :128
with open(path, "w") as f: - fs E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/workspace_resolver.py :28
from pathlib import Path
46 more not shown — this panel samples each group; the count above is the real total.
shell / exec 18
- shell E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/agent/agent_graph/nodes/tools.py :7
import subprocess - shell E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/agent_mode.py :341
import subprocess - shell E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/definitions.py :5
import subprocess - shell E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/ops_tools.py :10
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_approval_api_recovery.py :13
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_approval_recovery.py :11
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_model_retry_crash_recovery.py :11
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_agent_mode.py :4
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_gaps.py :3
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_ops_tools.py :4
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_runtime_approval_recovery_script.py :2
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_runtime_model_retry_crash_recovery_script.py :2
import subprocess
show 6 more
- shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/eval/coding_e2e.py :12
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/experiments/controlled_4arm/prepare_tasks.py :35
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/experiments/controlled_4arm/run.py :50
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/experiments/local_runtime_20260826/run.py :12
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/run_experiment.py :53
import subprocess - shell (weak) E-Coli-BW-mcp-agent-platform-251b017/scripts/dev/dashboard/dashboard.py :50
import subprocess
network 31
- net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-sdk/agent_sdk/memory.py :3
import httpx - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/agent/intent/evaluation.py :9
import httpx - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/api/auth_proxy.py :41
- Uses a module-level httpx.AsyncClient with connection pooling. - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/auth/auth_client.py :8
import httpx - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/middleware/jwt_auth.py :15
import httpx - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/embedding/embedder.py :16
- embed_text() is async — it uses httpx.AsyncClient which runs on the asyncio - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/definitions.py :398
import httpx - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/mcp_client.py :10
import httpx - net E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/ticket_backend.py :260
import requests - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/customer_qa_eval.py :12
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_approval_api_recovery.py :18
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_model_retry_crash_recovery.py :9
import socket
show 19 more
- net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_scenario.py :29
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_auth_contract.py :21
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_auth_proxy.py :24
from httpx import ASGITransport, AsyncClient - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_auth_service_client.py :23
with patch("httpx.AsyncClient") as MockClient: - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_jwks_async.py :3
The original implementation used `urllib.request.urlopen` inside an async - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_workspace_api.py :6
from httpx import ASGITransport, AsyncClient - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/eval/coding_e2e.py :21
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/eval/runner.py :34
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/eval/scorers/llm_judge.py :166
import httpx # local import keeps the module importable without httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/eval/warm_cache.py :17
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/experiments/controlled_4arm/prepare_tasks.py :121
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/experiments/controlled_4arm/run.py :57
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/experiments/local_runtime_20260826/run.py :18
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/java_vs_python_experiment.py :56
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/run_experiment.py :58
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/suites/bfcl/__init__.py :61
import httpx - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/tests/test_llm_judge.py :3
These tests do NOT hit a live LLM; we monkeypatch httpx.post so the - net (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/tests/test_runner_security.py :80
monkeypatch.setattr("eval.runner.httpx.Client", Client) - net (weak) E-Coli-BW-mcp-agent-platform-251b017/scripts/dev/dashboard/dashboard.py :56
import httpx
secrets 6
- secrets E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/definitions.py :31
client_secret = os.environ.get('AUTH_CLIENT_SECRET', 'agent-secret') - secrets E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/tools/ticket_backend.py :432
api_token=kwargs.get("jira_token") or os.environ["AGENT_JIRA_TOKEN"], - secrets (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/eval/runner.py :68
DEFAULT_BASELINE_API_KEY = os.environ.get("EVAL_BASELINE_API_KEY", "ollama") - secrets (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/eval/scorers/llm_judge.py :145
os.environ.get("OPENAI_API_KEY", "ollama"), - secrets (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/java_vs_python_experiment.py :60
JWT_SECRET = os.environ.get("AGENT_JWT_SECRET", "default-dev-secret-DO-NOT-USE-IN-PRODUCTION") - secrets (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/eval-harness/suites/bfcl/__init__.py :149
key = os.environ.get("EVAL_BFCL_API_KEY") or os.environ.get(
database 9
- db E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/middleware/session_lane.py :21
import redis.asyncio as aioredis - db E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/rag/index/redis_retriever.py :22
import redis - db E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/runtime/approval.py :6
import sqlite3 - db E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/runtime/checkpoint.py :5
import sqlite3 - db E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/runtime/store.py :7
import sqlite3 - db E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/app/store/conversation.py :46
import redis.asyncio as redis - db (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_model_retry_crash_recovery.py :10
import sqlite3 - db (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/scripts/runtime_scenario.py :22
import sqlite3 - db (weak) E-Coli-BW-mcp-agent-platform-251b017/platform/agent-server/tests/test_model_retry_checkpoint.py :1
import sqlite3
tool registrations 29
- file_search E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/filesearch/filesearch-server.ts :108
- content_search E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/filesearch/filesearch-server.ts :157
- read_file_content E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/filesearch/filesearch-server.ts :285
- directory_tree E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/filesearch/filesearch-server.ts :329
- file_info E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/filesearch/filesearch-server.ts :403
- memory_set E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :127
- memory_get E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :176
- memory_search E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :227
- memory_delete E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :268
- memory_pin E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :291
- memory_list E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :319
- import_copilot_sessions E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :351
show 17 more
- import_project_knowledge E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :370
- memory_compact_plan E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :401
- memory_compact_execute E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :481
- memory_context E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/memory-server.ts :556
- memory_set E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/teaching/memory-server-minimal.ts :79
- memory_get E-Coli-BW-mcp-agent-platform-251b017/platform/mcp-cli/teaching/memory-server-minimal.ts :100
- memory_set E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :125
- memory_get E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :166
- memory_search E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :189
- memory_delete E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :230
- memory_pin E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :248
- memory_list E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :269
- import_copilot_sessions E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :301
- import_project_knowledge E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :318
- memory_compact_plan E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :347
- memory_compact_execute E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :427
- memory_context E-Coli-BW-mcp-agent-platform-251b017/tools/memory-ts/memory-server.ts :489
declared dependencies 23
- httpx@>=0.27.0
- pyyaml@>=6.0
- pytest@>=8.0.0
- pytest-asyncio@>=0.24.0
- org.springframework.ai:spring-ai-bom@*
- org.springframework.boot:spring-boot-starter-webflux@*
- org.springframework.boot:spring-boot-starter-security@*
- org.springframework.boot:spring-boot-starter-data-redis-reactive@*
- org.springframework.boot:spring-boot-starter-actuator@*
- org.springframework.ai:spring-ai-client-chat@*
- org.springframework.ai:spring-ai-model@*
- org.springframework.ai:spring-ai-openai@*
show 11 more
- org.springframework.ai:spring-ai-ollama@*
- org.yaml:snakeyaml@*
- com.fasterxml.jackson.core:jackson-databind@*
- com.networknt:json-schema-validator@1.5.8
- io.jsonwebtoken:jjwt-api@0.12.6
- io.jsonwebtoken:jjwt-impl@0.12.6
- io.jsonwebtoken:jjwt-jackson@0.12.6
- org.springframework.boot:spring-boot-configuration-processor@*
- org.springframework.boot:spring-boot-starter-test@*
- io.projectreactor:reactor-test@*
- org.springframework.security:spring-security-test@*