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

# Greenhouse

Applicant tracking and recruiting software to optimize your entire recruiting process

- **Category:** hr talent & recruitment
- **Auth:** S2S_OAUTH2, OAUTH2
- **Composio-managed OAuth available?** Yes
- **Tools:** 134
- **Triggers:** 0
- **Slug:** `GREENHOUSE`
- **Version:** 20261010_00

## Tools

### Reactivate Greenhouse user

**Slug:** `GREENHOUSE_ACTIVATE_USER`

Reactivate a previously deactivated Greenhouse user via the Harvest v3 API so they can sign in again. Use when you need to restore sign-in access for a user account that was previously deactivated, for example when an employee returns. Reactivation restores access only; job permissions that were removed during deactivation are not restored. The call is safe to repeat on an already-active user.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the previously deactivated user to reactivate. Reactivating restores the user's ability to sign in to Greenhouse, but does not restore any job permissions that were removed while they were deactivated. |

#### 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 |

### Anonymize Greenhouse candidate

**Slug:** `GREENHOUSE_ANONYMIZE_CANDIDATE`

Tool to anonymize selected categories of personally identifiable data on a Greenhouse candidate via the Harvest v3 API, for GDPR or right-to-be-forgotten requests. Use when you must permanently redact specific classes of a candidate's PII (such as full name, contact details, tags, attachments, or notes) while retaining the candidate record. WARNING: anonymization is irreversible — the selected fields are permanently cleared or redacted and cannot be recovered, so verify the candidate id and the field selection carefully before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the candidate whose data should be anonymized. |
| `fields` | array | Yes | The categories of personally identifiable data to anonymize on the candidate. Each entry permanently clears or redacts that class of information. |

#### 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 |

### Apply Greenhouse candidate tag

**Slug:** `GREENHOUSE_APPLY_CANDIDATE_TAG`

Tool to apply an existing candidate tag to a candidate via the Greenhouse Harvest v3 API. Use when you want to label a candidate with a tag that already exists in the organization's candidate-tag dictionary. Both the candidate and the tag must already exist; the tag is not created by this action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `candidate_id` | integer | Yes | Unique identifier of the candidate the tag should be applied to. Required. |
| `candidate_tag_id` | integer | Yes | Unique identifier of the candidate tag to apply. The tag must already exist in the organization's candidate-tag dictionary (create one with Create Candidate Tag). 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 |

### Bulk create Greenhouse blocked spam sources

**Slug:** `GREENHOUSE_BULK_CREATE_BLOCKED_SPAM_SOURCES`

Tool to add multiple blocked spam sources to Greenhouse in a single request via the Harvest v3 API. Use when you need to block several IP addresses, email addresses, CIDR ranges, and/or email domains at once so future applications from them are automatically rejected. The request is processed asynchronously: Greenhouse returns a bulk request uuid and a status URL to poll for completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | The list of blocked spam sources to create in a single request. Each entry pairs a value with its source_type. |
| `callback_url` | string | No | Optional HTTPS endpoint that Greenhouse will POST to when the bulk request finishes processing. Must be an HTTPS URL, max 255 chars. Leave unset if you prefer to poll the status_url instead. |
| `on_behalf_of` | string | No | Optional Greenhouse user id to send as the On-Behalf-Of header. The Harvest v3 API identifies the acting user via the JWT sub claim at token generation, so this header is generally not required. Provide only if your organisation explicitly requires it. |

#### 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 |

### Bulk create Greenhouse custom field options

**Slug:** `GREENHOUSE_BULK_CREATE_CUSTOM_FIELD_OPTIONS`

Tool to add many custom field options at once to select-type custom fields via the Greenhouse Harvest v3 API. Use when you need to create multiple options across one or more single_select/multi_select custom fields in a single call. The request is processed asynchronously: Greenhouse returns a bulk request uuid and a status URL to poll for completion and the created option ids.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | The list of custom field options to create in a single request. Each entry specifies the custom_field_id it belongs to, its name, and its sort_order. |

#### 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 |

### Bulk create Greenhouse openings

**Slug:** `GREENHOUSE_BULK_CREATE_OPENINGS`

Tool to asynchronously create many Greenhouse openings across one or more jobs in a single Harvest v3 call. Use when you need to add headcount slots in bulk and want a single submission that Greenhouse processes in the background. Returns a bulk_action_uuid and status_url to poll for per-row results; openings are created independently, so some rows may succeed while others fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Array of opening create payloads to process. Each entry adds one opening to a job (openings may target one or more different jobs). Must contain at least one item. Each item is processed independently; per-item results are reported via the bulk-status endpoint, not in this call's response. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse calls when the bulk operation finishes. Max 255 characters. |

#### 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 |

### Bulk deactivate Greenhouse users

**Slug:** `GREENHOUSE_BULK_DEACTIVATE_USERS`

Tool to asynchronously deactivate many Greenhouse users in a single Harvest v3 call, up to the bulk-endpoint cap per request. Use when you need to revoke sign-in access for several users at once (for example when offboarding a group of employees) and want one submission that Greenhouse processes in the background. Deactivation only blocks sign-in: each user's record and history are preserved and any user can be reactivated later, so the operation is reversible. Returns a bulk_action_uuid and status_url to poll for per-row results; users are processed independently, so some rows may succeed while others fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Array of user ids to deactivate, up to the bulk-endpoint cap per request. Each id is processed independently and asynchronously; deactivation prevents the user from signing in to Greenhouse while preserving all of their historical activity, and each user can later be reactivated. Must contain at least one id. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse calls when the bulk operation finishes. Omit to poll the bulk request status manually instead. Max 2048 characters. |

#### 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 |

### Bulk delete Greenhouse custom field options

**Slug:** `GREENHOUSE_BULK_DELETE_CUSTOM_FIELD_OPTIONS`

Tool to archive many custom field options at once by id via the Greenhouse Harvest v3 API. Use when you need to remove multiple options from one or more select-type custom fields in a single call. This is destructive: archived custom field options are removed from the field and can no longer be selected, so restoring them requires re-creating the options. The request is processed asynchronously: Greenhouse returns a bulk request uuid and a status URL to poll for completion.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | The list of custom field option ids to archive in a single request. Each value is the numeric id of an existing custom field option. |

#### 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 |

### Bulk update Greenhouse blocked spam sources

**Slug:** `GREENHOUSE_BULK_UPDATE_BLOCKED_SPAM_SOURCES`

Tool to asynchronously update the note on many Greenhouse blocked spam sources in a single Harvest v3 call. Use when you need to revise notes on multiple blocklist entries at once and want a single submission that Greenhouse processes in the background. Returns a bulk_action_uuid and status_url to poll for per-row results; only the note can be changed (source_type and value are immutable here), and rows are processed independently so some may succeed while others fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Array of single-resource update payloads to process. Each item must include the integer id of the blocked spam source to update and the new note value. Must contain at least one item. Each item is processed independently - individual item failures are reported via the bulk-status endpoint without stopping the batch. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse will POST to when every row in data has finished processing. Max 255 characters. |

#### 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 |

### Bulk update Greenhouse custom field options

**Slug:** `GREENHOUSE_BULK_UPDATE_CUSTOM_FIELD_OPTIONS`

Tool to asynchronously edit many Greenhouse custom field options in a single Harvest v3 call. Use when you need to rename, reorder, or set external ids on several options at once and want a single submission that Greenhouse processes in the background. Returns a bulk_action_uuid and status_url to poll for per-row results; each option is updated independently, so some rows may succeed while others fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Array of custom field option edits to process. Each entry updates one existing option (identified by its id) and may target options across different custom fields. Must contain at least one item. Each item is processed independently; per-item results are reported via the bulk-status endpoint, not in this call's response. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse calls when the bulk operation finishes. Max 255 characters. |

#### 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 |

### Bulk update Greenhouse departments

**Slug:** `GREENHOUSE_BULK_UPDATE_DEPARTMENTS`

Tool to asynchronously update many Greenhouse departments in a single call via the Harvest v3 API. Use when you need to rename or re-key several departments at once, each identified by its Greenhouse id, up to Greenhouse's bulk-endpoint cap per request. The request is processed asynchronously: Greenhouse validates and updates each department independently and returns a bulk request uuid plus a status URL to poll for the final per-row outcome.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | The list of departments to update in a single asynchronous request. Each entry identifies one department by id and is validated and executed independently. The number of entries cannot exceed Greenhouse's bulk-endpoint cap for a single request. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse will POST to when every row in the data list has finished processing. Max 2048 characters. |
| `on_behalf_of` | string | No | The Greenhouse user id (sent as the On-Behalf-Of header) of the user performing this action. This user must have permission to edit departments. |

#### 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 |

### Bulk update Greenhouse offices

**Slug:** `GREENHOUSE_BULK_UPDATE_OFFICES`

Tool to asynchronously update many Greenhouse offices in a single Harvest v3 call. Use when you need to rename offices, set or clear their location or external_id, or reposition them in the office tree in bulk, and want a single submission that Greenhouse processes in the background. Returns a bulk_action_uuid and status_url to poll for per-row results; offices are updated independently, so some rows may succeed while others fail.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | Array of office update payloads to process. Each entry updates one existing office identified by its id. Must contain at least one item. Each item is processed independently; per-item results are reported via the bulk-status endpoint, not in this call's response. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse calls when the bulk operation finishes. Max 255 characters. |

#### 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 |

### Bulk update Greenhouse openings

**Slug:** `GREENHOUSE_BULK_UPDATE_OPENINGS`

Tool to asynchronously update many Greenhouse openings in a single call via the Harvest v3 API. Use when you need to re-key, open, close, or update custom fields on several openings at once, each identified by its immutable Greenhouse id, up to Greenhouse's bulk-endpoint cap per request. The request is processed asynchronously: Greenhouse validates and updates each opening independently and returns a bulk request uuid plus a status URL to poll for the final per-row outcome. Closing an opening (status 'closed') cannot be undone except by explicitly reopening it, and closing the last opening also closes the hiring plan.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | The list of openings to update in a single asynchronous request. Each entry identifies one opening by its immutable id and is validated and processed independently. The number of entries cannot exceed Greenhouse's bulk-endpoint cap for a single request. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse will POST to when every row in the data list has finished processing. Max 255 characters. |
| `on_behalf_of` | string | No | The Greenhouse user id (sent as the On-Behalf-Of header) of the user performing this action. This user must have permission to edit the relevant jobs and openings. |

#### 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 |

### Bulk update Greenhouse users

**Slug:** `GREENHOUSE_BULK_UPDATE_USERS`

Tool to asynchronously update many Greenhouse users in a single call via the Harvest v3 API. Use when you need to change fields on several users at once (for example an HRIS sync updating job titles, offices, departments, or custom fields), each identified by its Greenhouse id, up to Greenhouse's bulk-endpoint cap per request. The request is processed asynchronously: Greenhouse validates and updates each user independently and returns a bulk request uuid plus a status URL to poll for the final per-row outcome.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | array | Yes | The list of users to update in a single asynchronous request. Each entry identifies one user by id and mirrors the patchable fields of PATCH /v3/users/{id}; each row is validated and executed independently. The number of entries cannot exceed Greenhouse's bulk-endpoint cap for a single request. |
| `callback_url` | string | No | Optional HTTPS URL Greenhouse will POST to when every row in the data list has finished processing. Max 255 characters. |
| `on_behalf_of` | string | No | The Greenhouse user id (sent as the On-Behalf-Of header) of the user performing this action. This user must have permission to edit users. |

#### 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 Greenhouse application

**Slug:** `GREENHOUSE_CREATE_APPLICATION`

Tool to create a new application for an existing Greenhouse candidate via the Harvest v3 API. Use when you need to attach a candidate to a job (supply candidate_id and job_id) or register a sourced candidate as a prospect (supply candidate_id and prospect: true). The two request shapes are mutually exclusive: a job application uses job_id while a prospect uses prospect: true with optional prospect-specific fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | No | The id of the job to apply the candidate to. Required for a standard candidate application. Mutually exclusive with prospect: true. |
| `job_ids` | array | No | Array of job ids the prospect is being considered for. Only applicable when prospect is true. |
| `prospect` | boolean | No | Set to true to create a prospect (sourced candidate not tied to a specific job) instead of a job application. When true, job_id should not be provided. |
| `source_id` | integer | No | The id of the source (job board, event, referral, etc.) to attribute this application to. |
| `created_at` | string | No | ISO 8601 timestamp to record as the application's creation time. Useful when importing historical applications. |
| `referrer_id` | integer | No | The id of the referrer to credit for this application. Not necessarily a Greenhouse user. |
| `candidate_id` | integer | Yes | The id of an existing candidate. Required for both candidate applications and prospect applications. |
| `recruiter_id` | integer | No | The id of the Greenhouse user to assign as recruiter on this application. |
| `custom_fields` | array | No | Custom field values to set on the application. Each entry must identify the field via name_key or custom_field_id. |
| `coordinator_id` | integer | No | The id of the Greenhouse user to assign as coordinator on this application. |
| `initial_stage_id` | integer | No | The id of the interview stage at which to place the candidate. Defaults to the job's first stage if omitted. Only applies to candidate applications, not prospects. |
| `prospect_pool_id` | integer | No | The id of the prospect pool to place this prospect into. Only applicable when prospect is true. |
| `prospect_owner_id` | integer | No | The id of the Greenhouse user to assign as the prospect owner. Only applicable when prospect is true. |
| `prospective_office_id` | integer | No | The id of the office the prospect is being considered for. Only applicable when prospect is true. |
| `prospect_pool_stage_id` | integer | No | The id of the stage within the prospect pool. Only applicable when prospect is true and prospect_pool_id is provided. |
| `prospective_department_id` | integer | No | The id of the department the prospect is being considered for. Only applicable when prospect is true. |

#### 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 Greenhouse approval flow

**Slug:** `GREENHOUSE_CREATE_APPROVAL_FLOW`

Tool to create a multi-step approval flow on a Greenhouse job via the Harvest v3 API. Use when you need to gate a job opening or offer behind one or more tiers of approvers, supplying the job_id, approval_type, whether the tiers resolve sequentially, and the seeded approver_groups. The flow is created with approval_status=pending; offer_candidate flows additionally require the offer_id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Id of the job (hiring plan) this approval flow gates. |
| `offer_id` | integer | No | Id of the offer this flow approves. Required when approval_type is offer_candidate; omit for the other approval types. |
| `sequential` | boolean | Yes | When true, approver groups are activated one tier at a time in array order; when false, all groups are activated in parallel. |
| `approval_type` | string ("open_job" | "offer_job" | "offer_candidate") | Yes | What the flow approves. One of: open_job (approve opening the job), offer_job (approve the offer at the job level), or offer_candidate (approve the offer for a specific candidate). |
| `approver_groups` | array | Yes | Ordered tiers of approvers seeding the flow. Each group lists its approvers and the number of approvals it requires. |

#### 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 Greenhouse attachment

**Slug:** `GREENHOUSE_CREATE_ATTACHMENT`

Tool to attach a file to an existing Greenhouse application via the Harvest v3 API. Use when you need to upload a document (resume, cover letter, offer letter, etc.) to a candidate's application, supplying the application_id, filename, type, and exactly one of content (base64-encoded bytes) or url (a publicly fetchable link). The returned download URL is time-limited and expires after seven days.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | No | Publicly fetchable URL Greenhouse should download the file from. Provide exactly one of `url` or `content`, not both. |
| `type` | string ("resume" | "cover_letter" | "take_home_test" | "offer_packet" | "offer_letter" | "signed_offer_letter" | "other" | "form_attachment" | "midfunnel_agreement" | "automated_agreement") | Yes | Classification of the attachment. `resume`, `cover_letter`, and `take_home_test` are candidate-supplied documents; `offer_packet`, `offer_letter`, and `signed_offer_letter` are offer documents; `midfunnel_agreement` and `automated_agreement` are e-signed documents; `form_attachment` is generated by Greenhouse forms; `other` is the free-form bucket. Required. |
| `content` | string | No | Base64-encoded file contents. Provide exactly one of `content` or `url`, not both. |
| `filename` | string | Yes | Filename to store the attachment under, including extension. Extensions present in the organization's blocklisted-extensions list are rejected. Required. |
| `visibility` | string ("admin_only" | "private" | "public") | No | Who can see an attachment within Greenhouse. |
| `application_id` | integer | Yes | Id of the application the attachment will be associated with. 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 Greenhouse blocked spam source

