---
canonical_url: "https://docs.composio.dev/toolkits/harvey"
markdown_url: "https://docs.composio.dev/toolkits/harvey.md"
product: "platform"
version: null
last_updated: null
---

# Harvey

Harvey is a legal AI platform for agents, Assistant, Vault documents, client matters, Intake, audit logs, and usage history.

- **Category:** artificial intelligence
- **Auth:** API_KEY
- **Composio-managed OAuth available?** N/A
- **Tools:** 35
- **Triggers:** 0
- **Slug:** `HARVEY`
- **Version:** 00000000_00

## Tools

### Add Review Table Row

**Slug:** `HARVEY_ADD_REVIEW_TABLE_ROW`

Add one processed file or a group of processed files to a Harvey review table and schedule asynchronous review processing. A successful response confirms scheduling, not completion. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file_ids` | array | Yes | Processed file IDs from the review table's Vault project to add as one row. Two or more files are reviewed together as a file group. Harvey's default per-request limit is 25 files. |
| `group_name` | string | No | Optional name for a group of two or more files. Omit it to use the first file's name; Harvey ignores it for a single-file row. |
| `review_table_id` | integer | Yes | Integer identifier of the review table to add the row to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Agent Thread

**Slug:** `HARVEY_CREATE_AGENT_THREAD`

Start an asynchronous Harvey agent run from a prompt and optional documents. The documented contract and permissions have not been live-verified; use Get Agent Thread with the returned id to retrieve the final result.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `files` | array | No | Documents for the agent to read. Supply at most 50 files; each file and the combined upload must be at most 100 MB. |
| `prompt` | string | Yes | Task or question for the selected agent, from 1 to 4,000 characters. |
| `agent_id` | string | Yes | Published agent UUID to run. |
| `client_matter_id` | string | No | Client matter UUID or name for attribution. Some Harvey workspaces require a client matter on every query. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Assistant Completion

**Slug:** `HARVEY_CREATE_ASSISTANT_COMPLETION`

Generate one non-streaming Harvey Assistant response from a prompt with optional documents or knowledge sources, matter attribution, model selection, and citations. This API requires an additional paid workspace purchase. Its documented contract and permissions have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `mode` | string ("draft" | "assist") | No | Assistant behavior mode. Omit to use Harvey's default mode. |
| `files` | array | No | Documents for Assistant to analyze. Files cannot be combined with knowledge_sources in the same request. |
| `model` | string ("gpt-5" | "gpt-5-1" | "gpt-5-2" | "gpt-5-4" | "gpt-5-4-mini" | "gpt-5-5" | "gpt-4-1" | "claude-opus-4-5" | "claude-sonnet-4-5" | "claude-opus-4-6" | "claude-opus-4-7") | No | Harvey customer-facing model slug. Omit to use the workspace default. |
| `prompt` | string | Yes | Legal task or question for Harvey Assistant, up to 20,000 characters. |
| `client_matter_id` | string | No | Client matter UUID to associate with this completion. |
| `include_citations` | boolean | No | Whether Harvey should include inline citations and source details. Disabling citations can return a response more quickly. |
| `knowledge_sources` | array | No | Vault, web, or regional knowledge sources to query. Knowledge sources cannot be combined with uploaded files. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create History File Download URLs

**Slug:** `HARVEY_CREATE_HISTORY_FILE_DOWNLOAD_URLS`

Create time-limited pre-signed download URLs for file IDs returned by Harvey query-history exports. The URLs grant temporary file access and must be treated as secrets: use them promptly and do not log, publish, or share them. This operation's API-token permission is not specified by Harvey, and the contract has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file_ids` | array | Yes | History file UUIDs returned by a Harvey query-history export. At least one ID is required. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Intake Request

**Slug:** `HARVEY_CREATE_INTAKE_REQUEST`

Submit an idempotent request and optional documents to the Harvey Intake queue. A new request returns HTTP 201 and a replay of the caller-provided idempotency key returns the original request with HTTP 200. This documented contract and its permissions have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `files` | array | No | Documents concerning the request. Supply at most 50 files; most accepted file types may be up to 100 MB each. |
| `title` | string | Yes | Short title for the Intake request, from 1 to 255 characters. |
| `description` | string | No | Detailed instructions for the Intake team, up to 10,000 characters. |
| `idempotency_key` | string | Yes | Caller-chosen identifier unique within the workspace. Reuse the exact same value to safely replay a submission without creating a duplicate. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Vault Project

**Slug:** `HARVEY_CREATE_VAULT_PROJECT`

Create a Harvey Vault project or knowledge base, optionally attributed to a client matter. This documented contract and its permissions have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name for the new Vault project. |
| `client_matter_id` | string | No | Optional client matter identifier for attribution. |
| `is_knowledge_base_project` | boolean | No | Whether to create the project as a knowledge base. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Matters

