RelativityOne · Capability

RelativityOne Legal Hold Management

Unified legal hold management capability for RelativityOne. Combines legal hold project management, custodian tracking, data preservation workflows, HR entity integration, and communication management into a single workflow-oriented API. Used by legal operations teams, compliance officers, and eDiscovery professionals to manage litigation holds across Microsoft 365 and Google Workspace data sources.

Run with Naftiko Legal HoldeDiscoveryComplianceLitigationRelativityLegal Operations

What You Can Do

GET
List projects — List all legal hold projects in a workspace.
/v1/projects
POST
Create project — Create a new legal hold project.
/v1/projects
GET
Get project — Get a specific legal hold project by ID.
/v1/projects/{projectId}
GET
List custodians — List all custodians in a legal hold project.
/v1/projects/{projectId}/custodians
POST
Add custodian — Add a custodian to a legal hold project.
/v1/projects/{projectId}/custodians
GET
Get active custodians — Get all custodians currently on hold.
/v1/active-custodians
POST
Create entity — Create an HR entity for legal hold workflows.
/v1/entities
PUT
Update entity status — Update the employment status of an entity.
/v1/entities/{entityId}
POST
Preserve data — Preserve custodian data in M365 and Google Workspace.
/v1/projects/{projectId}/preserve
POST
Release custodians — Release custodians from a legal hold project.
/v1/projects/{projectId}/release
POST
Create communication — Create a legal hold communication.
/v1/projects/{projectId}/communications
POST
Create task — Create a new legal hold task.
/v1/tasks

MCP Tools

list-legal-hold-projects

List all legal hold projects in a workspace.

read-only
create-legal-hold-project

Create a new legal hold project for litigation matter management.

get-legal-hold-project

Get details of a specific legal hold project.

read-only
list-project-custodians

List all custodians assigned to a legal hold project.

read-only
add-custodian-to-project

Add an employee as a custodian to a legal hold project.

get-active-custodian-summary

Get a summary of all custodians currently on legal hold across all projects.

read-only
create-hr-entity

Create an HR entity to integrate employee records with legal hold workflows.

update-employee-status

Update the employment status of an entity in the legal hold system.

idempotent
preserve-custodian-data

Initiate data preservation for custodians across M365 and Google Workspace.

release-custodians-from-hold

Release custodians from a legal hold and remove their data preservation.

idempotent
create-hold-communication

Create a legal hold communication notice with escalation and reminder schedules.

create-legal-hold-task

Create a task for tracking legal hold actions and assignments.

APIs Used

relativity-legal-hold

Capability Spec

legal-hold-management.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "RelativityOne Legal Hold Management"
  description: >-
    Unified legal hold management capability for RelativityOne. Combines legal hold
    project management, custodian tracking, data preservation workflows, HR entity
    integration, and communication management into a single workflow-oriented API.
    Used by legal operations teams, compliance officers, and eDiscovery professionals
    to manage litigation holds across Microsoft 365 and Google Workspace data sources.
  tags:
    - Legal Hold
    - eDiscovery
    - Compliance
    - Litigation
    - Relativity
    - Legal Operations
  created: "2026-05-02"
  modified: "2026-05-02"

binds:
  - namespace: env
    keys:
      RELATIVITY_BEARER_TOKEN: RELATIVITY_BEARER_TOKEN