**Slug:** `GREENHOUSE_CREATE_BLOCKED_SPAM_SOURCE`

Tool to add a new IP address, CIDR range, email address, or email domain to the organization's spam blocklist via the Greenhouse Harvest v3 API. Use when you need to block a sender or network source so that future applications and emails from it are automatically rejected. The source_type field controls how value is interpreted (single IP, IP range, single email address, or whole email domain).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `note` | string | No | Optional free-text note describing why this source was blocked. Stored verbatim and shown alongside the blocklist entry. |
| `value` | string | Yes | The identifier to block, interpreted according to source_type. For ip_address an IPv4/IPv6 address (e.g. 192.168.1.100), for cidr a CIDR range (e.g. 192.168.1.0/24), for email_address a full email address (e.g. spammer@example.com), and for email_domain a bare domain (e.g. example.com). |
| `source_type` | string ("ip_address" | "cidr_block" | "email_address" | "email_domain") | Yes | How value should be interpreted: ip_address blocks a single IP, cidr blocks an IP range, email_address blocks one sender address, and email_domain blocks every sender at a domain. |

#### 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 Greenhouse candidate

**Slug:** `GREENHOUSE_CREATE_CANDIDATE`

Tool to create a new candidate profile in Greenhouse via the Harvest v3 API. Use when you need to add a candidate to your organization, optionally creating their first application (an applicant on a specific job, or a prospect) in the same call. Only first_name and last_name are required; all other profile and application fields are optional.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `tags` | array | No | List of tag names to assign to the candidate. Tag names that don't yet exist on the organization are created on the fly. |
| `title` | string | No | Candidate's current job title. Max 255 characters. |
| `company` | string | No | Candidate's current company affiliation. |
| `addresses` | array | No | List of physical address entries for the candidate. |
| `can_email` | boolean | No | Whether the candidate can be emailed. |
| `last_name` | string | Yes | Candidate's last name. Max 255 characters. |
| `time_zone` | string | No | Candidate's time zone. Must be one of Greenhouse's accepted lower-case time zone names (e.g. 'pacific time (us & canada)', 'eastern time (us & canada)', 'london', 'utc'). |
| `first_name` | string | Yes | Candidate's first name. Max 255 characters. |
| `application` | object | No | An optional nested application to create together with the candidate.  Supply job_id to create an applicant against a specific job, or set prospect=true (and optionally a prospect_pool_id) to create a prospect. |
| `custom_fields` | array | No | List of custom field values to set on the candidate. Each entry must supply either name_key or custom_field_id together with a value. |
| `phone_numbers` | array | No | List of phone number entries for the candidate. |
| `preferred_name` | string | No | Candidate's preferred/alternative name. Max 255 characters. |
| `email_addresses` | array | No | List of email address entries for the candidate. |
| `linked_user_ids` | array | No | List of Greenhouse user ids to associate with this candidate. |
| `website_addresses` | array | No | List of website URL entries for the candidate. |
| `social_media_addresses` | array | No | List of social media profile entries for the candidate. |

#### 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 Greenhouse candidate education

**Slug:** `GREENHOUSE_CREATE_CANDIDATE_EDUCATION`

Tool to add a new education entry to a Greenhouse candidate's profile via the Harvest v3 API. Use when you need to record a candidate's schooling, including the school, degree, and discipline (referenced by custom-field option ids) along with start and end dates. Only candidate_id is required; school, degree, and discipline are optional but must reference existing custom-field option ids.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_date` | string | No | End date of the education in ISO 8601 date format (YYYY-MM-DD). Alternatively, supply end_date_month and end_date_year for month/year-only precision. |
| `start_date` | string | No | Start date of the education in ISO 8601 date format (YYYY-MM-DD). Alternatively, supply start_date_month and start_date_year for month/year-only precision. |
| `candidate_id` | integer | Yes | Id of the candidate to add the education entry to. |
| `end_date_year` | integer | No | End year (1900-2100). Use with end_date_month as an alternative to end_date. |
| `end_date_month` | integer | No | End month (1-12). Use with end_date_year as an alternative to end_date. |
| `start_date_year` | integer | No | Start year (1900-2100). Use with start_date_month as an alternative to start_date. |
| `start_date_month` | integer | No | Start month (1-12). Use with start_date_year as an alternative to start_date. |
| `degree_custom_field_option_id` | integer | No | Id of an existing degree custom-field option. |
| `discipline_custom_field_option_id` | integer | No | Id of an existing discipline custom-field option. |
| `school_name_custom_field_option_id` | integer | No | Id of an existing school-name custom-field option. School, degree, and discipline are optional but must reference existing custom-field option ids, which can be looked up or created via the custom field option endpoints. |

#### 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 Greenhouse candidate employment

**Slug:** `GREENHOUSE_CREATE_CANDIDATE_EMPLOYMENT`

Tool to add a new work-history (employment) entry to a Greenhouse candidate's profile via the Harvest v3 API. Use when you need to record a candidate's past or current role. The candidate id, company name, job title, and start date are required by Greenhouse; omit end_date to represent a current, ongoing position.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `title` | string | Yes | Required job title the candidate held at the company. |
| `end_date` | string | No | End date of the employment in ISO 8601 date format (YYYY-MM-DD). Omit for a current/ongoing role. |
| `start_date` | string | Yes | Required start date of the employment in ISO 8601 date format (YYYY-MM-DD). |
| `candidate_id` | integer | Yes | Id of the candidate to add the employment (work history) entry to. |
| `company_name` | string | Yes | Required name of the company the candidate worked for. |

#### 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 Greenhouse candidate tag

**Slug:** `GREENHOUSE_CREATE_CANDIDATE_TAG`

Tool to add a new tag to the organization's candidate-tag dictionary via the Greenhouse Harvest v3 API. Use when you need to register a reusable candidate tag (by name) so it can later be applied to candidates. Tag names are case-insensitive; if a matching tag already exists Greenhouse returns the existing tag rather than creating a duplicate.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the candidate tag to add to the organization's candidate-tag dictionary (e.g. 'Referral'). Required and must be non-blank. Tag names are case-insensitive: if a tag with the same name (ignoring casing) already exists, the existing tag is returned instead of a new one being created. |

#### 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 Greenhouse custom field

**Slug:** `GREENHOUSE_CREATE_CUSTOM_FIELD`

Tool to add a new custom field to your organization's dictionary via the Greenhouse Harvest v3 API. Use when you need to define a new custom data point (text, number, currency, select, date, etc.) on jobs, candidates, applications, offers, openings, or other Greenhouse resources. field_type, value_type, and name are required; select-type fields (single_select/multi_select) require custom_field_options.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Display name of the custom field in Greenhouse. Required. |
| `private` | boolean | No | Whether the field is private. Defaults to false; offer fields are always private regardless of this value. |
| `api_only` | boolean | No | Whether the field is editable only via the API (not in the Greenhouse UI). Applies to job fields only. Defaults to false. |
| `required` | boolean | No | Whether the field must be filled in before the parent object can be saved. Defaults to false. |
| `field_type` | string ("job" | "candidate" | "application" | "offer" | "opening" | "rejection_question" | "referral_question" | "user_attribute") | Yes | Parent resource the field attaches to. One of job, candidate, application, offer, opening, rejection_question, referral_question, or user_attribute. Required. |
| `office_ids` | array | No | Greenhouse office ids to restrict the field to. Omit to apply the field to all offices. |
| `value_type` | string ("short_text" | "long_text" | "yes_no" | "single_select" | "multi_select" | "currency" | "currency_range" | "number" | "number_range" | "date" | "url" | "user") | Yes | Data type / editor for the field value. One of short_text, long_text, yes_no, single_select, multi_select, currency, currency_range, number, number_range, date, url, or user. user_attribute fields support only single_select, multi_select, yes_no, and user. Required. |
| `description` | string | No | Human-readable description of the field's purpose. |
| `department_ids` | array | No | Greenhouse department ids to restrict the field to. Omit to apply the field to all departments. |
| `require_approval` | boolean | No | Whether changing this field triggers re-approval. Applies to job and opening fields only. Defaults to false. |
| `trigger_new_version` | boolean | No | Whether changing this field creates a new offer version. Applies to offer fields only. Defaults to false. |
| `custom_field_options` | array | No | Selectable options for the field. Required when value_type is single_select or multi_select; ignored for other value types. |
| `generate_email_token` | boolean | No | Whether to auto-generate a template token (template_token_string) for use in email templates. Defaults to false. |
| `expose_in_job_board_api` | boolean | No | Whether the field value is exposed in the Job Board API. Applies to job fields only. Defaults to false. |

#### 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 Greenhouse custom field department

**Slug:** `GREENHOUSE_CREATE_CUSTOM_FIELD_DEPARTMENT`

Tool to restrict a custom field's visibility to one additional department via the Greenhouse Harvest v3 API. Use when you want a custom field to appear only on jobs, offers, or candidates that belong to specific departments and need to add another department to that allow-list. Each call adds a single department association; repeat the call to grant visibility to more departments.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `department_id` | integer | Yes | Id of the department to grant visibility to. Must belong to the same organization as the custom field. Required. |
| `custom_field_id` | integer | Yes | Id of the custom field to scope. The field becomes visible only on jobs, offers, or candidates whose department matches one of the field's custom_field_departments rows. 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 Greenhouse custom field office

**Slug:** `GREENHOUSE_CREATE_CUSTOM_FIELD_OFFICE`

Tool to restrict a custom field's visibility to one additional office via the Greenhouse Harvest v3 API. Use when you need to make an existing job, opening, or offer custom field visible for one more office without replacing its existing office restrictions. Supply the target custom_field_id and the office_id; only one office can be added per call.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `office_id` | integer | Yes | Id of the office to add to the custom field's allowed offices. The field will then be displayed on objects associated with this office. Required. |
| `custom_field_id` | integer | Yes | Id of the existing custom field whose visibility should be restricted to the given office. Required. Only job, opening, and offer custom fields support office restrictions. |

#### 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 Greenhouse custom field option

**Slug:** `GREENHOUSE_CREATE_CUSTOM_FIELD_OPTION`

Tool to add a new selectable value to a single_select or multi_select custom field via the Greenhouse Harvest v3 API. Use when you need to extend a custom field with an additional option (for example syncing option values from an external HRIS). Supply the target custom_field_id and the option name, plus an optional sort_order and external_id; the field must be of a select type for the option to apply.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Display label of the new selectable option (e.g. 'Data Science'). Required; must be non-blank. |
| `sort_order` | integer | Yes | Required integer controlling the display order of this option relative to the field's other options. Lower values are shown first. |
| `external_id` | string | No | Stable identifier supplied by the customer or an external HRIS for cross-system reconciliation of this option. Null if not set. |
| `custom_field_id` | integer | Yes | Id of the existing single_select or multi_select custom field that this option will be added to. 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 Greenhouse department

**Slug:** `GREENHOUSE_CREATE_DEPARTMENT`

Tool to create a new department for the organization via the Greenhouse Harvest v3 API. Use when you need to add a department with an optional external_id and an optional parent department (by id or external_id) to nest it in the department tree. The name is required and must be unique among active departments; parent_id and external_parent_id are mutually exclusive.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Display name of the new department (e.g. 'Engineering', 'Sales'). Required; must be non-blank and unique among active departments in the organization. |
| `parent_id` | integer | No | Id of an existing department to nest this new department under in the department tree. Mutually exclusive with external_parent_id. |
| `external_id` | string | No | Stable identifier supplied by the customer or HRIS for cross-system reconciliation. When provided, must be unique to this department within the organization. |
| `external_parent_id` | string | No | external_id of an existing department to nest this new department under. Use instead of parent_id when you only have the partner identifier. Mutually exclusive with parent_id. |

#### 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 Greenhouse interview

**Slug:** `GREENHOUSE_CREATE_INTERVIEW`

Tool to create a scheduled interview against a candidate application in Greenhouse Harvest. Use when you need to place a candidate's interview onto the schedule with a start/end time, panel of interviewers, and the corresponding calendar event. The interview is created for a specific interview-plan slot (job_interview_id) and tied to an external calendar event id.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ends_at` | string | Yes | Interview end time as an ISO 8601 date-time string. |
| `location` | string | No | Free-form location string copied from the calendar event. Max 255 chars. |
| `starts_at` | string | Yes | Interview start time as an ISO 8601 date-time string. |
| `interviewers` | array | Yes | Panel members for the interview. Each element identifies a user (via user_id, email, or employee_id) and a response_status. |
| `application_id` | integer | Yes | Application identifier — the candidate application this interview is scheduled against. |
| `job_interview_id` | integer | Yes | Interview slot on the job's interview plan that this scheduled interview fills. |
| `external_event_id` | string | Yes | Identifier of the calendar event on the organizer's calendar. Max 255 chars. |
| `video_conferencing_url` | string | No | Join URL for the interview's video conference. Max 255 chars. |

#### 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 Greenhouse job

**Slug:** `GREENHOUSE_CREATE_JOB`

Tool to create a new Greenhouse job from an existing template via the Harvest v3 API. Use when you need to spin up a new requisition that inherits its interview plan, scorecards, hiring team, and approval workflow from a template job. template_job_id and number_of_openings are required; department/office can be set by Greenhouse id or by partner external_id (the two forms are mutually exclusive), and the legacy confidential flag cannot be set here.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `notes` | string | No | Internal HTML notes about the job, surfaced to the hiring team in the Greenhouse UI. |
| `job_name` | string | No | Internal job title shown to the hiring team. When omitted, the template job's name is used. |
| `office_ids` | array | No | Ids of the offices to assign the job to. A job can span multiple offices. Mutually exclusive with external_office_ids. |
| `opening_ids` | array | No | Optional partner-supplied identifiers for the openings being created. One entry per new opening, paired positionally with number_of_openings; entries may be null. Each value is stored on the resulting opening as its opening_id (a free-form string). |
| `custom_fields` | array | No | Values to set on this job's custom fields. Each entry identifies the field by custom_field_id or name_key and supplies a value whose shape matches the field's value_type. |
| `department_id` | integer | No | Id of the department to assign the job to. Mutually exclusive with external_department_id. |
| `job_post_name` | string | No | External-facing title for the job's initial internal job post (the listing shown on the company's careers site). Defaults to job_name when omitted. |
| `requisition_id` | string | No | Partner-supplied external identifier for the requisition (e.g. an HRIS or ATS code). Free-form string and not required to be unique. |
| `template_job_id` | integer | Yes | Id of an existing job (typically a template) used as the source for the new job's interview plan, scorecards, hiring team, and approval workflow. Required. |
| `number_of_openings` | integer | Yes | Number of openings to create on the new job. Each opening can be filled by a single hire. Total open openings on a job cannot exceed Greenhouse's internal limit of 100. |
| `external_office_ids` | array | No | Partner-supplied external_id values of the offices to assign the job to. Mutually exclusive with office_ids. |
| `external_department_id` | string | No | Partner-supplied external_id of the department to assign the job to. Mutually exclusive with department_id. |

#### 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 Greenhouse job hiring manager

**Slug:** `GREENHOUSE_CREATE_JOB_HIRING_MANAGER`

Tool to assign a user as a hiring manager on a Greenhouse job via the Harvest v3 API. Use when you need to add an existing organization user to a job's hiring team in the hiring manager role. Both job_id and user_id are required and must reference resources that already exist in your organization; the call returns the assignment's row id, which is needed to later revoke it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Id of the job to assign the hiring manager to. The job must belong to your organization. |
| `user_id` | integer | Yes | Id of the user to assign as a hiring manager on the job. The user must already exist in your organization. |

#### 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 Greenhouse job note

**Slug:** `GREENHOUSE_CREATE_JOB_NOTE`

Tool to create a free-form note attached to a Greenhouse job via the Harvest v3 API. Use when you need to record context, hiring decisions, or status updates on a specific job (identified by job_id) rather than on a candidate or application. The note's author is set by user_id and its access level by visibility (privately_visible or admin_only_visible).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | Free-text body of the job note. Newline characters (\n) are stored verbatim and rendered as line breaks in the Greenhouse UI. |
| `job_id` | integer | Yes | Id of the job this note will be attached to. |
| `user_id` | integer | Yes | Id of the Greenhouse user to record as the author of the note. |
| `visibility` | string ("privately_visible" | "admin_only_visible") | Yes | Access level for the note. privately_visible is restricted to users with permission to see private job notes, and admin_only_visible is restricted to Job Admins and Site Admins. |

