{
  "tool_id": "art-409-dpa-art28-completeness-checker",
  "tool_version": "1.0.0",
  "display_name": "DPA Article 28 Completeness Checker",
  "mcp_name": "check_dpa_gdpr_art28",
  "mandate_type": "compliance_mandate",
  "wave": 69,
  "gpu": false,
  "url": "https://ainumbers.co/chaingraph/art-409-dpa-art28-completeness-checker.html",
  "description": "Checks a data processing agreement against GDPR Article 28(3)'s 12 mandatory processor clauses -- subject-matter, duration, nature/purpose, data categories, controller-instructions-only, confidentiality, Article 32 security, sub-processor authorization, data-subject-rights assistance, breach/DPIA assistance, deletion/return, and audit rights. Deterministic checklist over a caller-declared present/missing/weak status per clause, returning a completeness verdict and coverage percentage. This node reads the caller's own compliance reading of an agreement -- it never vendors, assembles, or redistributes any third-party template body. Not legal advice and not a determination that any agreement is compliant. Zero network, zero PII.",
  "input_schema_ref": "chaingraph/art-409-dpa-art28-completeness-checker.html#manifest",
  "consumes": [],
  "feeds": [],
  "status": "live",
  "conformance_fixtures": true,
  "compute_capability": "server",
  "compute_images": [
    {
      "system": "sha256-source",
      "image_id": "sha256:640dfd01155c133e833f96c9b7304ae863c00abeb361a3d1d707e96fc85e9b40",
      "valid_from": "2026-07-19"
    },
    {
      "system": "risc0",
      "image_id": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
      "valid_from": "2026-07-19"
    }
  ],
  "export_capability": [
    "json"
  ],
  "compute_proof_ready": "ready",
  "compute_proof": {
    "type": "ZkVmReceipt",
    "system": "risc0",
    "receiptFormat": "groth16-bn254",
    "imageId": "sha256:a1a0bc89b5b1febaeda3519f6dbade0fa5ac16beeb143c4e1b01689573567bc6",
    "seal": "B6FIqWCsA/IkUh/EzLA0hptHImmCr+jzfUKxhLmldboHTx4WgCg5LaHc+xmHgNPeBGPguz6takBDqNS4VwOCLRGX0RTteopKzKlzRmiPPm8suaOS4mzY2mqLRR7diquFIPhkW33VVH0RPoNqhlxPK8bZpJfUoevt5ih6F/zMA5ISVewMbl+TCLtu1/ww7kt44PnZQKAWi9M4BSjHHyd8hCBYp+STvurQD3Q3Wu/kmcghlffOBJebRVrlWbUVG6hGEYw0qCm+iVgsxxRReH7kCKjJI4ldjYQmkE9Wnmks9aEHfrFxQp9hAUW5lCA/gl7hncbMtbV8A9bPLiGJi29GsA==",
    "journal": {
      "chaingraph_version": "0.4.0",
      "kernel_digest": "sha256:640dfd01155c133e833f96c9b7304ae863c00abeb361a3d1d707e96fc85e9b40",
      "output": {
        "art28_complete": true,
        "clauses": [
          {
            "id": "subject_matter",
            "label": "Subject-matter of the processing",
            "status": "present"
          },
          {
            "id": "duration",
            "label": "Duration of the processing",
            "status": "present"
          },
          {
            "id": "nature_purpose",
            "label": "Nature and purpose of the processing",
            "status": "present"
          },
          {
            "id": "data_categories",
            "label": "Type of personal data and categories of data subjects",
            "status": "present"
          },
          {
            "id": "controller_instructions_only",
            "label": "Processing only on documented controller instructions",
            "status": "present"
          },
          {
            "id": "confidentiality",
            "label": "Confidentiality commitment for authorised persons",
            "status": "present"
          },
          {
            "id": "article32_security",
            "label": "Article 32 security measures",
            "status": "present"
          },
          {
            "id": "subprocessor_authorization",
            "label": "Sub-processor authorization (general or specific) + flow-down obligations",
            "status": "present"
          },
          {
            "id": "data_subject_rights_assistance",
            "label": "Assistance with data-subject-rights requests",
            "status": "present"
          },
          {
            "id": "breach_dpia_assistance",
            "label": "Assistance with Article 32-36 breach notification and DPIA",
            "status": "present"
          },
          {
            "id": "deletion_or_return",
            "label": "Deletion or return of personal data at end of processing",
            "status": "present"
          },
          {
            "id": "audit_rights",
            "label": "Information availability and audit/inspection rights",
            "status": "present"
          }
        ],
        "coverage_pct": 100,
        "disclosure": "This is a compliance reading over the text the caller supplied, not legal advice and not a determination that any agreement is compliant.",
        "missing_clause_ids": [],
        "missing_count": 0,
        "not_legal_advice": true,
        "present_count": 12,
        "total_elements": 12,
        "verdict": "ART28_COMPLETE",
        "weak_clause_ids": [],
        "weak_count": 0
      }
    }
  }
}
