# Greenhouse — MCP server on mcp.ai > Connect your Greenhouse account and use 134 tools for talent and recruitment straight from your AI agent. Connect in one click, no API key needed. Applicant tracking and recruiting software to optimize your entire recruiting process. By: mcp.ai · official Page: https://mcp.ai/greenhouse ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_greenhouse?ms=1787291340000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/greenhouse/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/greenhouse/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/greenhouse/skill.md Postman collection (v2.1): https://mcp.ai/greenhouse/postman.json ## Tools - greenhouse_activate_user(id: integer) — 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, fo - greenhouse_anonymize_candidate(id: integer, fields: string[]) — 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 - greenhouse_apply_candidate_tag(candidate_id: integer, candidate_tag_id: integer) — 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 dict - greenhouse_bulk_create_blocked_spam_sources(data: object[], callback_url?: string, on_behalf_of?: string) — 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 - greenhouse_bulk_create_custom_field_options(data: object[]) — 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 - greenhouse_bulk_create_openings(data: object[], callback_url?: string) — 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 Greenhous - greenhouse_bulk_deactivate_users(data: integer[], callback_url?: string) — 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 - greenhouse_bulk_delete_custom_field_options(data: integer[]) — 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. Thi - greenhouse_bulk_update_blocked_spam_sources(data: object[], callback_url?: string) — 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 su - greenhouse_bulk_update_custom_field_options(data: object[], callback_url?: string) — 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 sub - greenhouse_bulk_update_departments(data: object[], callback_url?: string, on_behalf_of?: string) — 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 - greenhouse_bulk_update_offices(data: object[], callback_url?: string) — 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 tre - greenhouse_bulk_update_openings(data: object[], callback_url?: string, on_behalf_of?: string) — 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 iden - greenhouse_bulk_update_users(data: object[], callback_url?: string, on_behalf_of?: string) — 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, - greenhouse_create_application(job_id?: integer, job_ids?: integer[], prospect?: boolean, source_id?: integer, created_at?: string, referrer_id?: integer, candidate_id: integer, recruiter_id?: integer, custom_fields?: object[], coordinator_id?: integer, initial_stage_id?: integer, prospect_pool_id?: integer, prospect_owner_id?: integer, prospective_office_id?: integer, prospect_pool_stage_id?: integer, prospective_department_id?: integer) — 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 ca - greenhouse_create_approval_flow(job_id: integer, offer_id?: integer, sequential: boolean, approval_type: string, approver_groups: object[]) — 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, appr - greenhouse_create_attachment(url?: string, type: string, content?: string, filename: string, visibility?: string, application_id: integer) — 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, supp - greenhouse_create_blocked_spam_source(note?: string, value: string, source_type: string) — 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 s - greenhouse_create_candidate(tags?: string[], title?: string, company?: string, addresses?: object[], can_email?: boolean, last_name: string, time_zone?: string, first_name: string, application?: object, custom_fields?: object[], phone_numbers?: object[], preferred_name?: string, email_addresses?: object[], linked_user_ids?: integer[], website_addresses?: object[], social_media_addresses?: object[]) — 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 s - greenhouse_create_candidate_education(end_date?: string, start_date?: string, candidate_id: integer, end_date_year?: integer, end_date_month?: integer, start_date_year?: integer, start_date_month?: integer, degree_custom_field_option_id?: integer, discipline_custom_field_option_id?: integer, school_name_custom_field_option_id?: integer) — 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 (referen - greenhouse_create_candidate_employment(title: string, end_date?: string, start_date: string, candidate_id: integer, company_name: string) — 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 - greenhouse_create_candidate_tag(name: string) — 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 c - greenhouse_create_custom_field(name: string, private?: boolean, api_only?: boolean, required?: boolean, field_type: string, office_ids?: integer[], value_type: string, description?: string, department_ids?: integer[], require_approval?: boolean, trigger_new_version?: boolean, custom_field_options?: object[], generate_email_token?: boolean, expose_in_job_board_api?: boolean) — 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 - greenhouse_create_custom_field_department(department_id: integer, custom_field_id: integer) — 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 - greenhouse_create_custom_field_office(office_id: integer, custom_field_id: integer) — 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 - greenhouse_create_custom_field_option(name: string, sort_order: integer, external_id?: string, custom_field_id: integer) — 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 - greenhouse_create_department(name: string, parent_id?: integer, external_id?: string, external_parent_id?: string) — 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 e - greenhouse_create_interview(ends_at: string, location?: string, starts_at: string, interviewers: object[], application_id: integer, job_interview_id: integer, external_event_id: string, video_conferencing_url?: string) — 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 intervi - greenhouse_create_job(notes?: string, job_name?: string, office_ids?: integer[], opening_ids?: string[], custom_fields?: object[], department_id?: integer, job_post_name?: string, requisition_id?: string, template_job_id: integer, number_of_openings: integer, external_office_ids?: string[], external_department_id?: string) — 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 appr - greenhouse_create_job_hiring_manager(job_id: integer, user_id: integer) — 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 - greenhouse_create_job_note(body: string, job_id: integer, user_id: integer, visibility: string) — 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) r - greenhouse_create_job_owner(type: string, job_id: integer, user_id: integer) — 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 - greenhouse_create_note(body: string, subject?: string, user_id?: integer, email_cc?: string[], email_to?: string[], note_type: string, email_from?: string[], visibility: string, candidate_id: integer, application_id?: integer) — 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 (n - greenhouse_create_offer(starts_on?: string, custom_fields?: object[], application_id: integer) — 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 c - greenhouse_create_office(name: string, location?: string, parent_id?: integer, external_id?: string, external_parent_id?: string) — 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 - greenhouse_create_opening(job_id: integer, opening_id?: string, custom_fields?: object[]) — 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 - greenhouse_create_user(last_name: string, first_name: string, office_ids?: integer[], employee_id?: string, custom_fields?: object[], primary_email: string, department_ids?: integer[], send_email_invite?: boolean, external_office_ids?: string[], external_department_ids?: string[]) — 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, optionall - greenhouse_create_user_email(email: string, user_id: integer, send_verification?: boolean) — 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 the - greenhouse_create_user_job_permission(job_id: integer, role_id: integer, user_id: integer) — 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 - greenhouse_deactivate_user(id: integer) — 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 recruit - greenhouse_delete_application(id: integer) — 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 - greenhouse_delete_applied_candidate_tag(id: integer) — 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 acti - greenhouse_delete_attachment(id: integer, on_behalf_of?: string) — 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 le - greenhouse_delete_blocked_spam_source(id: integer, on_behalf_of?: string) — 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 l - greenhouse_delete_candidate(id: integer) — 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, a - greenhouse_delete_candidate_education(id: integer) — 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 educ - greenhouse_delete_candidate_employment(id: integer) — 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 - greenhouse_delete_candidate_tag(id: integer) — 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 - greenhouse_delete_custom_field_office(id: integer) — 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 particul - greenhouse_delete_custom_field_option(id: integer) — 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 - greenhouse_delete_interview(id: integer, on_behalf_of?: string) — 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 rath - greenhouse_delete_job_hiring_manager(id: integer) — 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 hiri - greenhouse_delete_job_note(id: integer) — 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 n - greenhouse_delete_job_owner(id: integer) — 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 - greenhouse_delete_user_job_permission(id: integer) — 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 - 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. - greenhouse_hire_application(id: integer, opening_id?: integer, start_date?: string, close_reason_id?: integer) — 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, optio - greenhouse_list_application_stages(ids?: integer[], cursor?: string, fields?: string[], current?: boolean, per_page?: integer, created_after?: string, updated_after?: string, created_before?: string, updated_before?: string, application_ids?: integer[], job_interview_stage_ids?: integer[]) — 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 canon - greenhouse_list_applications(ids?: integer[], cursor?: string, fields?: string[], status?: string, job_ids?: integer[], per_page?: integer, prospect?: boolean, stage_ids?: integer[], source_ids?: integer[], stage_name?: string, job_post_ids?: integer[], referrer_ids?: integer[], candidate_ids?: integer[], created_after?: string, updated_after?: string, created_before?: string, updated_before?: string, last_activity_after?: string, prospective_job_ids?: integer[], last_activity_before?: string, custom_field_option_id?: integer) — 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 y - greenhouse_list_approval_flows(ids?: integer[], cursor?: string, fields?: string[], job_ids?: integer[], per_page?: integer, offer_ids?: integer[], created_at?: object, updated_at?: object, approval_type?: string) — 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, - greenhouse_list_approver_groups(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, approval_flow_ids?: integer[]) — 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, o - greenhouse_list_approvers(ids?: integer[], cursor?: string, fields?: string[], status?: string, per_page?: integer, user_ids?: integer[], created_at?: object, updated_at?: object, approver_group_ids?: integer[]) — 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 r - greenhouse_list_attachments(ids?: integer[], type?: string, cursor?: string, fields?: string[], per_page?: integer, candidate_ids?: integer[], created_after?: string, updated_after?: string, created_before?: string, updated_before?: string, application_ids?: integer[]) — 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 y - greenhouse_list_bulk_requests(cursor?: string, per_page?: integer) — 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 - greenhouse_list_candidate_educations(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, candidate_ids?: integer[]) — 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' prof - greenhouse_list_candidate_employments(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, candidate_ids?: integer[]) — 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' - greenhouse_list_candidate_tags(cursor?: string, fields?: string[], per_page?: integer) — 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 - greenhouse_list_candidates(ids?: integer[], tag?: string, email?: string, cursor?: string, fields?: string[], private?: boolean, per_page?: integer, created_at_gt?: string, created_at_lt?: string, updated_at_gt?: string, updated_at_lt?: string, created_at_gte?: string, created_at_lte?: string, updated_at_gte?: string, updated_at_lte?: string, last_activity_at_gt?: string, last_activity_at_lt?: string, last_activity_at_gte?: string, last_activity_at_lte?: string, custom_field_option_id?: integer) — 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 nee - greenhouse_list_close_reasons(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object) — 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 - greenhouse_list_custom_field_departments(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, department_ids?: integer[], custom_field_ids?: integer[]) — 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 restrict - greenhouse_list_custom_field_offices(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, office_ids?: integer[], updated_at?: object, custom_field_ids?: integer[]) — 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 - greenhouse_list_custom_field_options(ids?: integer[], active?: boolean, cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, custom_field_ids?: integer[], custom_field_key?: string) — 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 - greenhouse_list_custom_fields(ids?: integer[], name?: string, active?: boolean, cursor?: string, fields?: string[], name_key?: string, per_page?: integer, created_at?: object, field_type?: string, updated_at?: object) — 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, open - greenhouse_list_default_interviewers(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, user_ids?: integer[], created_at?: object, updated_at?: object, interview_kit_ids?: integer[]) — 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 - greenhouse_list_demographic_answer_options(cursor?: string, per_page?: integer) — 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 exampl - greenhouse_list_demographic_answers(cursor?: string, per_page?: integer, created_after?: string, updated_after?: string, created_before?: string, updated_before?: string) — 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 questio - greenhouse_list_demographic_question_sets(cursor?: string, per_page?: integer) — 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 t - greenhouse_list_demographic_questions(cursor?: string, per_page?: integer) — 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 j - greenhouse_list_departments(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, parent_id?: integer, created_at?: object, updated_at?: object, external_id?: string) — 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 HRI - greenhouse_list_eeoc(cursor?: string, per_page?: integer, submitted_at?: object) — 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, - greenhouse_list_email_templates(cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object) — 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 - greenhouse_list_focus_candidate_attributes(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_after?: string, updated_after?: string, created_before?: string, updated_before?: string, interview_kit_ids?: integer[], job_candidate_attribute_ids?: integer[]) — 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 score - greenhouse_list_interview_kits(ids?: integer[], cursor?: string, fields?: string[], job_ids?: integer[], per_page?: integer, created_at?: object, updated_at?: object, job_interview_ids?: integer[]) — 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 - greenhouse_list_interviewer_tags(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at_gt?: string, created_at_lt?: string, updated_at_gt?: string, updated_at_lt?: string, created_at_gte?: string, created_at_lte?: string, updated_at_gte?: string, updated_at_lte?: string) — 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 wh - greenhouse_list_interviews(ids?: integer[], cursor?: string, status?: string, job_ids?: integer[], per_page?: integer, created_at?: object, updated_at?: object, application_ids?: integer[]) — 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 - greenhouse_list_job_board_custom_locations(ids?: integer[], active?: boolean, cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, greenhouse_job_board_ids?: integer[]) — 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 jo - greenhouse_list_job_boards(ids?: integer[], live?: boolean, cursor?: string, fields?: string[], internal?: boolean, per_page?: integer, created_at?: object, updated_at?: object) — 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 p - greenhouse_list_job_candidate_attributes(ids?: integer[], active?: boolean, cursor?: string, fields?: string[], job_ids?: integer[], per_page?: integer, created_at?: object, updated_at?: object, candidate_attribute_type_ids?: integer[]) — 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 eval - greenhouse_list_job_hiring_managers(ids?: integer[], cursor?: string, fields?: string[], job_ids?: integer[], per_page?: integer, user_ids?: integer[], created_at?: object, updated_at?: object) — 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 - greenhouse_list_job_interview_stages(ids?: integer[], active?: boolean, cursor?: string, fields?: string[], job_ids?: integer[], per_page?: integer, created_after?: string, updated_after?: string, created_before?: string, updated_before?: string) — 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_or - greenhouse_list_job_interviews(ids?: integer[], active?: boolean, cursor?: string, job_ids?: integer[], per_page?: integer, created_at?: object, updated_at?: object, scheduling_type?: string, job_interview_stage_ids?: integer[]) — 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 sta - greenhouse_list_job_notes(ids?: integer[], cursor?: string, job_ids?: integer[], per_page?: integer, user_ids?: integer[], created_after?: string, updated_after?: string, created_before?: string, updated_before?: string) — 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, - greenhouse_list_job_owners(ids?: integer[], type?: string, cursor?: string, job_ids?: integer[], per_page?: integer, user_ids?: integer[], created_after?: string, updated_after?: string, created_before?: string, updated_before?: string) — 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 - greenhouse_list_job_post_searchable_locations(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, job_post_ids?: integer[], created_after?: string, updated_after?: string, created_before?: string, updated_before?: string) — 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, cou - greenhouse_list_job_posts(ids?: integer[], live?: boolean, active?: boolean, cursor?: string, fields?: string[], job_ids?: integer[], featured?: boolean, internal?: boolean, per_page?: integer, created_after?: string, job_board_ids?: integer[], updated_after?: string, created_before?: string, updated_before?: string) — 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 p - greenhouse_list_jobs(ids?: integer[], cursor?: string, status?: string, per_page?: integer, created_after?: string, updated_after?: string, created_before?: string, requisition_id?: string, updated_before?: string) — 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 - greenhouse_list_notes(cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object) — 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 - greenhouse_list_offers(ids?: integer[], cursor?: string, fields?: string[], status?: string, job_ids?: integer[], sent_on?: object, per_page?: integer, starts_on?: object, created_at?: object, updated_at?: object, opening_ids?: integer[], resolved_at?: object, current_only?: boolean, candidate_ids?: integer[], application_ids?: integer[], custom_field_option_id?: integer) — 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 b - greenhouse_list_offices(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, parent_id?: integer, created_at?: object, updated_at?: object, external_id?: string) — 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, opti - greenhouse_list_openings(ids?: integer[], open?: boolean, cursor?: string, job_ids?: integer[], per_page?: integer, opening_id?: string, closed_after?: string, opened_after?: string, closed_before?: string, created_after?: string, opened_before?: string, updated_after?: string, created_before?: string, updated_before?: string, application_ids?: integer[], close_reason_ids?: integer[], custom_field_option_id?: integer) — 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 rea - greenhouse_list_pay_input_ranges(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, job_post_ids?: integer[], pay_input_ids?: integer[]) — 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 - greenhouse_list_pay_inputs(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, linked_custom_field_ids?: integer[]) — 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 ma - greenhouse_list_prospect_pool_stages(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, prospect_pool_ids?: integer[]) — 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 sit - greenhouse_list_prospect_pools(ids?: integer[], active?: boolean, cursor?: string, fields?: string[], job_ids?: integer[], per_page?: integer, created_at?: object, office_ids?: integer[], updated_at?: object, department_ids?: integer[]) — 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 attach - greenhouse_list_referrers(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, user_ids?: integer[], created_after?: string, updated_after?: string, created_before?: string, updated_before?: string) — 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 - greenhouse_list_rejection_details(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_after?: string, updated_after?: string, created_before?: string, updated_before?: string, application_ids?: integer[], rejection_reason_ids?: integer[], custom_field_option_id?: integer) — 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 - greenhouse_list_rejection_reasons(cursor?: string, per_page?: integer, include_defaults?: boolean) — 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 rej - greenhouse_list_scorecard_question_options(ids?: integer[], active?: boolean, cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object, scorecard_question_ids?: integer[]) — 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. - greenhouse_list_scorecards(ids?: integer[], cursor?: string, fields?: string[], status?: string, per_page?: integer, created_at?: object, updated_at?: object, submitted_at?: object, submitter_ids?: integer[], interviewed_at?: object, application_ids?: integer[], interviewer_ids?: integer[], interview_kit_ids?: integer[]) — 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 eval - greenhouse_list_sources(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, created_at?: object, updated_at?: object) — 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 wh - greenhouse_list_tracking_links(ids?: integer[], token?: string, cursor?: string, fields?: string[], job_ids?: integer[], per_page?: integer, created_at?: object, source_ids?: integer[], updated_at?: object, job_post_ids?: integer[], referrer_ids?: integer[], job_board_ids?: integer[], related_post_ids?: integer[], related_post_type?: string) — 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 - greenhouse_list_user_job_permissions(cursor?: string, per_page?: integer) — 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 w - greenhouse_list_users(ids?: integer[], cursor?: string, fields?: string[], per_page?: integer, agency_ids?: integer[], office_ids?: integer[], deactivated?: boolean, employee_ids?: string[], primary_email?: string, department_ids?: integer[], external_office_id?: string, interviewer_tag_ids?: integer[], linked_candidate_ids?: integer[], show_service_accounts?: boolean, custom_field_option_id?: integer, external_department_id?: string) — 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 o - greenhouse_merge_candidates(id: integer, secondary_candidate_id: integer) — 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 - greenhouse_move_application(id: integer, to_job_id?: integer, to_stage_id?: integer, from_stage_id: integer, email_from_user_id?: integer) — 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 mo - greenhouse_reject_application(id: integer, notes?: string, rejection_email?: object, rejection_reason_id: integer) — 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 reje - greenhouse_replace_approver(id: integer, add_user_id: integer, on_behalf_of?: string, remove_user_id: integer) — 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 - greenhouse_request_approvals(id: integer) — 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 - greenhouse_revoke_user_permissions(id: integer) — 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 r - greenhouse_search_applications(cursor?: string, fields?: string[], search?: string, job_ids?: integer[], per_page?: integer, prospect?: boolean, office_id?: integer, stage_ids?: integer[], job_status?: string, source_ids?: integer[], stage_name?: string[], job_post_ids?: integer[], recruiter_id?: integer, referrer_ids?: integer[], stage_status?: string, candidate_ids?: integer[], department_id?: integer, coordinator_id?: integer, candidate_tag_id?: integer, prospect_pool_id?: integer, hiring_manager_id?: integer) — 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 que - greenhouse_update_application(id: integer, source_id?: integer, created_at?: string, referrer_id?: integer, rejected_at?: string, recruiter_id?: integer, custom_fields?: object[], coordinator_id?: integer, prospect_pool_id?: integer, prospect_stage_id?: integer) — 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 po - greenhouse_update_approval_flow(id: integer, sequential: boolean) — 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 - greenhouse_update_blocked_spam_source(id: integer, note: string) — 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 - greenhouse_update_candidate(id: integer, tags?: string[], title?: string, company?: string, addresses?: object[], can_email?: boolean, last_name?: string, time_zone?: string, first_name?: string, is_private?: boolean, custom_fields?: object[], phone_numbers?: object[], preferred_name?: string, email_addresses?: object[], linked_user_ids?: integer[], website_addresses?: object[], social_media_addresses?: object[]) — 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. O - greenhouse_update_custom_field(id: integer, name?: string, private?: boolean, api_only?: boolean, required?: boolean, description?: string, require_approval?: boolean, template_token_string?: string, expose_in_job_board_api?: boolean) — 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 - greenhouse_update_custom_field_option(id: integer, name?: string, sort_order?: integer, external_id?: string) — 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 - greenhouse_update_department(id: integer, name: string, parent_id?: integer, external_id?: string) — 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 - greenhouse_update_interview(id: integer, ends_at?: string, location?: string, starts_at?: string, interviewers?: object[], external_event_id?: string, video_conferencing_url?: string) — 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 - greenhouse_update_job(id: integer, name?: string, notes?: string, anywhere?: boolean, office_ids?: integer[], custom_fields?: object[], department_id?: integer, requisition_id?: string, external_office_ids?: string[], how_to_sell_this_job?: string, external_department_id?: string, team_and_responsibilities?: string) — 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 val - greenhouse_update_job_note(id: integer, body?: string, visibility?: string) — 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 attach - greenhouse_update_office(id: integer, name: string, location?: string, parent_id?: integer, external_id?: string, on_behalf_of?: string, external_parent_id?: string, primary_in_house_contact_user_id?: integer) — 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 - greenhouse_update_opening(id: integer, status?: string, opening_id?: string, custom_fields?: object[], close_reason_id?: integer, target_start_on?: string) — 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 - greenhouse_update_rejection_detail(id: integer, custom_fields?: object[], rejection_reason_id?: integer) — 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 - greenhouse_update_user(id: integer, last_name?: string, first_name?: string, office_ids?: integer[], employee_id?: string, custom_fields?: object[], department_ids?: integer[], external_office_ids?: string[], external_department_ids?: string[]) — 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 fie ## Example prompts - "What can I do in Greenhouse?" - "Show me a summary of my Greenhouse account" ## Links Docs: https://mcp.ai/docs/mcps/greenhouse Website: https://mcp.ai/mcps/greenhouse