#### 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 |

### Add Greenhouse job owner

**Slug:** `GREENHOUSE_CREATE_JOB_OWNER`

Add a Greenhouse user to a job's hiring team as a recruiter, sourcer, or coordinator via the Harvest v3 API. Use when you need to assign someone an owner role on a specific job so they participate in its recruiting workflow. Requires job_id, user_id, and the role type.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `type` | string ("recruiter" | "sourcer" | "coordinator") | Yes | Required. Hiring-team role to assign the user on the job: one of 'recruiter', 'sourcer', or 'coordinator'. |
| `job_id` | integer | Yes | Required. Id of the job whose hiring team the user is being added to. |
| `user_id` | integer | Yes | Required. Id of the Greenhouse user to add to the job's hiring team. |

#### 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 Greenhouse candidate note

**Slug:** `GREENHOUSE_CREATE_NOTE`

Tool to create a candidate note, log an email, or record an activity-feed entry on a Greenhouse candidate via the Harvest v3 API. Use when you need to attach a note (note_type NOTE), a logged email (note_type EMAIL, which also requires subject, email_from, email_to and email_cc), or an activity-feed entry (note_type ACTIVITY) to a candidate, supplying candidate_id, body and visibility. The entry is appended to the candidate's activity feed and attributed to the authenticated user unless user_id is provided.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `body` | string | Yes | Free-text body of the note. Newline characters (\n) are stored verbatim. Required. |
| `subject` | string | No | Subject line for the entry. Required when note_type is EMAIL; optional for NOTE and ACTIVITY. |
| `user_id` | integer | No | Id of the Greenhouse user recorded as the note's author. Defaults to the authenticated user when omitted. |
| `email_cc` | array | No | CC email addresses for the logged email. Required (may be an empty list) when note_type is EMAIL; must be omitted otherwise. |
| `email_to` | array | No | Recipient email addresses for the logged email. Required when note_type is EMAIL; must be omitted otherwise. |
| `note_type` | string ("NOTE" | "EMAIL" | "ACTIVITY") | Yes | Kind of entry to create. NOTE records a plain candidate note, EMAIL logs an email (requires subject, email_from, email_to and email_cc), and ACTIVITY records an activity-feed entry. |
| `email_from` | array | No | Sender email addresses for the logged email. Required when note_type is EMAIL; must be omitted otherwise. |
| `visibility` | string ("admin_only" | "private" | "public") | Yes | Audience that may see the note: admin_only, private, or public. Required. |
| `candidate_id` | integer | Yes | Id of the candidate the note is recorded against. Required. |
| `application_id` | integer | No | Id of the application to attach the note to. When provided it must belong to candidate_id. |

#### 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 Greenhouse offer

**Slug:** `GREENHOUSE_CREATE_OFFER`

Tool to create a new offer on an existing Greenhouse application via the Harvest v3 API. Use when you need to extend an offer to a candidate, supplying the application_id plus optional starts_on and custom_fields (compensation components and any configured offer custom fields). The new offer is created with status=Created at version=1; if the application already has an offer, the submission is applied to the same offer chain rather than creating a competing record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `starts_on` | string | No | Candidate's proposed start date, in ISO 8601 format (YYYY-MM-DD). |
| `custom_fields` | array | No | Values for the offer's custom fields, including compensation components (base pay, equity, bonus, etc.). Each entry sets one custom field by name_key or custom_field_id; only fields configured on the application's hiring plan apply. |
| `application_id` | integer | Yes | Id of the application this offer is being extended on. 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 Greenhouse office

**Slug:** `GREENHOUSE_CREATE_OFFICE`

Tool to create a new office for the organization via the Greenhouse Harvest v3 API. Use when you need to add a recruiting location (e.g. for scoping jobs, candidates, or custom fields) to a Greenhouse organization. Only name is required; supply parent_id or external_parent_id to nest the office under a parent (Advanced/Expert package), and external_id for HRIS-driven reconciliation (Expert package).

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name of the new office. Required. Must be unique within the organization and less than 255 characters. |
| `location` | string | No | Free-form text representation of the office's geographic location. Not geo-located by Greenhouse. |
| `parent_id` | integer | No | Office id to nest this office under as a child. Requires the Advanced or Expert package. Mutually exclusive with external_parent_id. |
| `external_id` | string | No | Partner-supplied external identifier for the office, used for cross-system reconciliation. Expert package only. Must be unique within the organization. |
| `external_parent_id` | string | No | External id of the parent office, used as an alternative to parent_id. Expert package only. Mutually exclusive with parent_id. |

#### 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 Greenhouse opening

**Slug:** `GREENHOUSE_CREATE_OPENING`

Tool to add a new opening (headcount slot) to an existing Greenhouse job via the Harvest v3 API. Use when a job needs additional headcount and you want to create one more opening that can be filled by a single hire. job_id is required; an optional partner-supplied opening_id and custom field values may also be set. A job cannot hold more than 100 open openings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Greenhouse id of the existing job to add the new opening to. Required. A job can hold up to 100 open openings. |
| `opening_id` | string | No | Optional partner-supplied external identifier for the opening, stored on the resulting opening as its opening_id (a free-form string, max 255 characters). Distinct from the numeric Greenhouse id assigned to the opening. |
| `custom_fields` | array | No | Values to set on this opening's custom fields. Each entry identifies the field by custom_field_id or name_key and supplies a value whose shape matches the field's value_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 |

### Create Greenhouse user

**Slug:** `GREENHOUSE_CREATE_USER`

Create a new user in your Greenhouse Recruiting organization via the Harvest v3 API. Use when you need to onboard a recruiter, hiring manager, interviewer, coordinator, or other team member, optionally assigning offices/departments, an external employee_id, and custom field values. first_name, last_name, and primary_email are required and the email must be unique across the organization.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `last_name` | string | Yes | Required. The new user's last name. |
| `first_name` | string | Yes | Required. The new user's first name. |
| `office_ids` | array | No | Ids of existing Greenhouse offices to assign the user to. Mutually exclusive with external_office_ids. |
| `employee_id` | string | No | Stable external employee identifier (e.g. from an HRIS). Recommended for downstream integrations; must be unique within the organization when provided. |
| `custom_fields` | array | No | Custom field values to set on the new user. Each entry identifies a field by name_key or id and supplies its value. |
| `primary_email` | string | Yes | Required. The user's primary email address, which doubles as their Greenhouse sign-in identifier. Must be a valid, unique email. |
| `department_ids` | array | No | Ids of existing Greenhouse departments to assign the user to. Mutually exclusive with external_department_ids. |
| `send_email_invite` | boolean | No | When true, Greenhouse sends the new user an email notifying them of their account and job permissions. Defaults to false (no email sent). |
| `external_office_ids` | array | No | external_id values of existing offices to assign the user to. Use instead of office_ids when you only have partner identifiers. Mutually exclusive with office_ids. |
| `external_department_ids` | array | No | external_id values of existing departments to assign the user to. Use instead of department_ids when you only have partner identifiers. Mutually exclusive with department_ids. |

#### 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 Greenhouse user email

**Slug:** `GREENHOUSE_CREATE_USER_EMAIL`

Attach an additional email address to an existing Greenhouse user via the Harvest v3 API. Use when a recruiter, hiring manager, or other team member needs a secondary email address associated with their Greenhouse account, optionally triggering a verification email. The email must be unique across the organization and cannot already belong to another user.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `email` | string | Yes | Required. The additional email address to attach to the user. Must be a valid email and unique across the organization (it cannot already belong to another user). |
| `user_id` | integer | Yes | Required. Numeric id of the existing Greenhouse user to attach the additional email address to. |
| `send_verification` | boolean | No | When true, Greenhouse sends the user a verification email for the new address. When false or omitted, no verification email is sent. Defaults to false. |

#### 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 |

### Grant Greenhouse user job permission

**Slug:** `GREENHOUSE_CREATE_USER_JOB_PERMISSION`

Grant a Greenhouse user a Job Admin role on a single job via the Harvest v3 API. Use when you need to give a recruiter, hiring manager, coordinator, or interviewer scoped access to manage one specific job at a defined permission level. Requires user_id, job_id, and role_id; retrieve valid role ids from the Greenhouse user roles endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `job_id` | integer | Yes | Required. Id of the job the user should be granted access to as a Job Admin. |
| `role_id` | integer | Yes | Required. Id of the Job Admin role that defines the permission level being granted (e.g. Job Admin, Interviewer). Retrieve valid role ids from the user roles endpoint. |
| `user_id` | integer | Yes | Required. Id of the Greenhouse user to grant the job permission 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 |

### Deactivate Greenhouse user

**Slug:** `GREENHOUSE_DEACTIVATE_USER`

Tool to deactivate a Greenhouse user via the Harvest v3 API, preventing that user from signing in while preserving their historical data. Use when you need to offboard or temporarily disable a recruiter, hiring manager, interviewer, coordinator, or admin account. This is a reversible state change: the user can be restored later via the separate activate-user endpoint, but while deactivated they lose all access. The endpoint returns HTTP 204 No Content on success.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the Greenhouse user to deactivate. Obtain user ids from the list-users endpoint. |

#### 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 Greenhouse application

**Slug:** `GREENHOUSE_DELETE_APPLICATION`

Tool to permanently delete a single Greenhouse application via the Harvest v3 API, along with its interview stages, scorecards, rejection details, and prospect details. Use when you need to remove an application entirely; the parent candidate is left intact. WARNING: this operation is irreversible and the deleted application and all of its associated data cannot be recovered.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the application 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 Greenhouse applied candidate tag

**Slug:** `GREENHOUSE_DELETE_APPLIED_CANDIDATE_TAG`

Tool to detach a single tag from a candidate in Greenhouse via the Harvest v3 API, identified by its applied candidate tag id. Use when you need to remove a tag association from a candidate. This action is irreversible: once deleted the tag association cannot be recovered (re-applying the tag creates a new association), so confirm the id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the applied candidate tag (the association between a candidate and a tag) to delete. Obtain it from the list applied candidate tags endpoint. |

#### 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 Greenhouse attachment

**Slug:** `GREENHOUSE_DELETE_ATTACHMENT`

Tool to permanently remove an attachment from its Greenhouse application via the Harvest v3 API, identified by its attachment id. Use when you need to delete a document (resume, cover letter, offer letter, etc.) that was previously uploaded to a candidate's application. This action is irreversible: once deleted the attachment and its underlying file cannot be recovered, so confirm the attachment id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the attachment to permanently delete. Obtain attachment ids from the list attachments endpoint or the create attachment response. |
| `on_behalf_of` | string | No | The Greenhouse user id (sent as the On-Behalf-Of header) of the user performing this deletion, recorded for auditing. This user must have permission to remove attachments. Optional for v3 OAuth-authenticated requests; may be useful for audit trail purposes on some tenants. |

#### 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 Greenhouse blocked spam source

**Slug:** `GREENHOUSE_DELETE_BLOCKED_SPAM_SOURCE`

Tool to permanently remove a single blocked spam source from Greenhouse via the Harvest v3 API. Use when an IP address, email address, CIDR range, or email domain was blocked by mistake or should no longer be blocked, so future applications from it are accepted again. This action is irreversible: once removed the blocked spam source entry cannot be recovered, so confirm the id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the blocked spam source to remove. Once removed, future applications from this source are no longer automatically blocked. |
| `on_behalf_of` | string | No | The Greenhouse user id (sent as the On-Behalf-Of header) of the user performing this action. When supplied, the user must have permission to manage the blocked spam source list. Some Greenhouse configurations require this header for write operations. |

#### 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 Greenhouse candidate

**Slug:** `GREENHOUSE_DELETE_CANDIDATE`

Tool to permanently delete a candidate from Greenhouse via the Harvest v3 API. Use when you need to fully remove a candidate and all of their associated applications, attachments, scorecards, notes, and other records identified by the candidate id. This action is irreversible: once deleted the candidate and every associated record cannot be recovered, so confirm the id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the candidate 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 Greenhouse candidate education

**Slug:** `GREENHOUSE_DELETE_CANDIDATE_EDUCATION`

Tool to remove a single education entry from a Greenhouse candidate's profile via the Harvest v3 API. Use when you need to delete one specific education record from a candidate, identified by the education entry id. WARNING: this operation is destructive and irreversible - the education entry is permanently erased and cannot be recovered.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the candidate education entry to remove. This permanently deletes the single education record from the candidate's profile and cannot be undone. |

#### 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 Greenhouse candidate employment

**Slug:** `GREENHOUSE_DELETE_CANDIDATE_EMPLOYMENT`

Tool to permanently delete a single employment entry from a candidate's profile in Greenhouse via the Harvest v3 API. Use when you need to remove an incorrect or outdated employment record identified by its candidate employment id. This action is irreversible: once deleted the employment entry cannot be recovered, so confirm the id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the candidate employment entry to 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 Greenhouse candidate tag

**Slug:** `GREENHOUSE_DELETE_CANDIDATE_TAG`

Tool to delete a tag from your organization's candidate-tag dictionary in Greenhouse via the Harvest v3 API, identified by its candidate tag id. Use when you need to permanently remove a tag from the dictionary. This action is irreversible: deletion enqueues an asynchronous job that first strips the tag from every candidate it is applied to (which can take up to 24 hours) and then removes the tag itself, and the data cannot be recovered, so confirm the id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the candidate tag to delete from your organization's candidate-tag dictionary. Obtain it from the list candidate tags endpoint. |

#### 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 Greenhouse custom field office

**Slug:** `GREENHOUSE_DELETE_CUSTOM_FIELD_OFFICE`

Tool to remove an office from a custom field's visibility scope via the Greenhouse Harvest v3 API. Use when an existing job, opening, or offer custom field should no longer be restricted to a particular office and that office's association needs to be deleted. This is a permanent, irreversible deletion: the office is dropped from the field's allowed offices and can only be restored by creating the association again, so confirm the association id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Id of the custom field office association to delete. This is the id of the association record (returned when the office was added to the custom field), not the id of the office or the custom field itself. |

#### 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 Greenhouse custom field option

**Slug:** `GREENHOUSE_DELETE_CUSTOM_FIELD_OPTION`