**Slug:** `HARVEY_DELETE_MATTERS`

Idempotently soft-delete 1 to 10,000 Harvey matters by firm client and matter identifiers. Inspect deleted, already_absent, and errors even on HTTP 200 because a batch can partially succeed. The parent clients and historical queries remain. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `matters` | array | Yes | Client and matter identifier pairs to soft-delete. Harvey processes each pair into deleted, already_absent, or errors. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Vault File

**Slug:** `HARVEY_DELETE_VAULT_FILE`

Permanently delete one file from a Harvey Vault project. WARNING: this is a destructive operation and the file cannot be recovered through this action. Harvey may complete deletion asynchronously, so a successful response can confirm acceptance rather than immediate removal. The response preserves any operation or status identifier for follow-up. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file_id` | string | Yes | Unique identifier of the Vault file to permanently delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Vault Project

**Slug:** `HARVEY_DELETE_VAULT_PROJECT`

Move an entire Harvey Vault project and all its contents to the workspace recycle bin. This is destructive and processing continues asynchronously after Harvey accepts the request, so the response does not prove completion. Confirm the project ID and intended contents before calling. This contract and its permissions are documentation-derived and have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | string | Yes | Unique identifier of the Vault project to move to the recycle bin with all its contents. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Query History

**Slug:** `HARVEY_EXPORT_QUERY_HISTORY`

Export enriched query history for a UTC epoch window of at most 30 days, optionally including related file IDs. Warning: results contain sensitive workspace-wide resource names, prompts, and AI outputs and are not restricted by client-matter or ethical-wall boundaries. Share results and API tokens carefully. Harvey limits History Export endpoints to two requests per minute. This documented contract has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_time` | integer | Yes | UTC epoch end time, after start_time and at most 30 days later. |
| `start_time` | integer | Yes | Inclusive UTC epoch start time, no more than one year ago. |
| `include_file_ids` | boolean | No | Whether to include related file IDs and metadata for later download URL resolution. Enabling this may reduce performance. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Export Usage History

**Slug:** `HARVEY_EXPORT_USAGE_HISTORY`

Export enriched Harvey workspace usage events for a UTC epoch range of at most 30 days, optionally including related file IDs. The data may contain sensitive resource names across the entire workspace and is not bounded by client-matter or ethical-wall access. Harvey limits History Export endpoints to 2 requests per minute. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_time` | integer | Yes | Exclusive UTC epoch end time. It must be after start_time and no more than 30 days later. |
| `start_time` | integer | Yes | Inclusive UTC epoch start time, no more than one year ago. |
| `include_file_ids` | boolean | No | Whether to include file IDs and per-file metadata. Enabling this may reduce response performance. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Agent

**Slug:** `HARVEY_GET_AGENT`

Return metadata for one reachable published Harvey agent. Use this before starting a run to confirm the agent remains available and identify its current published version. This contract is documentation-derived and not live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `agent_id` | string | Yes | Published agent UUID, typically returned by HARVEY_LIST_AGENTS. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Agent Thread

**Slug:** `HARVEY_GET_AGENT_THREAD`

Read one Harvey agent thread status and any available answer, citations, generated files, or error. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `thread_id` | integer | Yes | Agent thread ID returned by Create Agent Thread. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Current User

**Slug:** `HARVEY_GET_CURRENT_USER`

Return the Harvey service-user identity associated with the connected API token. Harvey documents this as its authentication-test endpoint but does not document whether it needs a configurable token permission. No no-permission claim is made, and this has not been live-verified.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Earliest Audit Log

**Slug:** `HARVEY_GET_EARLIEST_AUDIT_LOG`

Return the earliest available Harvey audit log, optionally filtered by log type. Use its ID to begin forward audit-log traversal. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `log_type` | string | No | Harvey audit event type to match, if filtering to one type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Intake Request

**Slug:** `HARVEY_GET_INTAKE_REQUEST`

Read one Harvey Intake request's lifecycle state, assignment, timestamps, and attachments. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `request_id` | string | Yes | Intake request UUID returned by HARVEY_CREATE_INTAKE_REQUEST. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Latest Audit Log

**Slug:** `HARVEY_GET_LATEST_AUDIT_LOG`

Return the latest available Harvey audit log, optionally for one log type. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `log_type` | string | No | Harvey audit event type to match, if filtering to one type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Review Table

**Slug:** `HARVEY_GET_REVIEW_TABLE`

Return a Harvey review table's title, creation time, and associated file IDs. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `review_table_id` | integer | Yes | Integer review table ID returned by HARVEY_GET_VAULT_PROJECT metadata. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Review Table Row

**Slug:** `HARVEY_GET_REVIEW_TABLE_ROW`

Return a Harvey review-table row and its cell results for one file. Files in a group resolve to the shared row. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file_id` | string | Yes | File ID associated with the review table. For a file group, any member file ID resolves to the group's row. |
| `review_table_id` | integer | Yes | Integer review table ID returned by HARVEY_GET_REVIEW_TABLE or HARVEY_GET_VAULT_PROJECT. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Vault Files

