veeva · Capability

Veeva Vault Document Management

Customer workflow capability for life sciences document lifecycle management in Veeva Vault. Combines document CRUD, lifecycle actions, VQL queries, and object management for regulatory affairs teams, QMS coordinators, and clinical operations staff managing controlled documents through approval and archival workflows.

Run with Naftiko VeevaVaultLife SciencesPharmaDocument ManagementRegulatoryQMSClinical

What You Can Do

GET
List documents — List all Vault documents accessible to the authenticated user
/v1/documents
POST
Create document — Create a new Vault document record
/v1/documents
GET
Get document — Retrieve metadata for a specific Vault document
/v1/documents/{documentId}
PUT
Update document — Update a Vault document's field values
/v1/documents/{documentId}
DELETE
Delete document — Delete a Vault document and all its versions
/v1/documents/{documentId}
POST
Perform document action — Execute a lifecycle action (Approve, Submit for Review, Archive)
/v1/documents/{documentId}/actions/{actionName}
GET
List object records — List records for a Vault business object
/v1/objects/{objectName}
POST
Create object record — Create a new Vault object record
/v1/objects/{objectName}
GET
Get object record — Retrieve a single Vault object record
/v1/objects/{objectName}/{recordId}
PUT
Update object record — Update fields on a Vault object record
/v1/objects/{objectName}/{recordId}
DELETE
Delete object record — Delete a Vault object record
/v1/objects/{objectName}/{recordId}
GET
Execute vql query — Run a VQL query to retrieve documents, objects, or user data
/v1/query
GET
List users — List all active users in the Vault
/v1/users

MCP Tools

list-documents

List all Vault documents accessible to the authenticated user

read-only
create-document

Create a new controlled document in Vault with lifecycle and type

get-document

Retrieve metadata and properties for a specific Vault document by ID

read-only
update-document

Update field values on an existing Vault document

idempotent
delete-document

Permanently delete a Vault document and all its versions

idempotent
perform-document-action

Execute a lifecycle action on a document (Approve, Submit for Review, Archive)

list-object-records

List records for a Vault business object (studies, products, sites, etc.)

read-only
create-object-record

Create a new Vault object record for studies, products, sites, or custom objects

get-object-record

Retrieve a single Vault object record by object type and record ID

read-only
update-object-record

Update field values on a Vault object record

idempotent
delete-object-record

Delete a Vault object record

idempotent
execute-vql-query

Run a VQL query to search documents, objects, users, or workflows in Vault

read-only
list-users

List all active users in the Vault

read-only

Capability Spec

vault-document-management.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Veeva Vault Document Management
  description: Customer workflow capability for life sciences document lifecycle management in Veeva Vault. Combines document
    CRUD, lifecycle actions, VQL queries, and object management for regulatory affairs teams, QMS coordinators, and clinical
    operations staff managing controlled documents through approval and archival workflows.
  tags:
  - Veeva
  - Vault
  - Life Sciences
  - Pharma
  - Document Management
  - Regulatory
  - QMS
  - Clinical
  created: '2026-05-03'
  modified: '2026-05-06'
binds:
- namespace: env
  keys:
    VEEVA_VAULT_SESSION_ID: VEEVA_VAULT_SESSION_ID
    VEEVA_VAULT_DOMAIN: VEEVA_VAULT_DOMAIN
