{"name":"SENTINEL","serverInfo":{"name":"sentinel-web","title":"SENTINEL","version":"1.0.0","description":"Autonomous supply-chain CVE strike team — web console, agent bridge and OMNI-LAB.","websiteUrl":"https://github.com/geohot0199/sentinental"},"mcpEndpoint":"https://sentinental.vercel.app/api/mcp","transport":"Streamable HTTP (stateless, JSON-RPC 2.0 over POST)","protocolVersions":["2026-07-28","2025-11-25","2025-06-18","2025-03-26"],"auth":"none","tools":[{"name":"assess_blast_radius","description":"Classify an upgrade from installed to target version as patch/minor/major and say how risky it is to apply automatically."},{"name":"fetch_repository_manifest","description":"Read package.json (and the lockfile if present) straight out of a public GitHub repository, so a scan needs no local checkout. Accepts 'owner/repo' or a github.com URL."},{"name":"get_project_status","description":"Report what this deployment can actually do: whether a model key, a Daytona sandbox key, a GitHub token and a TrueForge harness are configured, and whether remote writes are permitted. Returns booleans and names only — never a key."},{"name":"lookup_advisories","description":"Query the GitHub Advisory Database for one package@version and keep only the advisories whose affected range actually contains that version. Falls back to OSV. This is the triage step that separates a real exposure from a page of noise."},{"name":"propose_patch","description":"Generate the patched package.json for a plan, preserving the project's existing range operators (^, ~, exact). Returns the new file content and a unified diff. Writes nothing anywhere."},{"name":"scan_dependencies","description":"Parse a package.json plus an optional lockfile into a flat dependency list with the versions that are actually installed. Pure computation; no network."},{"name":"summarise_triage","description":"Collapse advisory matches into one safe target version per package — the highest fix version, so no advisory is left open — ordered worst first."},{"name":"fetch_docs","description":"Fetch one documentation passage by id, as returned by search_docs."},{"name":"list_tool_catalog","description":"Return every tool this site exposes to agents, with its JSON Schema and safety annotations, plus how to reach the same tools over remote MCP."},{"name":"search_docs","description":"Search SENTINEL's documentation corpus (landing sections, docs pages, the tool contract) and return matching passages with a pointer you can hand to fetch_docs."},{"name":"biosynth_highlight_binding_pockets","description":"Scan 3D atomic structure to discover druggable active catalytic cavities and binding pockets."},{"name":"biosynth_load_pdb_structure","description":"Load and parse 3D Protein Data Bank (PDB) atomic coordinates into structured 3D atom graph and sequence."},{"name":"biosynth_mutate_residue","description":"Simulate in-silico point mutation (CRISPR / protein engineering) and predict stability change (ΔΔG) and steric clashes."},{"name":"breachlab_analyze_cve_ast","description":"Deep static AST analysis for code and dependency manifests. Identifies zero-days, RCE sinks, credential theft, prototype pollution, and computes blast radius."},{"name":"breachlab_detonate_sandbox","description":"Detonate suspicious code in an isolated simulated client-side sandbox container. Intercepts outbound network, eval, and subprocess commands."},{"name":"breachlab_generate_hotpatch","description":"Synthesize automated cryptographic hot-patch diffs that replace dangerous sinks with safe, parameterized equivalents."},{"name":"breachlab_trace_taint_flow","description":"Trace tainted data propagation from untrusted source inputs (e.g. req.query) to dangerous execution sinks."},{"name":"chrono_generate_forensic_dossier","description":"Assemble unified cryptographic forensic report with synchronized timeline sequence and SHA-256 evidence hash."},{"name":"chrono_load_media_streams","description":"Retrieve multi-angle spatial and acoustic sensor streams (CCTV, bodycam, drone) for forensic reconstruction."},{"name":"chrono_sync_flash_audio_markers","description":"Cross-correlate optical flash peaks and acoustic transients across video streams to compute millisecond time offsets."},{"name":"chrono_triangulate_acoustic_source","description":"Triangulate 3D physical coordinates of an acoustic blast or gunshot origin using Time-Difference-Of-Arrival (TDOA)."},{"name":"metaloop_inject_synthetic_tool","description":"Inject synthetic mock tool response at a specific execution step to unblock trapped loops and fork execution."},{"name":"metaloop_inspect_trace_tree","description":"Inspect agent execution trace tree to detect infinite tool loops, token budget spikes, and cognitive drift."},{"name":"metaloop_mitigate_drift","description":"Synthesize corrective prompt steering guidelines to compensate for cognitive drift and token explosion."},{"name":"zkescrow_initiate_contract","description":"Create zero-backend cryptographic P2P escrow contract with verifiable milestone payout specifications."},{"name":"zkescrow_sign_escrow_release","description":"Generate an HMAC-SHA-256 arbiter release proof authorizing fund disbursement for a verified milestone."},{"name":"zkescrow_verify_deliverable_hash","description":"Compute client-side SHA-256 deliverable fingerprint and verify compliance against cryptographic milestone spec."}],"instructions":"SENTINEL is a supply-chain CVE triage tool whose last step is deliberately human.\n\nReading rules:\n- Prefer get_project_status once, then work the stages in order: scan_dependencies -> lookup_advisories -> assess_blast_radius -> summarise_triage -> propose_patch.\n- lookup_advisories is per package@version. Send the *installed* version, not the declared range, or the version-range filter will discard real hits.\n- Every read tool is idempotent and safe to retry.\n\nHard rules:\n- open_pull_request and merge_pull_request are destructive. They refuse unless SENTINEL_ALLOW_REMOTE_WRITES=true is set server-side AND the exact confirmation string is passed in 'confirm'. Never invent a confirmation: ask the human first and relay their words.\n- Patch verification is only claimed when a Daytona sandbox actually ran the tests. If the result says UNVERIFIED, report it as UNVERIFIED.\n- Do not print, store or echo API keys. This server never returns one, and neither should you.\n\nIf a call fails with a typed error, read its 'hint' field — it names the exact environment variable or argument to fix.","webmcp":{"surface":"document.modelContext","alias":"navigator.modelContext","note":"The same tools are registered in-page for browsers with WebMCP (Chrome 149+ origin trial; ChatGPT desktop built-in browser)."},"howToConnect":{"chatgpt":"Settings → Apps & Connectors → Advanced → Developer mode → Create → paste this URL (Streamable HTTP, No authentication). Or open the site in the desktop app's built-in browser and ask ChatGPT to use the site tools.","claude":"claude mcp add --transport http sentinel <this URL>","cursor":"{\"mcpServers\":{\"sentinel\":{\"url\":\"https://sentinental.vercel.app/api/mcp\"}}}","codex":"codex mcp add sentinel --url https://sentinental.vercel.app/api/mcp","verify":"curl -s https://sentinental.vercel.app/api/mcp -H 'content-type: application/json' -H 'mcp-protocol-version: 2026-07-28' -H 'mcp-method: server/discover' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"server/discover\",\"params\":{\"_meta\":{\"io.modelcontextprotocol/protocolVersion\":\"2026-07-28\",\"io.modelcontextprotocol/clientInfo\":{\"name\":\"curl\",\"version\":\"0\"},\"io.modelcontextprotocol/clientCapabilities\":{}}}}'"}}