**Slug:** `HARVEY_GET_VAULT_FILES`

Return details and processing status for up to 1,000 Harvey Vault file IDs. Files that are missing or inaccessible are returned as records with an error instead of file details. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file_ids` | array | Yes | Vault file identifiers whose details and processing status should be returned (1-1000 IDs). Values are sent as repeated file_ids query parameters. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Vault Project

**Slug:** `HARVEY_GET_VAULT_PROJECT`

Return a Harvey Vault project's metadata, file identifiers and names, review tables, and storage limits. This contract, including the provider's unusual HTTP 201 success response for a GET request, is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | string | Yes | Vault project identifier. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Agents

**Slug:** `HARVEY_LIST_AGENTS`

List published Harvey agents available to the connected service user, one cursor page at a time. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `limit` | integer | No | Maximum agents to return in this page (1-100). Harvey clamps out-of-range values. |
| `cursor` | string | No | Opaque continuation cursor returned by a previous call; omit for the first page. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Audit Logs

**Slug:** `HARVEY_LIST_AUDIT_LOGS`

Page forward through Harvey audit logs from a starting log ID, optionally filtered by log type. Continuation advances from the last returned log ID. This pagination contract is documentation-derived and has not been live-verified; the inclusive or exclusive boundary behavior must be confirmed to rule out duplicate rows.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `take` | integer | Yes | Maximum audit log entries to return in this page (1-1000). |
| `cursor` | string | No | Opaque continuation cursor returned by a previous call; provide this or starting_log_id. |
| `log_type` | string | No | Harvey audit event type to match, if filtering to one type. |
| `starting_log_id` | string | No | Starting audit-log ID for the first page; provide this or cursor. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Client Matters

**Slug:** `HARVEY_LIST_CLIENT_MATTERS`

Return all Harvey client matters, including deleted records and usage statistics. This unpaginated contract is documentation-derived and has not been live-verified.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Recycled Vault Projects

**Slug:** `HARVEY_LIST_RECYCLED_VAULT_PROJECTS`

List Vault projects currently in the workspace recycle bin, optionally filtered by project-name text or client matter. Results retain Harvey's newest-deletion-first order. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `search_text` | string | No | Case-insensitive substring to match against recycled Vault project names. |
| `client_matter_id` | string | No | Client matter UUID whose recycled Vault projects should be returned; this is not the human-readable matter number. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vault Project Files

**Slug:** `HARVEY_LIST_VAULT_PROJECT_FILES`

List, filter, and sort files in a Harvey Vault project, one cursor page at a time. The response and pagination contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Case-insensitive substring to match in file names. Percent and underscore characters are treated literally. |
| `limit` | integer | No | Maximum files to return in this page (1-100). |
| `cursor` | string | No | Opaque continuation cursor returned by a previous call. It preserves the project, filters, page size, and sort options from that call. |
| `sort_by` | string ("name" | "uploaded_at" | "size") | No | File field used to sort results. |
| `project_id` | string | Yes | Unique identifier of the Vault project. |
| `sort_order` | string ("asc" | "desc") | No | Sort files in ascending or descending order. |
| `content_types` | array | No | MIME content types to include (up to 20). Values are sent as repeated content_type query parameters. |
| `uploaded_after` | integer | No | Inclusive lower bound on upload time as a UTC Unix timestamp in seconds; must be earlier than uploaded_before. |
| `uploaded_before` | integer | No | Inclusive upper bound on upload time as a UTC Unix timestamp in seconds. |
| `processing_statuses` | array | No | Harvey processing statuses to include (up to 20). Values are sent as repeated processing_status query parameters. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vault Projects

**Slug:** `HARVEY_LIST_VAULT_PROJECTS`

List and filter workspace Vault projects and knowledge bases, one page at a time. The response and pagination contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | No | Case-insensitive substring to match against project names. |
| `page` | integer | No | Page number to fetch when no continuation cursor is supplied. |
| `cursor` | string | No | Opaque continuation cursor returned by a previous call. When supplied, its page and original filters override other pagination inputs. |
| `sort_by` | string ("date" | "name") | No | Project field used for sorting: date uses the last content-update timestamp and name sorts alphabetically. |
| `per_page` | integer | No | Maximum projects to return in this page (1-100). |
| `sort_order` | string ("asc" | "desc") | No | Sort projects in ascending or descending order. |
| `created_after` | integer | No | Inclusive lower bound on project creation time as a UTC Unix timestamp in seconds; must be earlier than created_before. |
| `created_before` | integer | No | Exclusive upper bound on project creation time as a UTC Unix timestamp in seconds. |
| `is_knowledge_base` | boolean | No | Filter to knowledge-base projects when true or ordinary Vault projects when false; omit to return both. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Vault Project Users

**Slug:** `HARVEY_LIST_VAULT_PROJECT_USERS`

List workspace users with direct or inherited effective access to a Harvey Vault project. The project owner is included with MANAGE access, and provider-returned access-origin, inherited-access, and owner indicators are preserved when present. Requires Vault API plus either Vault sharing (view only) or Vault sharing permission. This response contract and permission behavior are documentation-derived and have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | string | Yes | Unique UUID of the Vault project whose effective user access to list. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Remove Vault Project Users

**Slug:** `HARVEY_REMOVE_VAULT_PROJECT_USERS`

Remove direct WORKSPACE_USER shares from a Harvey Vault project by email. Inherited access through workspace, group, or space shares remains effective. Inspect both removed and failed because individual emails can fail without rejecting the entire request. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `emails` | array | Yes | Workspace-user email addresses whose direct WORKSPACE_USER shares should be removed. Inherited workspace, group, or space access is unaffected. |
| `project_id` | string | Yes | Unique identifier of the Vault project. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Audit Logs by Time

**Slug:** `HARVEY_SEARCH_AUDIT_LOGS_BY_TIME`

Return the first Harvey audit log at or after a UTC epoch timestamp, optionally filtered by log type. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `time` | integer | Yes | UTC epoch timestamp no more than one year old. |
| `log_type` | string | No | Harvey audit event type to match, if filtering to one type. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Search Vault

**Slug:** `HARVEY_SEARCH_VAULT`

Return semantically relevant document chunks from one Harvey Vault project. The response is ordered by relevance and can optionally include source file names. This contract has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `query` | string | Yes | Natural-language semantic search query. |
| `project_id` | string | Yes | UUID of the Vault project to search. |
| `include_file_names` | boolean | No | Whether each result chunk should include the source file's display name. A returned file_name can still be null if the file was deleted after indexing. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Update Vault Project Users

**Slug:** `HARVEY_UPDATE_VAULT_PROJECT_USERS`

Add workspace users or update their direct access level on a Harvey Vault project. This is an additive partial update: users omitted from the request remain unchanged, and the project owner must not be included. Inspect failed even on HTTP 200 because individual user updates can fail. This contract and its permissions are documentation-derived and have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `users` | array | Yes | Workspace users to add or update. Users omitted from this list remain unchanged; do not include the project owner. |
| `project_id` | string | Yes | Unique identifier of the Vault project. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload Vault Files

**Slug:** `HARVEY_UPLOAD_VAULT_FILES`

Upload up to 50 new or replacement files to a Harvey Vault project. Optional Vault paths correspond positionally to the uploaded files, and duplicate_mode controls filename collisions. The provider returns HTTP 201. This documented contract and its permissions have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `files` | array | Yes | Files to upload or replace in the Vault project (1-50 files). |
| `file_paths` | array | No | Optional Vault paths corresponding positionally to files. When supplied, provide exactly one path for each file. |
| `project_id` | string | Yes | Vault project identifier. |
| `duplicate_mode` | string ("skip" | "replace" | "keep") | No | How to handle duplicate file names: skip leaves the existing file, replace creates a replacement record, and keep renames the new file. Omit to use Harvey's default. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Clients

**Slug:** `HARVEY_UPSERT_CLIENTS`

Create, update, or restore up to 10,000 Harvey clients by firm client identifier. Always inspect the returned errors array because Harvey can report row-level failures alongside successful rows in HTTP 200 responses. This contract is documentation-derived and has not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `clients` | array | Yes | Clients to create, update, or restore, from 1 to 10,000 rows. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Matters

**Slug:** `HARVEY_UPSERT_MATTERS`

Create, update, or restore up to 10,000 Harvey matters under existing clients. Inspect errors even on HTTP 200 because valid rows can succeed while other rows fail. The connected API token needs Harvey's Client matters admin (write:client_matters) permission; sending allowed on any row additionally needs use:disallowed_client_matters. These are Harvey API-token permissions, not OAuth scopes. This contract and its permissions are documentation-derived and have not been live-verified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `matters` | array | Yes | Matters to create, update, or restore under existing clients. Harvey processes valid rows even when other rows return errors. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