capability:
  consumes:
  - type: http
    namespace: vault-api
    baseUri: https://{{env.VEEVA_VAULT_DOMAIN}}/api/v25.3
    description: Veeva Vault REST API v25.3
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.VEEVA_VAULT_SESSION_ID}}'
      placement: header
    resources:
    - name: authentication
      path: /auth
      description: Session management — authenticate and obtain Vault session IDs
      operations:
      - name: authenticate-user
        method: POST
        description: Authenticate with username and password to obtain a Vault session ID
        inputParameters:
        - name: username
          in: body
          type: string
          required: true
          description: Vault username (email address)
        - name: password
          in: body
          type: string
          required: true
          description: Vault password
        - name: vaultDNS
          in: body
          type: string
          required: false
          description: Target Vault DNS for multi-vault environments
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: documents
      path: /objects/documents
      description: Document lifecycle management — list, create, retrieve, update, and delete documents
      operations:
      - name: list-documents
        method: GET
        description: List all documents accessible to the authenticated user
        inputParameters:
        - name: limit
          in: query
          type: integer
          required: false
          description: Maximum number of results (default 200, max 1000)
        - name: offset
          in: query
          type: integer
          required: false
          description: Pagination offset
        - name: sort
          in: query
          type: string
          required: false
          description: Sort field and direction (e.g. name__v asc)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: create-document
        method: POST
        description: Create a new document record in Vault with optional source file upload
        inputParameters:
        - name: name__v
          in: body
          type: string
          required: true
          description: Document name
        - name: type__v
          in: body
          type: string
          required: true
          description: Document type API name
        - name: lifecycle__v
          in: body
          type: string
          required: true
          description: Document lifecycle API name
        - name: status__v
          in: body
          type: string
          required: false
          description: Initial lifecycle state
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: document
      path: /objects/documents/{documentId}
      description: Single document operations — get, update, delete
      operations:
      - name: get-document
        method: GET
        description: Retrieve metadata and properties for a specific document
        inputParameters:
        - name: documentId
          in: path
          type: integer
          required: true
          description: Vault document ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: update-document
        method: PUT
        description: Update document field values
        inputParameters:
        - name: documentId
          in: path
          type: integer
          required: true
          description: Vault document ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-document
        method: DELETE
        description: Delete a document and all versions
        inputParameters:
        - name: documentId
          in: path
          type: integer
          required: true
          description: Vault document ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: document-actions
      path: /objects/documents/{documentId}/actions/{actionName}
      description: Document lifecycle actions — perform state transitions
      operations:
      - name: perform-document-action
        method: POST
        description: Execute a user action on a document to change its lifecycle state
        inputParameters:
        - name: documentId
          in: path
          type: integer
          required: true
          description: Vault document ID
        - name: actionName
          in: path
          type: string
          required: true
          description: Lifecycle action API name (e.g. Approve, Submit for Review)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: objects
      path: /vobjects/{objectName}
      description: Vault object records — list and create configurable business entities
      operations:
      - name: list-object-records
        method: GET
        description: Return records for a Vault object (studies, products, sites, etc.)
        inputParameters:
        - name: objectName
          in: path
          type: string
          required: true
          description: Vault object API name (e.g. study__v)
        - name: limit
          in: query
          type: integer
          required: false
          description: Maximum records to return
        - name: offset
          in: query
          type: integer
          required: false
          description: Pagination offset
        - name: fields
          in: query
          type: string
          required: false
          description: Comma-separated list of fields to return
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: create-object-record
        method: POST
        description: Create a new record for the specified Vault object
        inputParameters:
        - name: objectName
          in: path
          type: string
          required: true
          description: Vault object API name
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: object-record
      path: /vobjects/{objectName}/{recordId}
      description: Single object record operations — get, update, delete
      operations:
      - name: get-object-record
        method: GET
        description: Return a single record for a Vault object
        inputParameters:
        - name: objectName
          in: path
          type: string
          required: true
          description: Vault object API name
        - name: recordId
          in: path
          type: string
          required: true
          description: Object record ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: update-object-record
        method: PUT
        description: Update fields on an existing Vault object record
        inputParameters:
        - name: objectName
          in: path
          type: string
          required: true
          description: Vault object API name
        - name: recordId
          in: path
          type: string
          required: true
          description: Object record ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-object-record
        method: DELETE
        description: Delete a specific Vault object record
        inputParameters:
        - name: objectName
          in: path
          type: string
          required: true
          description: Vault object API name
        - name: recordId
          in: path
          type: string
          required: true
          description: Object record ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: query
      path: /query
      description: VQL query execution — SQL-like queries across documents, objects, and users
      operations:
      - name: execute-vql-query
        method: GET
        description: Execute a Vault Query Language (VQL) query to retrieve Vault data
        inputParameters:
        - name: q
          in: query
          type: string
          required: true
          description: VQL query string (e.g. SELECT id, name__v FROM documents)
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users
      path: /objects/users
      description: User management — list Vault users
      operations:
      - name: list-users
        method: GET
        description: Return all active users in the Vault
        inputParameters:
        - name: limit
          in: query
          type: integer
          required: false
          description: Maximum users to return
        - name: offset
          in: query
          type: integer
          required: false
          description: Pagination offset
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: vault-document-management-api
    description: Unified REST API for Veeva Vault document lifecycle management workflows.
    resources:
    - path: /v1/documents
      name: documents
      description: List and create Vault documents
      operations:
      - method: GET
        name: list-documents
        description: List all Vault documents accessible to the authenticated user
        call: vault-api.list-documents
        with:
          limit: rest.limit
          offset: rest.offset
          sort: rest.sort
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: create-document
        description: Create a new Vault document record
        call: vault-api.create-document
        with:
          name__v: rest.name__v
          type__v: rest.type__v
          lifecycle__v: rest.lifecycle__v
          status__v: rest.status__v
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/documents/{documentId}
      name: document
      description: Get, update, or delete a specific Vault document
      operations:
      - method: GET
        name: get-document
        description: Retrieve metadata for a specific Vault document
        call: vault-api.get-document
        with:
          documentId: rest.documentId
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: update-document
        description: Update a Vault document's field values
        call: vault-api.update-document
        with:
          documentId: rest.documentId
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: delete-document
        description: Delete a Vault document and all its versions
        call: vault-api.delete-document
        with:
          documentId: rest.documentId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/documents/{documentId}/actions/{actionName}
      name: document-actions
      description: Perform lifecycle actions on a Vault document
      operations:
      - method: POST
        name: perform-document-action
        description: Execute a lifecycle action (Approve, Submit for Review, Archive)
        call: vault-api.perform-document-action
        with:
          documentId: rest.documentId
          actionName: rest.actionName
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/objects/{objectName}
      name: objects
      description: List and create Vault object records (studies, products, sites)
      operations:
      - method: GET
        name: list-object-records
        description: List records for a Vault business object
        call: vault-api.list-object-records
        with:
          objectName: rest.objectName
          limit: rest.limit
          offset: rest.offset
          fields: rest.fields
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: create-object-record
        description: Create a new Vault object record
        call: vault-api.create-object-record
        with:
          objectName: rest.objectName
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/objects/{objectName}/{recordId}
      name: object-record
      description: Get, update, or delete a specific Vault object record
      operations:
      - method: GET
        name: get-object-record
        description: Retrieve a single Vault object record
        call: vault-api.get-object-record
        with:
          objectName: rest.objectName
          recordId: rest.recordId
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: update-object-record
        description: Update fields on a Vault object record
        call: vault-api.update-object-record
        with:
          objectName: rest.objectName
          recordId: rest.recordId
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: delete-object-record
        description: Delete a Vault object record
        call: vault-api.delete-object-record
        with:
          objectName: rest.objectName
          recordId: rest.recordId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/query
      name: query
      description: Execute VQL queries across Vault data
      operations:
      - method: GET
        name: execute-vql-query
        description: Run a VQL query to retrieve documents, objects, or user data
        call: vault-api.execute-vql-query
        with:
          q: rest.q
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/users
      name: users
      description: List Vault users
      operations:
      - method: GET
        name: list-users
        description: List all active users in the Vault
        call: vault-api.list-users
        with:
          limit: rest.limit
          offset: rest.offset
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: vault-document-management-mcp
    transport: http
    description: MCP server for AI-assisted Veeva Vault document lifecycle management.
    tools:
    - name: list-documents
      description: List all Vault documents accessible to the authenticated user
      hints:
        readOnly: true
        openWorld: false
      call: vault-api.list-documents
      with:
        limit: tools.limit
        offset: tools.offset
        sort: tools.sort
      outputParameters:
      - type: object
        mapping: $.
    - name: create-document
      description: Create a new controlled document in Vault with lifecycle and type
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: vault-api.create-document
      with:
        name__v: tools.name__v
        type__v: tools.type__v
        lifecycle__v: tools.lifecycle__v
        status__v: tools.status__v
      outputParameters:
      - type: object
        mapping: $.
    - name: get-document
      description: Retrieve metadata and properties for a specific Vault document by ID
      hints:
        readOnly: true
        openWorld: false
      call: vault-api.get-document
      with:
        documentId: tools.documentId
      outputParameters:
      - type: object
        mapping: $.
    - name: update-document
      description: Update field values on an existing Vault document
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vault-api.update-document
      with:
        documentId: tools.documentId
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-document
      description: Permanently delete a Vault document and all its versions
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: vault-api.delete-document
      with:
        documentId: tools.documentId
      outputParameters:
      - type: object
        mapping: $.
    - name: perform-document-action
      description: Execute a lifecycle action on a document (Approve, Submit for Review, Archive)
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: vault-api.perform-document-action
      with:
        documentId: tools.documentId
        actionName: tools.actionName
      outputParameters:
      - type: object
        mapping: $.
    - name: list-object-records
      description: List records for a Vault business object (studies, products, sites, etc.)
      hints:
        readOnly: true
        openWorld: false
      call: vault-api.list-object-records
      with:
        objectName: tools.objectName
        limit: tools.limit
        offset: tools.offset
        fields: tools.fields
      outputParameters:
      - type: object
        mapping: $.
    - name: create-object-record
      description: Create a new Vault object record for studies, products, sites, or custom objects
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: vault-api.create-object-record
      with:
        objectName: tools.objectName
      outputParameters:
      - type: object
        mapping: $.
    - name: get-object-record
      description: Retrieve a single Vault object record by object type and record ID
      hints:
        readOnly: true
        openWorld: false
      call: vault-api.get-object-record
      with:
        objectName: tools.objectName
        recordId: tools.recordId
      outputParameters:
      - type: object
        mapping: $.
    - name: update-object-record
      description: Update field values on a Vault object record
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: vault-api.update-object-record
      with:
        objectName: tools.objectName
        recordId: tools.recordId
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-object-record
      description: Delete a Vault object record
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: vault-api.delete-object-record
      with:
        objectName: tools.objectName
        recordId: tools.recordId
      outputParameters:
      - type: object
        mapping: $.
    - name: execute-vql-query
      description: Run a VQL query to search documents, objects, users, or workflows in Vault
      hints:
        readOnly: true
        openWorld: true
      call: vault-api.execute-vql-query
      with:
        q: tools.q
      outputParameters:
      - type: object
        mapping: $.
    - name: list-users
      description: List all active users in the Vault
      hints:
        readOnly: true
        openWorld: false
      call: vault-api.list-users
      with:
        limit: tools.limit
        offset: tools.offset
      outputParameters:
      - type: object
        mapping: $.