capability:
  consumes:
    - import: relativity-legal-hold
      location: ./shared/legal-hold.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: legal-hold-management-api
      description: "Unified REST API for RelativityOne legal hold management workflows."
      resources:
        - path: /v1/projects
          name: projects
          description: "Legal hold project management."
          operations:
            - method: GET
              name: list-projects
              description: "List all legal hold projects in a workspace."
              call: "relativity-legal-hold.list-legal-hold-projects"
              with:
                workspaceId: "rest.workspaceId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: create-project
              description: "Create a new legal hold project."
              call: "relativity-legal-hold.create-legal-hold-project"
              with:
                workspaceId: "rest.workspaceId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/projects/{projectId}
          name: project
          description: "Individual legal hold project operations."
          operations:
            - method: GET
              name: get-project
              description: "Get a specific legal hold project by ID."
              call: "relativity-legal-hold.get-legal-hold-project"
              with:
                workspaceId: "rest.workspaceId"
                projectId: "rest.projectId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/projects/{projectId}/custodians
          name: custodians
          description: "Custodian management for legal hold projects."
          operations:
            - method: GET
              name: list-custodians
              description: "List all custodians in a legal hold project."
              call: "relativity-legal-hold.list-project-custodians"
              with:
                workspaceId: "rest.workspaceId"
                projectId: "rest.projectId"
              outputParameters:
                - type: object
                  mapping: "$."
            - method: POST
              name: add-custodian
              description: "Add a custodian to a legal hold project."
              call: "relativity-legal-hold.add-custodian-to-project"
              with:
                workspaceId: "rest.workspaceId"
                projectId: "rest.projectId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/active-custodians
          name: active-custodians
          description: "Active custodian summary across all projects."
          operations:
            - method: GET
              name: get-active-custodians
              description: "Get all custodians currently on hold."
              call: "relativity-legal-hold.get-active-custodian-summary"
              with:
                workspaceId: "rest.workspaceId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/entities
          name: entities
          description: "HR entity management for legal hold integration."
          operations:
            - method: POST
              name: create-entity
              description: "Create an HR entity for legal hold workflows."
              call: "relativity-legal-hold.create-entity"
              with:
                workspaceId: "rest.workspaceId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/entities/{entityId}
          name: entity
          description: "Individual entity operations."
          operations:
            - method: PUT
              name: update-entity-status
              description: "Update the employment status of an entity."
              call: "relativity-legal-hold.update-entity-status"
              with:
                workspaceId: "rest.workspaceId"
                entityId: "rest.entityId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/projects/{projectId}/preserve
          name: preservation
          description: "Data preservation workflows."
          operations:
            - method: POST
              name: preserve-data
              description: "Preserve custodian data in M365 and Google Workspace."
              call: "relativity-legal-hold.preserve-custodian-data"
              with:
                workspaceId: "rest.workspaceId"
                projectId: "rest.projectId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/projects/{projectId}/release
          name: release
          description: "Custodian release from legal hold."
          operations:
            - method: POST
              name: release-custodians
              description: "Release custodians from a legal hold project."
              call: "relativity-legal-hold.release-custodian-from-project"
              with:
                workspaceId: "rest.workspaceId"
                projectId: "rest.projectId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/projects/{projectId}/communications
          name: communications
          description: "Legal hold communications and notifications."
          operations:
            - method: POST
              name: create-communication
              description: "Create a legal hold communication."
              call: "relativity-legal-hold.create-legal-hold-communication"
              with:
                workspaceId: "rest.workspaceId"
                projectId: "rest.projectId"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: /v1/tasks
          name: tasks
          description: "Legal hold task management."
          operations:
            - method: POST
              name: create-task
              description: "Create a new legal hold task."
              call: "relativity-legal-hold.create-legal-hold-task"
              with:
                workspaceId: "rest.workspaceId"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      port: 9080
      namespace: legal-hold-management-mcp
      transport: http
      description: "MCP server for AI-assisted legal hold management in RelativityOne."
      tools:
        - name: list-legal-hold-projects
          description: "List all legal hold projects in a workspace."
          hints:
            readOnly: true
            openWorld: true
          call: "relativity-legal-hold.list-legal-hold-projects"
          with:
            workspaceId: "tools.workspaceId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-legal-hold-project
          description: "Create a new legal hold project for litigation matter management."
          hints:
            readOnly: false
          call: "relativity-legal-hold.create-legal-hold-project"
          with:
            workspaceId: "tools.workspaceId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-legal-hold-project
          description: "Get details of a specific legal hold project."
          hints:
            readOnly: true
          call: "relativity-legal-hold.get-legal-hold-project"
          with:
            workspaceId: "tools.workspaceId"
            projectId: "tools.projectId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: list-project-custodians
          description: "List all custodians assigned to a legal hold project."
          hints:
            readOnly: true
          call: "relativity-legal-hold.list-project-custodians"
          with:
            workspaceId: "tools.workspaceId"
            projectId: "tools.projectId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: add-custodian-to-project
          description: "Add an employee as a custodian to a legal hold project."
          hints:
            readOnly: false
          call: "relativity-legal-hold.add-custodian-to-project"
          with:
            workspaceId: "tools.workspaceId"
            projectId: "tools.projectId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: get-active-custodian-summary
          description: "Get a summary of all custodians currently on legal hold across all projects."
          hints:
            readOnly: true
            openWorld: true
          call: "relativity-legal-hold.get-active-custodian-summary"
          with:
            workspaceId: "tools.workspaceId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-hr-entity
          description: "Create an HR entity to integrate employee records with legal hold workflows."
          hints:
            readOnly: false
          call: "relativity-legal-hold.create-entity"
          with:
            workspaceId: "tools.workspaceId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: update-employee-status
          description: "Update the employment status of an entity in the legal hold system."
          hints:
            readOnly: false
            idempotent: true
          call: "relativity-legal-hold.update-entity-status"
          with:
            workspaceId: "tools.workspaceId"
            entityId: "tools.entityId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: preserve-custodian-data
          description: "Initiate data preservation for custodians across M365 and Google Workspace."
          hints:
            readOnly: false
            destructive: false
          call: "relativity-legal-hold.preserve-custodian-data"
          with:
            workspaceId: "tools.workspaceId"
            projectId: "tools.projectId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: release-custodians-from-hold
          description: "Release custodians from a legal hold and remove their data preservation."
          hints:
            readOnly: false
            destructive: true
            idempotent: true
          call: "relativity-legal-hold.release-custodian-from-project"
          with:
            workspaceId: "tools.workspaceId"
            projectId: "tools.projectId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-hold-communication
          description: "Create a legal hold communication notice with escalation and reminder schedules."
          hints:
            readOnly: false
          call: "relativity-legal-hold.create-legal-hold-communication"
          with:
            workspaceId: "tools.workspaceId"
            projectId: "tools.projectId"
          outputParameters:
            - type: object
              mapping: "$."
        - name: create-legal-hold-task
          description: "Create a task for tracking legal hold actions and assignments."
          hints:
            readOnly: false
          call: "relativity-legal-hold.create-legal-hold-task"
          with:
            workspaceId: "tools.workspaceId"
          outputParameters:
            - type: object
              mapping: "$."