{
  "name": "evidence_locked_dfir_tool_contract",
  "status": "mcp_ready_contract_not_live_sift_server",
  "purpose": "Define the read-only typed tools that a future Protocol SIFT or MCP wrapper should expose to the agent.",
  "case_data_policy": "read_only",
  "destructive_tools_exposed": false,
  "tools": [
    {
      "name": "read_email_headers",
      "input": {
        "case_id": "string"
      },
      "output": {
        "evidence_id": "string",
        "authentication_results": "string",
        "source_ip": "string",
        "attachment_name": "string"
      },
      "writes": []
    },
    {
      "name": "read_attachment_hashes",
      "input": {
        "case_id": "string"
      },
      "output": {
        "evidence_id": "string",
        "sha256": "string",
        "reputation": "string"
      },
      "writes": []
    },
    {
      "name": "read_browser_timeline",
      "input": {
        "case_id": "string"
      },
      "output": {
        "events": "array"
      },
      "writes": []
    },
    {
      "name": "read_endpoint_processes",
      "input": {
        "case_id": "string"
      },
      "output": {
        "processes": "array"
      },
      "writes": []
    },
    {
      "name": "score_claims_against_ground_truth",
      "input": {
        "case_id": "string",
        "claims": "array"
      },
      "output": {
        "exact_status_accuracy": "number",
        "false_confident_supported_claims": "number",
        "unsupported_claims_blocked": "number"
      },
      "writes": [
        "findevil/reports/accuracy-report.json",
        "findevil/reports/accuracy-report.md"
      ]
    }
  ],
  "guardrails": [
    "A claim cannot be supported unless at least one evidence_id is attached.",
    "Endpoint isolation is not a tool; it is represented only as a human approval decision.",
    "Original case data is never modified by the local verifier.",
    "Live SANS SIFT execution is not claimed until a real SIFT run is separately verified."
  ]
}