Tool to archive a single custom field option via the Greenhouse Harvest v3 API so it can no longer be selected on new records. Use when an option of a select-type custom field should be retired while preserving it on existing records. This is a soft delete (the option is set inactive) rather than a hard delete, but it still removes the option from future selection, so confirm the id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the custom field option to archive (soft 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 Greenhouse interview

**Slug:** `GREENHOUSE_DELETE_INTERVIEW`

Tool to cancel and permanently delete a scheduled interview in Greenhouse via the Harvest v3 API, identified by its interview id. Use when an interview needs to be called off and removed entirely rather than rescheduled. This action is irreversible: once deleted the scheduled interview and its associated calendar event cannot be recovered, so confirm the interview id before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the scheduled interview to cancel and permanently delete. Obtain interview ids from the create interview response or the application's scheduled interviews listing. |
| `on_behalf_of` | string | No | The Greenhouse user id (sent as the On-Behalf-Of header) of the user performing this deletion, recorded for auditing. This user must have permission to manage interviews. Greenhouse requires this header for write operations; many tenants reject deletes without it. |

#### 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 Greenhouse job hiring manager

**Slug:** `GREENHOUSE_DELETE_JOB_HIRING_MANAGER`

Unassign a hiring manager from a Greenhouse job by deleting the job hiring manager join row, identified by its id, via the Harvest v3 API. Use when you need to remove a specific user from a job's hiring team in the hiring manager role. This is destructive and IRREVERSIBLE: the job hiring manager record is permanently removed and must be re-created to restore the assignment.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the job hiring manager record (the hiring-team join row) to delete. This is the id of the join row itself (returned when the hiring manager was assigned or listed), not the user id or the job id. Deleting it unassigns that user as a hiring manager from the job. |

#### 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 Greenhouse job note

**Slug:** `GREENHOUSE_DELETE_JOB_NOTE`

Permanently delete a Greenhouse job note, identified by its id, via the Harvest v3 API. Use when you need to remove a note that was attached to a job (for example because it was added in error or is no longer relevant). This is destructive and IRREVERSIBLE: the job note is permanently removed and must be re-created to restore it.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse Harvest id of the job note to permanently delete. This is the id of the job note itself (returned when the job note was created or listed), not the id of the job it is attached 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 |

### Delete Greenhouse job owner

**Slug:** `GREENHOUSE_DELETE_JOB_OWNER`

Remove a Greenhouse user from a job's hiring team in a single role by deleting the job owner join row, identified by its id, via the Harvest v3 API. Use when you need to take a specific user off a job's hiring team for one role (recruiter, sourcer, or coordinator). This is destructive and IRREVERSIBLE: the job owner record is permanently removed and must be re-created to restore the membership.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the job owner record (hiring-team membership) to delete. This is the id of the join row itself (returned when the job owner was created or listed), not the user id or the job id. Deleting it removes that user from the job's hiring team in that single role. |

#### 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 Greenhouse user job permission

**Slug:** `GREENHOUSE_DELETE_USER_JOB_PERMISSION`

Tool to revoke a single Greenhouse user job permission by its id via the Harvest v3 API, removing that user's Job Admin role on the associated job. Use when you need to take away a specific user's Job Admin access to a particular job. This is destructive and IRREVERSIBLE: the permission grant is permanently removed and must be re-created to restore the user's access.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the user job permission to revoke. This is the id of the permission grant itself (returned when the permission was created or listed), not the user id or the job id. Revoking it removes that user's Job Admin role on the associated job. |

#### 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 Greenhouse user

**Slug:** `GREENHOUSE_GET_CURRENT_USER`

Get the Greenhouse user represented by the connected Harvest OAuth token. The action reads the user id from the token and retrieves that exact user from Greenhouse.

#### 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 |

### Hire Greenhouse application

**Slug:** `GREENHOUSE_HIRE_APPLICATION`

Tool to mark a Greenhouse application as hired and close out the matching opening on the job via the Harvest v3 API. Use when a candidate has accepted an offer and you need to finalize the hire, optionally specifying the start date, the opening to fill, and the close reason for that opening. If no opening_id is supplied, Greenhouse auto-selects an open opening on the job. This is a terminal action: the application leaves the interview pipeline and its status becomes "hired", so it should only be run once the hire is confirmed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the application to mark as hired. |
| `opening_id` | integer | No | The id of the specific job opening to fill with this hire (the internal Greenhouse opening id, not the human-readable opening identifier). If omitted, Greenhouse auto-selects an open opening on the job to close out. |
| `start_date` | string | No | The new employee's start date in ISO 8601 date-time format (e.g. '2026-07-01T00:00:00.000Z'). May be required if the organization mandates that offers have a start date and the application's current offer does not already include one. |
| `close_reason_id` | integer | No | The id of the close reason to assign to the opening that is being closed by this hire. |

#### 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 Greenhouse applications

**Slug:** `GREENHOUSE_LIST_APPLICATIONS`

List the applications in your Greenhouse organization, which associate candidates with jobs (candidate applications attach to exactly one job; prospect applications attach to zero or more). Use when you need to look up application ids, statuses, current pipeline stages, or the candidate/job/source/referrer ids tied to each application, or to filter applications by time range, status, stage, or kind. Supports rich filtering, field selection, and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only applications whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return (e.g. id, status, candidate_id). Omit to return all fields. |
| `status` | string ("rejected" | "hired" | "converted" | "active") | No | Lifecycle status values accepted by the status filter parameter. |
| `job_ids` | array | No | Return only applications currently attached to these job (hiring plan) ids (up to 50). |
| `per_page` | integer | No | Number of application records to return per page (1-500). |
| `prospect` | boolean | No | Filter by application kind. true returns only prospect applications; false returns only non-prospect applications; omit to return both. |
| `stage_ids` | array | No | Return only applications whose current interview pipeline stage matches one of these ids (up to 50). |
| `source_ids` | array | No | Return only applications attributed to these source ids (up to 50). |
| `stage_name` | string | No | Return only applications whose current stage name matches exactly (case sensitive). |
| `job_post_ids` | array | No | Return only applications submitted through these job post ids (up to 50). |
| `referrer_ids` | array | No | Return only applications attributed to these referrer ids (up to 50). These are referrer ids, not user ids. |
| `candidate_ids` | array | No | Return only applications belonging to these candidate ids (up to 50). |
| `created_after` | string | No | Return applications created on or after this ISO-8601 date-time (created_at gte). |
| `updated_after` | string | No | Return applications last updated on or after this ISO-8601 date-time (updated_at gte). |
| `created_before` | string | No | Return applications created on or before this ISO-8601 date-time (created_at lte). |
| `updated_before` | string | No | Return applications last updated on or before this ISO-8601 date-time (updated_at lte). |
| `last_activity_after` | string | No | Return applications whose last activity is on or after this ISO-8601 date-time (last_activity_at gte). |
| `prospective_job_ids` | array | No | Return only applications with a prospective placement on one of these job ids (up to 50). |
| `last_activity_before` | string | No | Return applications whose last activity is on or before this ISO-8601 date-time (last_activity_at lte). |
| `custom_field_option_id` | integer | No | Return only applications whose custom field value selects this single- or multi-select option id. |

#### 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 Greenhouse application stages

**Slug:** `GREENHOUSE_LIST_APPLICATION_STAGES`

List the application stage history rows in your Greenhouse organization — one row per interview stage an application has occupied, with entered_at and exited_at timestamps. Use when you need the canonical source for stage-history reporting, such as time-in-stage analysis or reconstructing a candidate's pipeline movement for one or more applications. Supports filtering by application ids, interview stage ids, current/past, time ranges, and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only application stage rows whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return (e.g. id, application_id, entered_at). Omit to return all fields. |
| `current` | boolean | No | Filter by whether the stage is the application's current stage. true returns only current stages; false returns only past stages; omit to return both. |
| `per_page` | integer | No | Number of application stage records to return per page (1-500). |
| `created_after` | string | No | Return stage rows created on or after this ISO-8601 date-time (created_at gte). |
| `updated_after` | string | No | Return stage rows last updated on or after this ISO-8601 date-time (updated_at gte). |
| `created_before` | string | No | Return stage rows created on or before this ISO-8601 date-time (created_at lte). |
| `updated_before` | string | No | Return stage rows last updated on or before this ISO-8601 date-time (updated_at lte). |
| `application_ids` | array | No | Return only stage rows belonging to these application ids (up to 50). Use this to retrieve a single application's full stage history. |
| `job_interview_stage_ids` | array | No | Return only stage rows where the application visited one of these interview stage ids (up to 50). |

#### 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 Greenhouse approval flows

**Slug:** `GREENHOUSE_LIST_APPROVAL_FLOWS`

Tool to list the approval flows in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or search the multi-step approval definitions attached to jobs or candidate offers, optionally filtering by approval flow ids, job_ids, offer_ids, approval_type, or creation/update date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of approval flow IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of approval flow fields to return in each result. When omitted, all fields are returned. Maximum 50 items. |
| `job_ids` | array | No | List of job IDs to filter approval flows by. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `offer_ids` | array | No | List of offer IDs to filter approval flows by. Returns offer-level (offer_candidate) approval flows. Maximum 50 items. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `approval_type` | string ("open_job" | "offer_job" | "offer_candidate") | No | The kind of event an approval flow gates. |

#### 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 Greenhouse approver groups

**Slug:** `GREENHOUSE_LIST_APPROVER_GROUPS`

Tool to list the approver groups in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate the ordered tiers of approvers that make up the approval flows on jobs or offers, optionally filtering by approver group ids, approval_flow_ids, or creation/update date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of approver group IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of approver group fields to return in each result. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `approval_flow_ids` | array | No | Return only the approver groups belonging to these approval flow ids. Maximum 50 items. |

#### 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 Greenhouse approvers

**Slug:** `GREENHOUSE_LIST_APPROVERS`

Tool to list approver records in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or search the individual users assigned to approve a job, offer, or other approvable resource, optionally filtering by approver record ids, approver group ids, assigned user ids, status, or creation/update date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of approver record IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of approver fields to return in each result. When omitted, all fields are returned. Maximum 50 items. |
| `status` | string ("waiting" | "due" | "approved" | "rejected") | No | Current state of a Greenhouse approver record. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `user_ids` | array | No | Return only approver records assigned to these Greenhouse user IDs. Maximum 50 items. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `approver_group_ids` | array | No | List of approver group IDs to filter approvers by. Maximum 50 items. |

#### 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 Greenhouse attachments

**Slug:** `GREENHOUSE_LIST_ATTACHMENTS`

List the attachments in your Greenhouse organization, which are files associated with applications such as resumes, cover letters, take-home tests, offer documents, and e-signed agreements. Use when you need to discover attachment ids, filenames, types, or time-limited download URLs, or to scope attachments to specific applications, candidates, types, or time ranges. Each returned url is a temporary download link that expires after seven days. Supports field selection and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only attachments whose id is in this list (up to 50 ids). |
| `type` | string ("resume" | "cover_letter" | "take_home_test" | "offer_packet" | "offer_letter" | "signed_offer_letter" | "midfunnel_agreement" | "automated_agreement" | "form_attachment" | "other") | No | Classification values returned for an attachment's type field. |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return (e.g. id, filename, url). Omit to return all fields. Up to 50 items. |
| `per_page` | integer | No | Number of attachment records to return per page (1-500). |
| `candidate_ids` | array | No | Return only attachments whose application belongs to one of these candidate (person) ids (up to 50). |
| `created_after` | string | No | Return attachments created on or after this ISO-8601 date-time (created_at gte). |
| `updated_after` | string | No | Return attachments last updated on or after this ISO-8601 date-time (updated_at gte). |
| `created_before` | string | No | Return attachments created on or before this ISO-8601 date-time (created_at lte). |
| `updated_before` | string | No | Return attachments last updated on or before this ISO-8601 date-time (updated_at lte). |
| `application_ids` | array | No | Return only attachments belonging to these application ids (up to 50). |

#### 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 Greenhouse bulk requests

**Slug:** `GREENHOUSE_LIST_BULK_REQUESTS`

List the asynchronous bulk requests submitted to Greenhouse Harvest v3, each tracking a batch operation with its record, success, and failure counts and current status. Use when you need to monitor or audit previously submitted bulk jobs, find a bulk_action_uuid, or check overall progress across many bulk operations. Returns paginated bulk requests; use cursor for subsequent pages. Fetch a single request's per-row result files with the Get bulk request action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Opaque pagination cursor returned in a previous response's Link header. Pass to retrieve the next page of results. |
| `per_page` | integer | No | Number of bulk requests to return per page (1–500). Defaults to 100. |

#### 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 Greenhouse candidate educations

**Slug:** `GREENHOUSE_LIST_CANDIDATE_EDUCATIONS`

Tool to list candidate educations in a Greenhouse organization via the Harvest v3 API. Candidate educations are the school/degree/discipline entries (with start/end dates) recorded on candidates' profiles. Use when you need to enumerate or look up education entries, optionally filtering by entry ids, candidate ids, or creation/update timestamps. Results are paginated; pass the next_cursor from the previous response as the cursor parameter to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of candidate education entry IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's next_cursor value. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of candidate education fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `candidate_ids` | array | No | List of candidate IDs to restrict the results to. Returns only education entries belonging to these candidates. Maximum 50 items. |

#### 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 Greenhouse candidate employments

**Slug:** `GREENHOUSE_LIST_CANDIDATE_EMPLOYMENTS`

Tool to list candidate employments in a Greenhouse organization via the Harvest v3 API. Candidate employments are the work-history entries (company, title, and start/end dates) recorded on candidates' profiles. Use when you need to enumerate or look up employment entries, optionally filtering by entry ids, candidate ids, or creation/update timestamps. Results are paginated; pass the next_cursor from the previous response as the cursor parameter to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of candidate employment entry IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's next_cursor value. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of candidate employment fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `candidate_ids` | array | No | List of candidate IDs to restrict the results to. Returns only employment entries belonging to these candidates. Maximum 50 items. |

#### 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 Greenhouse candidates

**Slug:** `GREENHOUSE_LIST_CANDIDATES`

List the candidates (active applicants and prospects) in your Greenhouse organization, returning each candidate's profile: names, contact methods, tags, custom fields, and timestamps. Use when you need to look up candidate ids, search by email or tag, or sync candidate records, optionally filtering by id, creation/update/activity windows. Supports field selection and cursor-based pagination; nested application/attachment data lives on its own resource endpoints.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only candidates whose id is in this list (up to 50 ids). |
| `tag` | string | No | Return only candidates tagged with this candidate tag name. |
| `email` | string | No | Return only candidates with this email address on their profile (matched case-insensitively against any of their emails). |
| `cursor` | string | No | Opaque pagination cursor taken from a previous response's Link header (rel="next"). When supplied, do not pass any other parameters; the cursor must be the only query parameter. |
| `fields` | array | No | Subset of candidate fields to return (e.g. id, first_name, email_addresses). Omit to return all fields. Up to 50 values. |
| `private` | boolean | No | Include private candidates the caller has access to. Defaults to true; set false to exclude private candidates. |
| `per_page` | integer | No | Number of candidate records to return per page (1-500). |
| `created_at_gt` | string | No | Return candidates created strictly after this ISO-8601 timestamp. |
| `created_at_lt` | string | No | Return candidates created strictly before this ISO-8601 timestamp. |
| `updated_at_gt` | string | No | Return candidates last updated strictly after this ISO-8601 timestamp. |
| `updated_at_lt` | string | No | Return candidates last updated strictly before this ISO-8601 timestamp. |
| `created_at_gte` | string | No | Return candidates created at or after this ISO-8601 timestamp. |
| `created_at_lte` | string | No | Return candidates created at or before this ISO-8601 timestamp. |
| `updated_at_gte` | string | No | Return candidates last updated at or after this ISO-8601 timestamp. |
| `updated_at_lte` | string | No | Return candidates last updated at or before this ISO-8601 timestamp. |
| `last_activity_at_gt` | string | No | Return candidates whose most recent application activity is strictly after this ISO-8601 timestamp. |
| `last_activity_at_lt` | string | No | Return candidates whose most recent application activity is strictly before this ISO-8601 timestamp. |
| `last_activity_at_gte` | string | No | Return candidates whose most recent application activity is at or after this ISO-8601 timestamp. |
| `last_activity_at_lte` | string | No | Return candidates whose most recent application activity is at or before this ISO-8601 timestamp. |
| `custom_field_option_id` | integer | No | Return only candidates whose custom field value matches this single-select or multi-select option id. |

#### 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 Greenhouse candidate tags

**Slug:** `GREENHOUSE_LIST_CANDIDATE_TAGS`

Tool to list the candidate tags configured in a Greenhouse organization via the Harvest v3 API. Candidate tags are the org-wide library of tag names available to apply to candidates. Use when you need to enumerate or look up available candidate tags, for example before applying a tag to a candidate. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of candidate-tag fields to return in the response. When omitted, all fields are returned. |
| `per_page` | integer | No | Number of results to return per page. Must be between 1 and 500. |

#### 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 Greenhouse close reasons

**Slug:** `GREENHOUSE_LIST_CLOSE_REASONS`

Tool to list the close reasons configured in a Greenhouse organization via the Harvest v3 API. Close reasons are the organization-defined dictionary of outcomes recorded when an opening is closed. Use when you need to enumerate or look up close reasons for filtering, reporting, or when closing an opening, optionally filtering by ids or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of close reason IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of close reason fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse custom field departments

**Slug:** `GREENHOUSE_LIST_CUSTOM_FIELD_DEPARTMENTS`

Tool to list the custom field department associations configured in a Greenhouse organization via the Harvest v3 API. Use when you need to see which departments a custom field's visibility is restricted to, optionally filtering by association ids, custom_field_ids, department_ids, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of custom_field_department association IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor token for pagination. Pass the opaque cursor value extracted from the previous page's Link response header (either the raw token or the full next-page URL — both are accepted). When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of attributes to return for each association. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `department_ids` | array | No | List of department IDs to filter by; returns only the custom field associations scoped to these departments. Maximum 50 items. |
| `custom_field_ids` | array | No | List of custom field IDs to filter by; returns only the department associations belonging to these custom fields. Maximum 50 items. |

#### 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 Greenhouse custom field offices

**Slug:** `GREENHOUSE_LIST_CUSTOM_FIELD_OFFICES`

Tool to list the custom_field_office associations in a Greenhouse organization via the Harvest v3 API. A custom_field_office restricts a custom field's visibility to a single office. Use when you need to enumerate which custom fields are scoped to which offices, optionally filtering by association ids, custom_field_ids, office_ids, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of custom_field_office association IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of fields to return for each association. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `office_ids` | array | No | List of office IDs to filter by, returning only associations for these offices. Maximum 50 items. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `custom_field_ids` | array | No | List of custom field IDs to filter by, returning only associations for these custom fields. Maximum 50 items. |

#### 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 Greenhouse custom field options

**Slug:** `GREENHOUSE_LIST_CUSTOM_FIELD_OPTIONS`

Tool to list the custom field options configured in a Greenhouse organization via the Harvest v3 API. Custom field options are the selectable values on single_select or multi_select custom fields. Use when you need to enumerate or look up the allowed values for a custom field, optionally filtering by ids, custom_field_ids, custom_field_key, active state, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of custom field option IDs to filter by. Maximum 50 items. |
| `active` | boolean | No | Filter by selectability. When true, return only active (selectable) options; when false, return only archived options. Omit to return both active and archived options. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of option fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `custom_field_ids` | array | No | List of parent custom field IDs whose options to return. Maximum 50 items. |
| `custom_field_key` | string | No | Filter options to a single custom field by its name_key (e.g. 'school_name', 'degree', 'discipline'). |

#### 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 Greenhouse custom fields

**Slug:** `GREENHOUSE_LIST_CUSTOM_FIELDS`

Tool to list the custom field definitions configured in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate the org-defined structured data layered onto jobs, offers, openings, candidates, applications, and users, optionally filtering by ids, field_type, active state, name, name_key, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of custom field IDs to filter by. Maximum 50 items. |
| `name` | string | No | Return only the custom field whose human-readable name matches this value exactly (case-insensitive). |
| `active` | boolean | No | Filter by active state. Pass true for active fields only or false for archived fields only. When omitted, both active and archived fields are returned. |
| `cursor` | string | No | Cursor token for pagination. Pass the opaque cursor value extracted from the previous page's Link response header (either the raw token or the full next-page URL — both are accepted). When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of custom field attributes to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `name_key` | string | No | Return only the custom field whose stable, immutable name_key matches this value exactly. Useful for integration lookups. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `field_type` | string ("job" | "opening" | "standard" | "offer" | "compensation_frequency" | "candidate" | "referral_question" | "application" | "rejection_question" | "form" | "agency_question" | "user_attribute") | No | The resource a custom field is attached to. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse default interviewers

**Slug:** `GREENHOUSE_LIST_DEFAULT_INTERVIEWERS`

List the default interviewers configured in a Greenhouse organization via the Harvest v3 API. Default interviewers are the users pre-selected as the interview panel for a specific stage on a job (the default, not the final panel); each row pairs one user with one interview kit. Use when you need to look up or enumerate who is set as the default panel, optionally filtering by interview_kit_ids (to find the panel for a stage), user_ids, ids, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of default interviewer row IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `user_ids` | array | No | Return only default-interviewer rows for these Greenhouse user IDs. Maximum 50 items. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `interview_kit_ids` | array | No | Return only default-interviewer rows for these interview kit IDs. Use this to look up the default interview panel configured for a specific stage on a job. Maximum 50 items. |

#### 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 Greenhouse demographic answer options

**Slug:** `GREENHOUSE_LIST_DEMOGRAPHIC_ANSWER_OPTIONS`

Tool to list all of a Greenhouse organization's demographic answer options via the Harvest v3 API. Demographic answer options are the selectable choices presented on a demographic question (for example the individual options of a self-identification question). Use when you need to enumerate the available answer choices across demographic questions, including which options are active, free-form, or decline-to-answer. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `per_page` | integer | No | Number of results per page. Must be an integer between 1 and 500. |

#### 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 Greenhouse demographic answers

**Slug:** `GREENHOUSE_LIST_DEMOGRAPHIC_ANSWERS`

Tool to list all of a Greenhouse organization's demographic answers via the Harvest v3 API. Demographic answers are individual applicant submissions to the organization's voluntary demographic questions on a job post. Use when you need to enumerate or audit applicants' self-identification responses, optionally filtering by creation or update time. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor token for pagination. Pass the opaque cursor value extracted from the previous page's Link response header (either the raw token or the full next-page URL — both are accepted). When supplied, do not pass any other parameter. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_after` | string | No | Return only answers created at or after this timestamp. Must be an ISO-8601 formatted datetime string. |
| `updated_after` | string | No | Return only answers updated at or after this timestamp. Must be an ISO-8601 formatted datetime string. |
| `created_before` | string | No | Return only answers created before this timestamp. Must be an ISO-8601 formatted datetime string. |
| `updated_before` | string | No | Return only answers updated before this timestamp. Must be an ISO-8601 formatted datetime string. |

#### 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 Greenhouse demographic questions

**Slug:** `GREENHOUSE_LIST_DEMOGRAPHIC_QUESTIONS`

Tool to list the demographic questions configured in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate the voluntary self-identification prompts that applicants see on job posts and candidate surveys, for example to audit EEOC/diversity question configuration or to map answer options. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor token for pagination. Pass the opaque cursor value extracted from the previous page's Link response header (either the raw token or the full next-page URL — both are accepted). When supplied, do not pass any other parameter. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |

#### 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 Greenhouse demographic question sets

**Slug:** `GREENHOUSE_LIST_DEMOGRAPHIC_QUESTION_SETS`

Tool to list all of a Greenhouse organization's demographic question sets via the Harvest v3 API. Demographic question sets are named groupings of demographic questions that an organization attaches to a job post. Use when you need to enumerate or look up the available question sets, including their titles, descriptions, and whether they are active. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `per_page` | integer | No | Number of results per page. Must be an integer between 1 and 500. |

#### 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 Greenhouse departments

**Slug:** `GREENHOUSE_LIST_DEPARTMENTS`

Tool to list the departments configured in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate organizational units that jobs are assigned to for filtering, lookup, or HRIS reconciliation, optionally filtering by ids, parent department, external_id, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of department IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor token for pagination. Pass the opaque cursor value extracted from the previous page's Link response header (either the raw token or the full next-page URL — both are accepted). When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of department fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `parent_id` | integer | No | Return only departments whose immediate parent is this department id. Use to traverse the department tree one level at a time. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `external_id` | string | No | Return only the department whose external_id matches this value exactly. Useful for HRIS-driven reconciliation. |

#### 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 Greenhouse EEOC responses

**Slug:** `GREENHOUSE_LIST_EEOC`

Tool to list EEOC self-identification responses in a Greenhouse organization via the Harvest v3 API. EEOC responses capture a candidate's voluntary self-identification of race, gender, veteran status, and disability status. Use when you need to enumerate or report on candidates' voluntary EEO disclosures, optionally filtering by submission timestamp. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `submitted_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse email templates

**Slug:** `GREENHOUSE_LIST_EMAIL_TEMPLATES`

Tool to list the email templates configured in a Greenhouse organization via the Harvest v3 API. Email templates are reusable subject/body pairs used to communicate with candidates and the hiring team. Use when you need to enumerate available templates for review, lookup, or before sending templated emails, optionally filtering by creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of email template fields to return in the response. When omitted, all fields are returned. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse focus candidate attributes

**Slug:** `GREENHOUSE_LIST_FOCUS_CANDIDATE_ATTRIBUTES`

List the focus candidate attributes in your Greenhouse organization — the subset of a job's job_candidate_attributes that an interview kit elevates as focus areas at the top of the interviewer's scorecard. Use when you need to know which attributes a given interview kit prioritizes, or which kits focus on a particular job candidate attribute. Filter by interview_kit_ids for a single kit's focus areas or by job_candidate_attribute_ids to find every kit that focuses on an attribute. Note: this endpoint is currently site-admin-only.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only focus candidate attribute rows whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return. Allowed values: created_at, id, interview_kit_id, job_candidate_attribute_id, updated_at. Omit to return all fields. |
| `per_page` | integer | No | Number of focus candidate attribute records to return per page (1-500). |
| `created_after` | string | No | Return rows created on or after this ISO-8601 date-time (created_at gte). |
| `updated_after` | string | No | Return rows last updated on or after this ISO-8601 date-time (updated_at gte). |
| `created_before` | string | No | Return rows created on or before this ISO-8601 date-time (created_at lte). |
| `updated_before` | string | No | Return rows last updated on or before this ISO-8601 date-time (updated_at lte). |
| `interview_kit_ids` | array | No | Return only focus candidate attributes attached to these interview kit ids (up to 50). An interview kit is a stage's interview definition on a job; look up kits for a job via GET /v3/interview_kits?job_ids=... |
| `job_candidate_attribute_ids` | array | No | Return only focus candidate attributes for these job candidate attribute ids (up to 50). Job candidate attributes are the per-job scoring rubric items that scorecards can score against. |

#### 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 Greenhouse interviewer tags

**Slug:** `GREENHOUSE_LIST_INTERVIEWER_TAGS`

List the interviewer tags in your Greenhouse organization: the organization-defined labels that can be assigned to interviewer users (for example "Phone Screener" or "Culture Add Interviewer"). Use when you need to discover the available interviewer-tag definitions, audit how interviewers are categorized, or fetch tag ids and names referenced by the users endpoint. Supports filtering by tag id and creation/update windows, with cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only interviewer-tag rows whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Opaque pagination cursor taken from a previous response's Link header (rel="next"). When supplied, do not pass any other parameters; the cursor must be the only query parameter. |
| `fields` | array | No | Subset of interviewer-tag fields to return (e.g. id, name, created_at, updated_at). Omit to return all fields. Up to 50 values. |
| `per_page` | integer | No | Number of interviewer tag records to return per page (1-500). |
| `created_at_gt` | string | No | Return rows created strictly after this ISO-8601 timestamp. |
| `created_at_lt` | string | No | Return rows created strictly before this ISO-8601 timestamp. |
| `updated_at_gt` | string | No | Return rows last updated strictly after this ISO-8601 timestamp. |
| `updated_at_lt` | string | No | Return rows last updated strictly before this ISO-8601 timestamp. |
| `created_at_gte` | string | No | Return rows created at or after this ISO-8601 timestamp. |
| `created_at_lte` | string | No | Return rows created at or before this ISO-8601 timestamp. |
| `updated_at_gte` | string | No | Return rows last updated at or after this ISO-8601 timestamp. |
| `updated_at_lte` | string | No | Return rows last updated at or before this ISO-8601 timestamp. |

#### 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 Greenhouse interview kits

**Slug:** `GREENHOUSE_LIST_INTERVIEW_KITS`

Tool to list the interview kits (per-job, per-slot evaluation packets interviewers see when conducting an interview) in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or look up interview kits with their live Interview Prep exercises and anonymization settings, optionally filtering by interview kit ids, job ids, job_interview (slot) ids, or creation/update date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of interview kit IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of interview kit fields to return in each result. When omitted, all fields are returned. Maximum 50 items. |
| `job_ids` | array | No | Return only interview kits belonging to these job (hiring plan) ids. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `job_interview_ids` | array | No | Return only interview kits attached to these job_interview (interview slot) ids. Maximum 50 items. |

#### 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 Greenhouse interviews

**Slug:** `GREENHOUSE_LIST_INTERVIEWS`

Tool to list scheduled interview events in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or search interviews across candidate applications for reporting, scheduling, or lookup, optionally filtering by interview ids, application/job ids, lifecycle status, or creation/update date ranges. Each result includes start/end time, location, video conferencing link, and status. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of interview IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `status` | string ("to_be_scheduled" | "scheduled" | "awaiting_feedback" | "complete" | "skipped" | "collect_feedback" | "to_be_sent" | "sent" | "received") | No | Lifecycle status of a Greenhouse interview event. |
| `job_ids` | array | No | List of job IDs to filter interviews by. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `application_ids` | array | No | List of application IDs to filter interviews by. Maximum 50 items. |

#### 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 Greenhouse job board custom locations

**Slug:** `GREENHOUSE_LIST_JOB_BOARD_CUSTOM_LOCATIONS`

Tool to list a Greenhouse organization's job board custom locations via the Harvest v3 API. Use when you need the curated list of location strings a site admin maintains for posting jobs to a given job board, e.g. to resolve a job post's custom_location_id to displayable text or to scope locations to a specific board. Optionally filter by ids, greenhouse_job_board_ids, active status, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of job board custom location IDs to filter by. Maximum 50 items. |
| `active` | boolean | No | Filter by selectability status. When true, return only locations selectable on new and edited job posts; when false, return only removed (inactive) locations. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameter. |
| `fields` | array | No | Subset of fields to return for each location. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `greenhouse_job_board_ids` | array | No | Scope results to custom locations belonging to these job board IDs. Each custom location belongs to exactly one board. Maximum 50 items. |

#### 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 Greenhouse job boards

**Slug:** `GREENHOUSE_LIST_JOB_BOARDS`

Tool to list the job boards configured in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate the destinations (the internal board and external careers boards) where job posts are published, optionally filtering by ids, audience (internal), publication state (live), or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of job board IDs to filter by. Maximum 50 items. |
| `live` | boolean | No | Restrict results by publication state: true returns only published (live) boards, false returns only drafts. Omit to return both. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of job board fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `internal` | boolean | No | Restrict results by audience: true returns only the organization's internal board, false returns only external boards. Omit to return both. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse job candidate attributes

**Slug:** `GREENHOUSE_LIST_JOB_CANDIDATE_ATTRIBUTES`

Tool to list the job candidate attributes (the per-job instances of a job's candidate_attribute_types) in a Greenhouse organization via the Harvest v3 API. Use when you need the canonical list of evaluable traits configured on a job for AI candidate-fit matching, scorecard review, or lookup, optionally filtering by ids, job_ids, candidate_attribute_type_ids, active state, or creation/update timestamps. This endpoint is site-admin-only. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of job candidate attribute ids to filter by. Maximum 50 items. |
| `active` | boolean | No | When true, return only attributes still in use on the job; when false, only attributes archived from the job's attribute list. When omitted, return both. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `job_ids` | array | No | Return only job candidate attributes registered on these job (hiring plan) ids. Each job has its own set of attributes. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `candidate_attribute_type_ids` | array | No | Return only attributes that are instances of these parent candidate_attribute_type ids. Use to find every job using a given attribute 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 |

### List Greenhouse job hiring managers

**Slug:** `GREENHOUSE_LIST_JOB_HIRING_MANAGERS`

List the job hiring managers configured in a Greenhouse organization via the Harvest v3 API. Job hiring managers are users designated as hiring managers on a job; each row pairs one user with one job (hiring plan). Use when you need to look up or enumerate who is assigned as a hiring manager, optionally filtering by job_ids (to find the hiring managers on a specific job), user_ids, ids, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of job hiring manager row IDs (the hiring-team join row ids) to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `job_ids` | array | No | Return only job-hiring-manager rows for these Greenhouse job (hiring plan) IDs. Use this to look up the hiring managers assigned to a specific job. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `user_ids` | array | No | Return only job-hiring-manager rows for these Greenhouse user IDs (the users serving as hiring managers). Maximum 50 items. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse job interviews

**Slug:** `GREENHOUSE_LIST_JOB_INTERVIEWS`

Tool to list the interview slot template definitions configured on jobs' interview plans in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or search the interview stages/slots that make up a job's interview plan, optionally filtering by slot ids, job ids, job interview stage ids, active state, scheduling type, or creation/update date ranges. Each result includes the slot name, duration, instructions, scheduling type, and the stage and job it belongs to. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of job interview IDs to filter by. Maximum 50 items. |
| `active` | boolean | No | Filter by whether the interview slot is on the job's current interview plan. True returns only active slots. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response. When supplied, do not pass any other filter parameters. |
| `job_ids` | array | No | Return only interview slots belonging to these job (hiring plan) ids. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `scheduling_type` | string ("none" | "needs_scheduling" | "take_home_test" | "offer") | No | How a job interview slot is fulfilled in the interview plan. |
| `job_interview_stage_ids` | array | No | Return only interview slots belonging to these job interview stage ids. Maximum 50 items. |

#### 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 Greenhouse job interview stages

**Slug:** `GREENHOUSE_LIST_JOB_INTERVIEW_STAGES`

List the job interview stages in your Greenhouse organization — the steps that make up each job's interview plan (e.g. Application Review, Phone Screen, Onsite, Offer), ordered within a job by sort_order. Use when you need a job's pipeline structure, such as building stage pickers, mapping application stages back to their interview plan, or reporting on how jobs are configured. Supports filtering by stage ids, job ids, active state, time ranges, and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only interview stage rows whose id is in this list (up to 50 ids). |
| `active` | boolean | No | Filter by whether the interview stage is active. true returns only active stages; false returns only deleted/inactive stages; omit to return both. |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return (e.g. id, name, job_id, sort_order). Omit to return all fields. |
| `job_ids` | array | No | Return only interview stages belonging to these job ids (up to 50). Use this to retrieve the interview plan for one or more specific jobs. |
| `per_page` | integer | No | Number of interview stage records to return per page (1-500). |
| `created_after` | string | No | Return interview stages created on or after this ISO-8601 date-time (created_at gte). |
| `updated_after` | string | No | Return interview stages last updated on or after this ISO-8601 date-time (updated_at gte). |
| `created_before` | string | No | Return interview stages created on or before this ISO-8601 date-time (created_at lte). |
| `updated_before` | string | No | Return interview stages last updated on or before this ISO-8601 date-time (updated_at lte). |

#### 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 Greenhouse job notes

**Slug:** `GREENHOUSE_LIST_JOB_NOTES`

List the free-form, organization-internal notes attached to jobs across your Greenhouse organization. Use when you need to read the internal notes recorded on jobs, optionally filtered by job, author, or created/updated time range. Supports cursor-based pagination for large result sets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only job note records whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `job_ids` | array | No | Return only job notes belonging to these job ids (up to 50 ids). Use this to read the internal notes attached to one or more specific jobs. |
| `per_page` | integer | No | Number of job note records to return per page (1-500). |
| `user_ids` | array | No | Return only job notes authored by these Greenhouse user ids (up to 50 ids). |
| `created_after` | string | No | Return job notes created on or after this ISO-8601 date-time (maps to the created_at gte filter). |
| `updated_after` | string | No | Return job notes last updated on or after this ISO-8601 date-time (maps to the updated_at gte filter). |
| `created_before` | string | No | Return job notes created on or before this ISO-8601 date-time (maps to the created_at lte filter). |
| `updated_before` | string | No | Return job notes last updated on or before this ISO-8601 date-time (maps to the updated_at lte filter). |

#### 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 Greenhouse job owners

**Slug:** `GREENHOUSE_LIST_JOB_OWNERS`

List the job owners across your Greenhouse organization. Use when you need to look up which recruiters, sourcers, and coordinators are assigned to jobs' hiring teams, or to filter those assignments by job, user, role type, or time range. Supports cursor-based pagination for large result sets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only job owner records whose id is in this list (up to 50 ids). |
| `type` | string ("sourcer" | "recruiter" | "coordinator") | No | Hiring-team role assigned to a job owner. |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `job_ids` | array | No | Return only job owner records belonging to these job ids (up to 50 ids). Use this to list the hiring team for one or more specific jobs. |
| `per_page` | integer | No | Number of job owner records to return per page (1-500). |
| `user_ids` | array | No | Return only job owner records for these Greenhouse user ids (up to 50 ids). |
| `created_after` | string | No | Return job owners created on or after this ISO-8601 date-time (maps to the created_at gte filter). |
| `updated_after` | string | No | Return job owners last updated on or after this ISO-8601 date-time (maps to the updated_at gte filter). |
| `created_before` | string | No | Return job owners created on or before this ISO-8601 date-time (maps to the created_at lte filter). |
| `updated_before` | string | No | Return job owners last updated on or before this ISO-8601 date-time (maps to the updated_at lte filter). |

#### 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 Greenhouse job posts

**Slug:** `GREENHOUSE_LIST_JOB_POSTS`

List the candidate-facing job posts in your Greenhouse organization. Use when you need to look up job post ids, titles, public URLs, application questions, or which board (external or internal) each post is published to, or to find posts for a given job via job_ids. A single job can have multiple posts; supports filtering, field selection, and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only job posts whose id is in this list (up to 50 ids). |
| `live` | boolean | No | When true, returns published posts whose job board is also live. When false, returns unpublished posts or posts on inactive boards. |
| `active` | boolean | No | Filter by deletion state. Defaults to true (only non-deleted posts); pass false to retrieve soft-deleted posts. |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of response fields to return (e.g. id, title, content). Omit to return all fields. Up to 50 items. |
| `job_ids` | array | No | Return only posts belonging to one of these parent job (requisition) ids (up to 50 ids). |
| `featured` | boolean | No | Filter by featured status on the internal job board. Only internal posts can be featured. |
| `internal` | boolean | No | When true, returns internal-board posts visible only to signed-in employees. When false, returns external posts. Omit to return both. |
| `per_page` | integer | No | Number of job post records to return per page (1-500). |
| `created_after` | string | No | Return only posts created at or after this ISO-8601 timestamp (maps to the created_at gte filter). |
| `job_board_ids` | array | No | Return only posts published to one of these job board ids (up to 50 ids). |
| `updated_after` | string | No | Return only posts updated at or after this ISO-8601 timestamp (maps to the updated_at gte filter). |
| `created_before` | string | No | Return only posts created at or before this ISO-8601 timestamp (maps to the created_at lte filter). |
| `updated_before` | string | No | Return only posts updated at or before this ISO-8601 timestamp (maps to the updated_at lte filter). |

#### 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 Greenhouse job post searchable locations

**Slug:** `GREENHOUSE_LIST_JOB_POST_SEARCHABLE_LOCATIONS`

List the searchable geographic locations attached to job posts in your Greenhouse organization. Use when you need the individual locations (formatted display string plus city, region, postal code, county, country, and latitude/longitude) for one or more job posts, or to map a downstream board identifier like Indeed's {job_post_id}_{id} back to a post and location. Filter with job_post_ids to scope to specific posts; supports field selection and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only searchable locations whose id is in this list (comma-separated list of ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of response fields to return (e.g. id, location, city). Omit to return all fields. |
| `per_page` | integer | No | Number of searchable-location records to return per page (1-500). |
| `job_post_ids` | array | No | Return only the searchable locations attached to these job posts (the job_post_id on each location); look them up via GET /v3/job_posts. |
| `created_after` | string | No | Return only locations created at or after this ISO-8601 timestamp (maps to the created_at gte filter). |
| `updated_after` | string | No | Return only locations updated at or after this ISO-8601 timestamp (maps to the updated_at gte filter). |
| `created_before` | string | No | Return only locations created at or before this ISO-8601 timestamp (maps to the created_at lte filter). |
| `updated_before` | string | No | Return only locations updated at or before this ISO-8601 timestamp (maps to the updated_at lte filter). |

#### 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 Greenhouse jobs

**Slug:** `GREENHOUSE_LIST_JOBS`

List the jobs (hiring plans) in your Greenhouse organization. Use when you need to look up job ids, names, statuses, department, office associations, or requisition ids, or to filter jobs by lifecycle status, time range, or requisition id. Supports cursor-based pagination for large result sets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only jobs whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `status` | string ("open" | "closed" | "draft") | No | Lifecycle status values accepted by the status filter parameter. |
| `per_page` | integer | No | Number of job records to return per page (1-500). |
| `created_after` | string | No | Return jobs created on or after this ISO-8601 date-time (maps to the created_at gte filter). |
| `updated_after` | string | No | Return jobs last updated on or after this ISO-8601 date-time (maps to the updated_at gte filter). |
| `created_before` | string | No | Return jobs created on or before this ISO-8601 date-time (maps to the created_at lte filter). |
| `requisition_id` | string | No | Return only jobs matching this requisition id string exactly. |
| `updated_before` | string | No | Return jobs last updated on or before this ISO-8601 date-time (maps to the updated_at lte filter). |

#### 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 Greenhouse notes

**Slug:** `GREENHOUSE_LIST_NOTES`

Tool to list the notes (free-form activity-feed entries) across a Greenhouse organization via the Harvest v3 API. Notes include manually added candidate notes, logged emails, system-generated activity, and interview feedback. Use when you need to enumerate or review notes for reporting or auditing, optionally filtering by creation/update date ranges and limiting returned fields. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Opaque pagination cursor taken from a previous response's Link header (rel="next"). When supplied, do not pass any other filter parameters; the cursor must be the only query parameter. |
| `fields` | array | No | Subset of note fields to return in each result (e.g. id, body, type, visibility). Omit to return all fields. Up to 50 values. |
| `per_page` | integer | No | Number of note records to return per page (1-500). |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse offers

**Slug:** `GREENHOUSE_LIST_OFFERS`

Tool to list the offers in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or search candidate offers for reporting, status tracking, or lookup, optionally filtering by ids, application/job/candidate/opening ids, status, custom field option, or creation/update/resolved/sent/start date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of offer IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of offer fields to return in each result. When omitted, all fields are returned. Maximum 50 items. |
| `status` | string ("Created" | "Accepted" | "Rejected" | "Deprecated") | No | Lifecycle status of a Greenhouse offer. |
| `job_ids` | array | No | List of job IDs to filter offers by. Maximum 50 items. |
| `sent_on` | object | No | Comparison operators for filtering by an ISO 8601 date (YYYY-MM-DD) field. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `starts_on` | object | No | Comparison operators for filtering by an ISO 8601 date (YYYY-MM-DD) field. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `opening_ids` | array | No | List of opening IDs to filter offers by. Maximum 50 items. |
| `resolved_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `current_only` | boolean | No | When true, returns only the latest version of each offer per application, excluding superseded (deprecated) versions. |
| `candidate_ids` | array | No | List of candidate IDs to filter offers by. Maximum 50 items. |
| `application_ids` | array | No | List of application IDs to filter offers by. Maximum 50 items. |
| `custom_field_option_id` | integer | No | Filter offers by a specific custom field option ID. |

#### 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 Greenhouse offices

**Slug:** `GREENHOUSE_LIST_OFFICES`

Tool to list the offices configured in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate recruiting locations for filtering, lookup, or scoping jobs and candidates, optionally filtering by ids, parent office, external_id, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of office IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of office fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `parent_id` | integer | No | Return only offices whose parent is this office id. Use to traverse the office tree one level at a time. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `external_id` | string | No | Return only the office whose external_id matches this value. Useful for HRIS-driven reconciliation. |

#### 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 Greenhouse openings

**Slug:** `GREENHOUSE_LIST_OPENINGS`

List the openings (individual headcount slots beneath jobs) in your Greenhouse organization. Use when you need to look up opening ids, their parent job_id, fill status, hired application_id, close reasons, or target start dates, or to filter openings by job, application, close reason, availability, or opened_at/closed_at windows. Supports cursor-based pagination for large result sets.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only openings whose id is in this list (up to 50 ids). |
| `open` | boolean | No | Filter by availability. True returns currently-available (open) openings; false returns closed openings. |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `job_ids` | array | No | Return only openings belonging to these parent job ids (up to 50 ids). |
| `per_page` | integer | No | Number of opening records to return per page (1-500). |
| `opening_id` | string | No | Return only openings matching this partner-supplied external opening_id string exactly. |
| `closed_after` | string | No | Return openings closed on or after this ISO-8601 date-time (maps to the closed_at gte filter). |
| `opened_after` | string | No | Return openings opened on or after this ISO-8601 date-time (maps to the opened_at gte filter). |
| `closed_before` | string | No | Return openings closed on or before this ISO-8601 date-time (maps to the closed_at lte filter). |
| `created_after` | string | No | Return openings created on or after this ISO-8601 date-time (maps to the created_at gte filter). |
| `opened_before` | string | No | Return openings opened on or before this ISO-8601 date-time (maps to the opened_at lte filter). |
| `updated_after` | string | No | Return openings last updated on or after this ISO-8601 date-time (maps to the updated_at gte filter). |
| `created_before` | string | No | Return openings created on or before this ISO-8601 date-time (maps to the created_at lte filter). |
| `updated_before` | string | No | Return openings last updated on or before this ISO-8601 date-time (maps to the updated_at lte filter). |
| `application_ids` | array | No | Return only openings filled by these application ids (up to 50 ids). Only filled openings have an application_id. |
| `close_reason_ids` | array | No | Return only openings closed with these close-reason ids (up to 50 ids). |
| `custom_field_option_id` | integer | No | Return only openings whose custom field has this custom field option id selected. |

#### 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 Greenhouse pay input ranges

**Slug:** `GREENHOUSE_LIST_PAY_INPUT_RANGES`

Tool to list the pay input ranges configured in a Greenhouse organization via the Harvest v3 API. Pay input ranges are the per-job-post minimum and maximum values for a pay component (e.g. base salary, bonus) referenced by a pay transparency rule. Use when you need to enumerate or look up the published pay ranges for job posts, optionally filtering by ids, pay_input_ids, job_post_ids, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of pay input range IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of pay input range fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `job_post_ids` | array | No | Filter to ranges attached to these job post IDs. Maximum 50 items. |
| `pay_input_ids` | array | No | Filter to ranges belonging to these pay input IDs (the compensation components, e.g. base salary). Maximum 50 items. |

#### 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 Greenhouse pay inputs

**Slug:** `GREENHOUSE_LIST_PAY_INPUTS`

Tool to list the pay inputs in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate the individual compensation components (e.g. Base Salary, Sign-on Bonus, Equity) that make up pay transparency rules, optionally filtering by ids, linked custom field ids, or creation/update date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of pay input IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of pay input fields to return in each result. When omitted, all fields are returned. Valid values: blurb, created_at, id, linked_custom_field_id, locked, priority, title, updated_at. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `linked_custom_field_ids` | array | No | List of linked custom job field IDs to filter pay inputs by. Maximum 50 items. |

#### 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 Greenhouse prospect pools

**Slug:** `GREENHOUSE_LIST_PROSPECT_POOLS`

Tool to list the prospect pools configured in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate the organization-defined collections of prospects that are not yet attached to a specific job, optionally filtering by ids, department, office, job, active status, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of prospect pool IDs to filter by. Maximum 50 items. |
| `active` | boolean | No | Filter by visibility status. Pass true for active prospect pools or false for inactive ones. Omit to return both. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of prospect pool fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `job_ids` | array | No | Return only prospect pools associated with these job IDs. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `office_ids` | array | No | Return only prospect pools associated with these office IDs. Maximum 50 items. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `department_ids` | array | No | Return only prospect pools associated with these department IDs. Maximum 50 items. |

#### 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 Greenhouse prospect pool stages

**Slug:** `GREENHOUSE_LIST_PROSPECT_POOL_STAGES`

Tool to list the prospect pool stages configured in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate the buckets recruiters use to track where each passive prospect sits within a nurture pool, optionally filtering by stage ids, prospect_pool_ids, fields, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of prospect pool stage IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor token for pagination. Pass the opaque cursor value extracted from the previous page's Link response header (either the raw token or the full next-page URL — both are accepted). When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of stage fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `prospect_pool_ids` | array | No | List of prospect pool IDs to scope results to. Only stages belonging to these pools are returned. Maximum 50 items. |

#### 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 Greenhouse referrers

**Slug:** `GREENHOUSE_LIST_REFERRERS`

List the referrers in your Greenhouse organization. Use when you need to look up the people credited with bringing candidates into the hiring pipeline, resolve a referrer id, or map referrers to their associated Greenhouse user ids. Supports filtering by ids, user_ids, and created/updated date ranges, field selection, and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only referrer records whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return (e.g. id, user_id, name). Omit to return all fields. |
| `per_page` | integer | No | Number of referrer records to return per page (1-500). |
| `user_ids` | array | No | Return only referrer records made by these Greenhouse user ids (up to 50 ids). |
| `created_after` | string | No | Return only referrers created at or after this ISO-8601 timestamp (inclusive lower bound). |
| `updated_after` | string | No | Return only referrers updated at or after this ISO-8601 timestamp (inclusive lower bound). |
| `created_before` | string | No | Return only referrers created at or before this ISO-8601 timestamp (inclusive upper bound). |
| `updated_before` | string | No | Return only referrers updated at or before this ISO-8601 timestamp (inclusive upper bound). |

#### 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 Greenhouse rejection details

**Slug:** `GREENHOUSE_LIST_REJECTION_DETAILS`

Tool to list the per-application rejection records in a Greenhouse organization via the Harvest v3 API. Use when you need to audit or report on which applications were rejected, including who rejected them, when, the rejection reason, the linked rejection note, and any rejection-question custom field answers. Filter by application or rejection reason and page through results using the cursor from the previous response.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only rejection details whose record id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header (the raw token or the full next-page URL are both accepted). When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of fields to return (e.g. id, application_id, rejection_reason_id). Omit to return all fields. Up to 50 fields. |
| `per_page` | integer | No | Number of rejection detail records to return per page (1-500). |
| `created_after` | string | No | Return rejection details created on or after this ISO-8601 date-time (created_at gte). |
| `updated_after` | string | No | Return rejection details last updated on or after this ISO-8601 date-time (updated_at gte). |
| `created_before` | string | No | Return rejection details created on or before this ISO-8601 date-time (created_at lte). |
| `updated_before` | string | No | Return rejection details last updated on or before this ISO-8601 date-time (updated_at lte). |
| `application_ids` | array | No | Return only rejection details belonging to these application ids (up to 50). |
| `rejection_reason_ids` | array | No | Return only rejection details recorded with one of these rejection reason ids (up to 50). These reference /v3/rejection_reasons rows. |
| `custom_field_option_id` | integer | No | Return only rejection details whose rejection-question custom field value selects this single- or multi-select option id. |

#### 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 Greenhouse rejection reasons

**Slug:** `GREENHOUSE_LIST_REJECTION_REASONS`

Tool to list the rejection reasons configured in a Greenhouse organization via the Harvest v3 API. Use when you need the organization-defined dictionary of outcomes recorded when an application is rejected, for lookup or reporting, optionally including Greenhouse's built-in default reasons. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Cursor token for pagination. Pass the opaque cursor value extracted from the previous page's Link response header (either the raw token or the full next-page URL — both are accepted). When supplied, do not pass any other filter parameters. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `include_defaults` | boolean | No | When set to true, also returns Greenhouse's built-in default rejection reasons in addition to the organization's custom reasons. |

#### 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 Greenhouse scorecard question options

**Slug:** `GREENHOUSE_LIST_SCORECARD_QUESTION_OPTIONS`

Tool to list scorecard question options - the multiple-choice values shown to interviewers for single_select and multi_select scorecard questions - in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or look up the answer choices configured on scorecard questions, optionally filtering by option ids, parent scorecard question ids, active status, or creation/update date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of scorecard question option IDs to filter by. Maximum 50 items. |
| `active` | boolean | No | Filter by selectable status. true returns only active (selectable) options, false returns only removed options, and omitting it returns both. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of option fields to return in each result. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `scorecard_question_ids` | array | No | List of parent scorecard question IDs to return options for. Only single_select and multi_select questions carry options. Maximum 50 items. |

#### 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 Greenhouse scorecards

**Slug:** `GREENHOUSE_LIST_SCORECARDS`

Tool to list the scorecards (per-interview evaluations) in a Greenhouse organization via the Harvest v3 API. Use when you need to enumerate or search interview scorecards for reporting, candidate evaluation review, or lookup, optionally filtering by ids, interview kit / submitter / application / interviewer ids, status, or creation/update/interviewed/submitted date ranges. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of scorecard IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of scorecard fields to return in each result. When omitted, all fields are returned. Maximum 50 items. |
| `status` | string ("draft" | "complete") | No | Lifecycle status of a Greenhouse scorecard. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `submitted_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `submitter_ids` | array | No | List of submitter user IDs to filter scorecards by. Maximum 50 items. |
| `interviewed_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `application_ids` | array | No | List of application IDs to filter scorecards by. Maximum 50 items. |
| `interviewer_ids` | array | No | List of interviewer user IDs to return scorecards for. Maximum 50 items. |
| `interview_kit_ids` | array | No | List of interview kit IDs to filter scorecards by. Maximum 50 items. |

#### 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 Greenhouse sources

**Slug:** `GREENHOUSE_LIST_SOURCES`

Tool to list the sources configured in a Greenhouse organization via the Harvest v3 API. Sources are the organization-defined dictionary of channels through which candidates enter the pipeline. Use when you need to enumerate or look up candidate sources for filtering, reporting, or attributing applications, optionally filtering by ids or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | List of source IDs to filter by. Maximum 50 items. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of source fields to return in the response. When omitted, all fields are returned. Maximum 50 items. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |

#### 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 Greenhouse tracking links

**Slug:** `GREENHOUSE_LIST_TRACKING_LINKS`

Tool to list the tracking links configured in a Greenhouse organization via the Harvest v3 API. Tracking links are unique short URLs that attribute applying candidates to a source, referrer, job, job post, or job board. Use when you need to enumerate tracking links for reporting or attribution, optionally filtering by ids, job/source/referrer/board, related post, or creation/update timestamps. Results are paginated; pass the cursor from the previous response to fetch the next page.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only tracking links whose id is in this list. Maximum 50 ids. |
| `token` | string | No | Retrieve the single tracking link that exactly matches this short-URL token. |
| `cursor` | string | No | Cursor link for pagination, taken from the previous page's response header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Subset of tracking link fields to return in the response. When omitted, all fields are returned. |
| `job_ids` | array | No | Return only tracking links associated with these job ids. Maximum 50 ids. |
| `per_page` | integer | No | Number of results per page. Minimum 1, maximum 500. |
| `created_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `source_ids` | array | No | Return only tracking links associated with these source ids. Maximum 50 ids. |
| `updated_at` | object | No | Comparison operators for filtering by an ISO 8601 date-time field. |
| `job_post_ids` | array | No | Return only tracking links associated with these job post ids. Maximum 50 ids. |
| `referrer_ids` | array | No | Return only tracking links credited to these referrer (employee) ids. Maximum 50 ids. |
| `job_board_ids` | array | No | Return only tracking links associated with these job board ids. Maximum 50 ids. |
| `related_post_ids` | array | No | Return only tracking links associated with these external related-post ids. Maximum 50 ids. |
| `related_post_type` | string | No | Return only tracking links whose related post is of this polymorphic class name (e.g. 'SocialMediaPost'). |

#### 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 Greenhouse user job permissions

**Slug:** `GREENHOUSE_LIST_USER_JOB_PERMISSIONS`

List the per-user, per-job access grants in your Greenhouse organization, each pairing a user with a Job Admin role on a specific job. Use when you need to audit which users have Job Admin access to which jobs, or to resolve the user_id, job_id, and role_id behind a job-level permission. Returns a flat list of grants with cursor-based pagination; this endpoint does not support user or job filters, so paginate to retrieve all records.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor taken from a previous response's next_cursor value (parsed from the Link header). When supplied, do not pass any other parameter. |
| `per_page` | integer | No | Number of user job permission records to return per page (1-500). |

#### 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 Greenhouse users

**Slug:** `GREENHOUSE_LIST_USERS`

List the user accounts (recruiters, hiring managers, interviewers, coordinators, and site admins) in your Greenhouse organization. Use when you need to look up user ids, emails, activation state, or office/department assignments, or to resolve a user by primary_email, employee_id, or external office/department id. Supports filtering, field selection, and cursor-based pagination; service accounts are excluded unless show_service_accounts is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ids` | array | No | Return only users whose id is in this list (up to 50 ids). |
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return (e.g. id, name, primary_email, deactivated). Omit to return all fields. |
| `per_page` | integer | No | Number of user records to return per page (1-500). |
| `agency_ids` | array | No | Return only users belonging to one of these recruiting agency ids (up to 50). |
| `office_ids` | array | No | Return only users assigned to one of these office ids (up to 50). |
| `deactivated` | boolean | No | Filter by activation state. true returns only deactivated users; false returns only active users; omit to return both. |
| `employee_ids` | array | No | Return only users whose external employee_id is in this list (up to 50). Useful for HRIS-driven sync. |
| `primary_email` | string | No | Return only the user whose primary_email matches this address exactly. |
| `department_ids` | array | No | Return only users assigned to one of these department ids (up to 50). |
| `external_office_id` | string | No | Return only users assigned to the office whose external_id matches this value. |
| `interviewer_tag_ids` | array | No | Return only users who have one of these interviewer tag ids assigned (up to 50). |
| `linked_candidate_ids` | array | No | Return only users linked to one of these candidate ids (up to 50). |
| `show_service_accounts` | boolean | No | If true, include integration/service-account users (ISUs) in the result set. Defaults to false, which omits them. |
| `custom_field_option_id` | integer | No | Return only users whose custom field value selects this custom_field_option id. |
| `external_department_id` | string | No | Return only users assigned to the department whose external_id matches this value. |

#### 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 |

### Merge Greenhouse candidates

**Slug:** `GREENHOUSE_MERGE_CANDIDATES`

Tool to merge two candidate profiles in Greenhouse via the Harvest v3 API, collapsing a secondary (duplicate) candidate into a primary one. Use when you have identified duplicate candidate records and want to consolidate them into a single profile. WARNING: this operation is irreversible — the secondary candidate ceases to exist after the merge and its id will no longer be returned by the API, so verify both ids carefully before calling.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the primary candidate. This candidate survives the merge and becomes the combined record. |
| `secondary_candidate_id` | integer | Yes | The id of the secondary (duplicate) candidate that is collapsed into the primary. This candidate ceases to exist after the merge completes and its id will no longer be returned by the API. |

#### 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 |

### Move Greenhouse application

**Slug:** `GREENHOUSE_MOVE_APPLICATION`

Tool to move a Greenhouse application to a different interview stage via the Harvest v3 API. Supports three move modes: (1) advance to next stage — omit both to_stage_id and to_job_id; (2) same-job move — supply to_stage_id for an explicit destination stage on the same job; (3) cross-job transfer — supply to_job_id to transfer the candidate to another job. The current stage must always be supplied as from_stage_id (Greenhouse rejects the move if it does not match the application's present stage). Only active applications can be moved.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the application to move to a different interview stage. |
| `to_job_id` | integer | No | The id of a different job to transfer the application to. When supplied, Greenhouse moves the candidate to that job. Mutually exclusive with to_stage_id in most workflows. |
| `to_stage_id` | integer | No | The id of the job interview stage the application should be moved to within the same job. When omitted (and to_job_id is also omitted), Greenhouse automatically advances the application to the next stage. |
| `from_stage_id` | integer | Yes | The id of the job interview stage the application is currently in. Required as a guard: Greenhouse rejects the move if this does not match the application's present stage, preventing stale or duplicate move requests. |
| `email_from_user_id` | integer | No | The id of the Greenhouse user whose email address should appear as the sender on any notifications sent as a result of this move. |

#### 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 |

### Reject Greenhouse application

**Slug:** `GREENHOUSE_REJECT_APPLICATION`

Tool to reject an existing Greenhouse application via the Harvest v3 API, recording the rejection reason and optionally notifying the candidate. Use when you need to mark an active application as rejected and capture why. This is a destructive state transition: the application leaves the active pipeline and moving it back requires the separate unreject endpoint, so reject only when you are sure. Only applications in the active state can be rejected.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the application to reject. |
| `notes` | string | No | Free-form notes explaining why the application was rejected. Added to the application's activity feed. Note: some Greenhouse v3 tenants reject this as an unsupported property. |
| `rejection_email` | object | No | Optional rejection-notification email to send to the candidate. |
| `rejection_reason_id` | integer | Yes | The id of the rejection reason to record. Required; obtain valid ids from the rejection reasons list endpoint (default reasons require include_defaults=true). |

#### 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 |

### Replace Greenhouse approver

**Slug:** `GREENHOUSE_REPLACE_APPROVER`

Tool to swap one approver in a Greenhouse approver group for another user via the Harvest v3 API, without rebuilding the rest of the approval flow. Use when an existing approver should be replaced by a different user while leaving the other approvers and the flow ordering intact. Only approvers in unresolved groups may be replaced; if the group is already due, the new approver is notified that action is required.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Id of the approver group in which to swap an approver. Only approvers in unresolved groups may be replaced. |
| `add_user_id` | integer | Yes | Greenhouse user id of the user to add as the replacement approver. If the group is already due, this user is notified that action is required. |
| `on_behalf_of` | string | No | Greenhouse user id (sent as the On-Behalf-Of header) of the user issuing this request, recorded for auditing. This user must have access to the approval flow. Greenhouse requires this header for write operations; many tenants reject the request without it. |
| `remove_user_id` | integer | Yes | Greenhouse user id of the existing approver to remove from the group. |

#### 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 |

### Request Greenhouse approvals

**Slug:** `GREENHOUSE_REQUEST_APPROVALS`

Tool to start an existing pending Greenhouse approval flow by emailing its initial approver(s) via the Harvest v3 API. Use when an approval flow has been created and is awaiting kickoff, and you need to begin the approval process so the first approver group moves from "waiting" to "due". The flow must be in a startable (pending) state; Greenhouse rejects the request if the on-behalf-of user cannot see the hiring plan or the flow cannot be started.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the pending approval flow to start. Greenhouse will email the flow's initial approver group, moving the first group from 'waiting' to 'due'. |

#### 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 |

### Revoke Greenhouse user permissions

**Slug:** `GREENHOUSE_REVOKE_USER_PERMISSIONS`

Revoke a Greenhouse user's site admin permissions via the Harvest v3 API, reverting them to a Basic user. Use when you need to strip a user of elevated administrative privileges, for example after a role change or to enforce least-privilege access. This downgrades the user's permission level; their account, history, and ability to sign in are retained. Warning: this is a destructive privilege change that takes effect immediately - to restore site admin access the permissions must be granted again through Greenhouse.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the user whose site admin permissions should be revoked. Revoking site admin access reverts the user to a Basic user, removing their elevated administrative privileges across Greenhouse. |

#### 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 Greenhouse applications

**Slug:** `GREENHOUSE_SEARCH_APPLICATIONS`

Search applications through Greenhouse's full-text candidate search index with richer pipeline filters than the plain list endpoint. Use when you need to find applications by a free-text candidate query or by job/department/office/user-role filters (recruiter, coordinator, hiring manager) and pipeline stage status, returning application ids, statuses, stages, and the candidate/job ids tied to each. Supports field selection and cursor-based pagination.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Pagination cursor taken from a previous response's Link header. When supplied, do not pass any other filter parameters. |
| `fields` | array | No | Comma-separated subset of fields to return (e.g. id, status, candidate_id). Omit to return all fields (up to 50). |
| `search` | string | No | Free-text query matched against the candidate full-text search index (name, email, and related candidate text). |
| `job_ids` | array | No | Return only applications currently attached to these job (hiring plan) ids (up to 50). |
| `per_page` | integer | No | Number of application records to return per page (1-100). |
| `prospect` | boolean | No | Filter by application kind. true returns only prospect applications; false returns only non-prospect applications; omit to return both. |
| `office_id` | integer | No | Return only applications on jobs in this office. |
| `stage_ids` | array | No | Return only applications whose current interview pipeline stage matches one of these ids (up to 50). |
| `job_status` | string ("all" | "open" | "closed" | "draft") | No | Job (hiring plan) status values accepted by the job_status filter. |
| `source_ids` | array | No | Return only applications attributed to these source ids (up to 50). |
| `stage_name` | array | No | Return only applications whose current stage name matches one of these names exactly (case sensitive, up to 50). |
| `job_post_ids` | array | No | Return only applications submitted through these job post ids (up to 50). |
| `recruiter_id` | integer | No | Return only applications on jobs with this recruiter (a user id). |
| `referrer_ids` | array | No | Return only applications attributed to these referrer ids (up to 50). These are referrer ids, not user ids. |
| `stage_status` | string ("rejected" | "paused" | "completed" | "hired" | "in_process") | No | Pipeline stage status values accepted by the stage_status filter. |
| `candidate_ids` | array | No | Return only applications belonging to these candidate ids (up to 50). |
| `department_id` | integer | No | Return only applications on jobs in this department. |
| `coordinator_id` | integer | No | Return only applications on jobs with this coordinator (a user id). |
| `candidate_tag_id` | integer | No | Return only applications whose candidate carries this candidate tag id. |
| `prospect_pool_id` | integer | No | Return only prospect applications in this prospect pool. |
| `hiring_manager_id` | integer | No | Return only applications on jobs with this hiring manager (a user id). |

#### 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 Greenhouse application

**Slug:** `GREENHOUSE_UPDATE_APPLICATION`

Tool to update attribution and metadata on an existing Greenhouse application via the Harvest v3 API. Use when you need to change an application's source, referrer, recruiter, coordinator, prospect pool/stage, rejection or creation date, or custom field values without moving its interview stage. Only the fields you supply are modified; omitted fields are left untouched. Stage transitions (move, reject, unreject, hire, convert) require their own dedicated endpoints.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the application to update. |
| `source_id` | integer | No | The id of the attribution source (job board, event, referral, etc.) to credit this application to. |
| `created_at` | string | No | ISO 8601 date (or date-time) to record as the application's creation date. Useful when correcting imported applications. |
| `referrer_id` | integer | No | The id of the referrer to credit for this application. Not necessarily a Greenhouse user. |
| `rejected_at` | string | No | ISO 8601 date (or date-time) to record as the application's rejection date. |
| `recruiter_id` | integer | No | The id of the Greenhouse user to assign as recruiter on this application. |
| `custom_fields` | array | No | Custom field values to update on the application. Each entry must identify the field via exactly one of name_key or custom_field_id. |
| `coordinator_id` | integer | No | The id of the Greenhouse user to assign as coordinator on this application. |
| `prospect_pool_id` | integer | No | The id of the prospect pool for this prospect application. Only meaningful when the application is a prospect. |
| `prospect_stage_id` | integer | No | The id of the stage within the prospect pool. Only meaningful when the application is a prospect. |

#### 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 Greenhouse approval flow

**Slug:** `GREENHOUSE_UPDATE_APPROVAL_FLOW`

Tool to toggle whether a Greenhouse approval flow resolves sequentially or in parallel, via the Harvest v3 API. Use when you need to switch an existing approval flow between in-order tiers (sequential=true) and all-at-once tiers (sequential=false). The flow must still be pending; the API rejects the change once the flow has been approved or rejected.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Id of the approval flow to update. The flow must still be in pending status for the change to be accepted. |
| `sequential` | boolean | Yes | When true, approver groups resolve one tier at a time in sort_order; when false, all groups are activated in parallel. |

#### 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 Greenhouse blocked spam source

**Slug:** `GREENHOUSE_UPDATE_BLOCKED_SPAM_SOURCE`

Tool to update the note on an existing entry in the organization's spam blocklist via the Greenhouse Harvest v3 API. Use when you need to change or clear the explanatory note attached to a blocked IP address, CIDR range, email address, or email domain. Only the note is changed; the blocked value and its source_type remain untouched.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the blocked spam source to update. |
| `note` | string | Yes | The new free-text note describing why this source is blocked. This replaces any existing note on the entry. Pass an empty string to clear the note. |

#### 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 Greenhouse candidate

**Slug:** `GREENHOUSE_UPDATE_CANDIDATE`

Tool to update an existing candidate's profile in Greenhouse via the Harvest v3 API. Use when you need to change a candidate's name, company, title, contact details, tags, privacy, or custom fields. Only the fields you supply are modified; array fields (phone numbers, addresses, emails, websites, social media, tags, linked user ids, custom fields) replace their existing collection wholesale, so send the full desired list rather than a delta.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the candidate to update. |
| `tags` | array | No | List of tag names to assign to the candidate. Replaces the candidate's existing tags wholesale. Tag names that don't yet exist on the organization are created on the fly. |
| `title` | string | No | Candidate's current job title. Max 255 characters. |
| `company` | string | No | Candidate's current company affiliation. |
| `addresses` | array | No | List of physical address entries. Replaces the candidate's existing addresses wholesale. |
| `can_email` | boolean | No | Whether the candidate can be emailed. |
| `last_name` | string | No | Candidate's last name. Max 255 characters. |
| `time_zone` | string | No | Candidate's time zone. Must be one of Greenhouse's accepted lower-case time zone names (e.g. 'pacific time (us & canada)', 'eastern time (us & canada)', 'london', 'utc'). |
| `first_name` | string | No | Candidate's first name. Max 255 characters. |
| `is_private` | boolean | No | If true, restricts the candidate to users with View Private Candidates access. Defaults to false. |
| `custom_fields` | array | No | List of custom field values to set on the candidate. Replaces the candidate's existing custom fields wholesale. Each entry must supply either name_key or custom_field_id together with a value. |
| `phone_numbers` | array | No | List of phone number entries. Replaces the candidate's existing phone numbers wholesale. |
| `preferred_name` | string | No | Candidate's preferred/alternative name. Max 255 characters. |
| `email_addresses` | array | No | List of email address entries. Replaces the candidate's existing email addresses wholesale. |
| `linked_user_ids` | array | No | List of Greenhouse user ids to associate with this candidate. Replaces the candidate's existing linked user ids wholesale. |
| `website_addresses` | array | No | List of website URL entries. Replaces the candidate's existing website addresses wholesale. |
| `social_media_addresses` | array | No | List of social media profile entries. Replaces the candidate's existing social media addresses wholesale. |

#### 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 Greenhouse custom field

**Slug:** `GREENHOUSE_UPDATE_CUSTOM_FIELD`

Tool to edit the definition of an existing Greenhouse custom field via the Harvest v3 API. Use when you need to rename a custom field, change its description, toggle flags such as private/required/api_only, adjust its office/department scope, replace its select options, or set its template token. Only the fields you supply are changed; the field_type and value_type are immutable and cannot be modified.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the custom field to update. |
| `name` | string | No | New display name for the custom field. Omit to leave the name unchanged. |
| `private` | boolean | No | Whether the field is private (visible only to users with the appropriate permission). Offer fields are always private. |
| `api_only` | boolean | No | Whether the field can only be updated through the API (not the Greenhouse UI). Requires the Harvest-only Custom Fields feature to be enabled for the organization. |
| `required` | boolean | No | Whether the field must be filled in before the associated object can be saved. |
| `description` | string | No | New description for the custom field. Pass an empty string to clear it, or omit to leave it unchanged. |
| `require_approval` | boolean | No | Whether changing this field triggers a re-approval. Applies to job and opening fields only. |
| `template_token_string` | string | No | Token used to reference this field in email and offer templates. Set or change it on an existing field. |
| `expose_in_job_board_api` | boolean | No | Whether the field is included in the Job Board API responses. Applies to job fields only. |

#### 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 Greenhouse custom field option

**Slug:** `GREENHOUSE_UPDATE_CUSTOM_FIELD_OPTION`

Tool to edit the display label, sort order, or external id of an existing custom field option via the Greenhouse Harvest v3 API. Use when you need to rename a selectable option, reorder it relative to the field's other options, or set/change its external id without recreating it. Supply the option id plus only the attributes you want to change; omitted attributes are left untouched.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Id of the existing custom field option to update. This is the option id (not the parent custom_field id). Required. |
| `name` | string | No | New display label for the option (e.g. 'Other'). Omit to leave the label unchanged; must be non-blank when supplied. |
| `sort_order` | integer | No | Integer controlling where this option appears relative to the field's other options. Lower values are shown first. Omit to leave the order unchanged. |
| `external_id` | string | No | Stable identifier supplied by the customer or an external HRIS for cross-system reconciliation of this option. Omit to leave it unchanged. |

#### 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 Greenhouse department

**Slug:** `GREENHOUSE_UPDATE_DEPARTMENT`

Tool to update an existing Greenhouse department via the Harvest v3 API. Use when you need to rename a department, set or clear its external_id, or reposition it within the department tree by changing its parent. Only the fields you supply are changed; omitted fields are left untouched.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the department to update. |
| `name` | string | Yes | New display name for the department (e.g. 'Engineering', 'Sales'). Required. |
| `parent_id` | integer | No | Id of the department to move this department under, repositioning it in the department tree. Omit to leave the parent unchanged. |
| `external_id` | string | No | Stable identifier supplied by the customer or HRIS for cross-system reconciliation. Pass a new value to set it, or an empty string to clear it. Omit to leave it unchanged. |

#### 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 Greenhouse interview

**Slug:** `GREENHOUSE_UPDATE_INTERVIEW`

Tool to update a scheduled Greenhouse interview via the Harvest v3 API. Use when you need to change a scheduled interview's start/end time, location, video conferencing URL, external calendar event id, or reassign the interviewer panel. Only the fields you supply are modified; however, when interviewers is provided it REPLACES the existing panel wholesale rather than merging. This endpoint updates only the Greenhouse record; organizations using Google Calendar or Outlook should edit calendar events directly and let integrations synchronize.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the scheduled interview to update. |
| `ends_at` | string | No | Interview end timestamp in ISO 8601 format. |
| `location` | string | No | Free-form text describing the interview location, room, address, or meeting URL (max 255 chars). |
| `starts_at` | string | No | Interview start timestamp in ISO 8601 format. |
| `interviewers` | array | No | Panel member list. When provided, this REPLACES the existing interviewer list wholesale (not a partial update). Each entry must include response_status and identify the interviewer via exactly one of user_id, email, or employee_id. |
| `external_event_id` | string | No | External calendar event identifier used to associate this interview with a calendar event (max 255 chars). |
| `video_conferencing_url` | string | No | Video conferencing join link for the interview (max 255 chars). Pass an empty string to clear it. |

#### 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 Greenhouse job

**Slug:** `GREENHOUSE_UPDATE_JOB`

Tool to update an existing Greenhouse job's editable fields via the Harvest v3 API. Use when you need to modify a job's title, notes, requisition id, office/department assignments, or custom field values. Only the keys you supply are changed; omitted fields are left untouched, and collection fields (office_ids, external_office_ids, custom_fields) replace the existing collection wholesale rather than merging.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse id of the job to update. |
| `name` | string | No | Internal job title displayed to the hiring team in Greenhouse. |
| `notes` | string | No | Internal HTML notes for the hiring team. Replaces the existing value when supplied. |
| `anywhere` | boolean | No | If true, marks the job as remote-anywhere and clears office_ids. Mutually exclusive with office_ids and external_office_ids. |
| `office_ids` | array | No | Replace the job's office assignments. Send the full desired list (not a delta). Mutually exclusive with external_office_ids and anywhere: true. |
| `custom_fields` | array | No | Values to set on this job's custom fields. Replaces the existing collection wholesale (not a delta merge). Each entry must supply either name_key or custom_field_id. |
| `department_id` | integer | No | Set the job's department by Greenhouse id. Mutually exclusive with external_department_id. |
| `requisition_id` | string | No | Partner-supplied external requisition identifier. Pass an empty string to clear. |
| `external_office_ids` | array | No | Replace the job's office assignments using partner-supplied office external_id values. Mutually exclusive with office_ids. |
| `how_to_sell_this_job` | string | No | Internal selling-points note for recruiters pitching the role. |
| `external_department_id` | string | No | Set the job's department by partner-supplied external_id. Mutually exclusive with department_id. |
| `team_and_responsibilities` | string | No | Internal description of the team and the role's responsibilities. |

#### 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 Greenhouse job note

**Slug:** `GREENHOUSE_UPDATE_JOB_NOTE`

Update an existing Greenhouse job note, identified by its id, via the Harvest v3 API. Use when you need to revise the body text or change the access level (visibility) of a note that is already attached to a job. Only the fields you supply are changed; omitted fields keep their current values.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The Greenhouse Harvest id of the job note to update. This is the id of the job note itself (returned when the job note was created or listed), not the id of the job it is attached to. |
| `body` | string | No | New free-text body for the job note. Newline characters (\n) are stored verbatim and rendered as line breaks in the Greenhouse UI. Omit to leave the existing body unchanged. |
| `visibility` | string ("privately_visible" | "admin_only_visible") | No | Who can see a job note in Greenhouse.  privately_visible is restricted to users with permission to see private job notes, and admin_only_visible is restricted to Job Admins and Site Admins. |

#### 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 Greenhouse office

**Slug:** `GREENHOUSE_UPDATE_OFFICE`

Tool to update an existing office for the organization via the Greenhouse Harvest v3 API. Use when you need to rename an office, change its location, re-parent it, set its primary internal contact, or set its external identifier. The name field is required; location, parent_id, external_parent_id, external_id, primary_in_house_contact_user_id, and on_behalf_of are optional and only applied when supplied.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Greenhouse identifier of the office to update. Required and sent as a path parameter. |
| `name` | string | Yes | New display name for the office. Required by the Greenhouse API. Must be unique within the organization and less than 255 characters. |
| `location` | string | No | Free-form text representation of the office's geographic location. Not geo-located by Greenhouse. |
| `parent_id` | integer | No | Office id to nest this office under as a child. Requires the Advanced or Expert package. Mutually exclusive with external_parent_id. |
| `external_id` | string | No | Partner-supplied external identifier for the office, used for cross-system reconciliation. Expert package only. Must be unique within the organization. |
| `on_behalf_of` | string | No | Greenhouse user id of the user performing this action, sent as the On-Behalf-Of request header. Required by Greenhouse for write operations for auditing purposes. |
| `external_parent_id` | string | No | External id of the parent office, used as an alternative to parent_id. Expert package only. Mutually exclusive with parent_id. |
| `primary_in_house_contact_user_id` | integer | No | Id of the Greenhouse user to set as the office's primary internal contact. When provided, this user will be listed as the primary in-house contact for the office. |

#### 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 Greenhouse opening

**Slug:** `GREENHOUSE_UPDATE_OPENING`

Tool to edit an existing opening (headcount slot) on a Greenhouse job via the Harvest v3 API, or close/reopen it. Use when you need to change an opening's external opening_id, update its custom field values, or set its status to closed (optionally with a close_reason_id) or back to open. Only the fields you supply are changed; closing the last open opening on a job closes its hiring plan.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Numeric Greenhouse id of the opening to edit. This is the immutable internal id, not the free-text opening_id. |
| `status` | string ("open" | "closed") | No | Target lifecycle status for an opening when editing it. |
| `opening_id` | string | No | New partner-supplied external identifier for the opening (a free-form string, may be blank, max 255 characters). Changing this may re-trigger approvals depending on the job's state. |
| `custom_fields` | array | No | Custom field values to update on the opening. Each entry identifies a field by id or name_key and supplies the new value. Updating a custom field may reset official job approvals depending on the field's settings. |
| `close_reason_id` | integer | No | Numeric id of the close reason to record. Only valid when status is 'closed'; supplying it without closing returns an error. |
| `target_start_on` | string | No | Target start date for a hire filling this opening, in ISO 8601 date format (YYYY-MM-DD). Pass null to clear. |

#### 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 Greenhouse rejection detail

**Slug:** `GREENHOUSE_UPDATE_REJECTION_DETAIL`

Tool to patch the rejection reason and/or rejection-question custom field answers on a rejected application's rejection detail record via the Greenhouse Harvest v3 API. Use when you need to correct or change why an application was rejected after the rejection has already been recorded. Only the fields you supply are modified; the application must already be in a rejected state for this to succeed.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | Id of the rejection detail record to update. This is the rejection detail's own id (from /v3/rejection_details), not the application id. |
| `custom_fields` | array | No | Array of custom field entries to update on the rejection detail. Each entry identifies a field by id, name, or name_key, and supplies the new value. Only the listed fields are modified; omit this param to leave all existing custom field answers unchanged. |
| `rejection_reason_id` | integer | No | New rejection reason id to set on the rejected application (references a /v3/rejection_reasons row). Omit to leave the existing reason unchanged. |

#### 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 Greenhouse user

**Slug:** `GREENHOUSE_UPDATE_USER`

Tool to update an existing user's profile in Greenhouse via the Harvest v3 API. Use when you need to change a user's name, employee id, office or department assignments, or custom fields. Only the fields you supply are modified; array fields (office_ids, department_ids, and their external variants, plus custom_fields) replace their existing collection wholesale, and the primary email address cannot be changed through this endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `id` | integer | Yes | The id of the user to update. |
| `last_name` | string | No | User's last name. Cannot be blank if supplied. Max 255 characters. |
| `first_name` | string | No | User's first name. Cannot be blank if supplied. Max 255 characters. |
| `office_ids` | array | No | Ids of the offices to assign to the user. Replaces the user's existing office assignments wholesale. |
| `employee_id` | string | No | Partner-supplied external employee identifier (e.g. an HRIS id). Send an empty string to clear it. |
| `custom_fields` | array | No | List of custom field values to set on the user. Replaces the user's existing custom fields wholesale. Each entry must supply either name_key or custom_field_id together with a value. |
| `department_ids` | array | No | Ids of the departments to assign to the user. Replaces the user's existing department assignments wholesale. |
| `external_office_ids` | array | No | External ids of the offices to assign to the user. Alternative to office_ids; replaces the user's existing office assignments wholesale. |
| `external_department_ids` | array | No | External ids of the departments to assign to the user. Alternative to department_ids; replaces the user's existing department assignments wholesale. |

#### 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 |
