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: $.