Greenhouse · Capability

Greenhouse Harvest API

The Harvest API provides programmatic access to Greenhouse Recruiting data, including candidates, applications, jobs, departments, offices, and users. Authentication uses HTTP Basic Auth with an API token.

Run with Naftiko GreenhouseAPI

What You Can Do

GET
Get candidates — List candidates
/candidates
POST
Post candidates — Create candidate
/candidates
GET
Get candidates id — Retrieve candidate
/candidates/{id}
PATCH
Patch candidates id — Update candidate
/candidates/{id}
DELETE
Delete candidates id — Delete candidate
/candidates/{id}
GET
Get applications — List applications
/applications
GET
Get applications id — Retrieve application
/applications/{id}
PATCH
Patch applications id — Update application
/applications/{id}
POST
Post applications id advance — Advance application
/applications/{id}/advance
POST
Post applications id hire — Hire application
/applications/{id}/hire
POST
Post applications id reject — Reject application
/applications/{id}/reject
GET
Get jobs — List jobs
/jobs
GET
Get jobs id — Retrieve job
/jobs/{id}
PATCH
Patch jobs id — Update job
/jobs/{id}
GET
Get departments — List departments
/departments
GET
Get offices — List offices
/offices
GET
Get offices id — Retrieve office
/offices/{id}
GET
Get users — List users
/users
GET
Get users id — Retrieve user
/users/{id}
PATCH
Patch users id — Update user
/users/{id}

MCP Tools

get-candidates

List candidates

read-only idempotent
post-candidates

Create candidate

get-candidates-id

Retrieve candidate

read-only idempotent
patch-candidates-id

Update candidate

delete-candidates-id

Delete candidate

idempotent
get-applications

List applications

read-only idempotent
get-applications-id

Retrieve application

read-only idempotent
patch-applications-id

Update application

post-applications-id-advance

Advance application

post-applications-id-hire

Hire application

post-applications-id-reject

Reject application

get-jobs

List jobs

read-only idempotent
get-jobs-id

Retrieve job

read-only idempotent
patch-jobs-id

Update job

get-departments

List departments

read-only idempotent
get-offices

List offices

read-only idempotent
get-offices-id

Retrieve office

read-only idempotent
get-users

List users

read-only idempotent
get-users-id

Retrieve user

read-only idempotent
patch-users-id

Update user

Capability Spec

greenhouse-capability.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Greenhouse Harvest API
  description: The Harvest API provides programmatic access to Greenhouse Recruiting data, including candidates, applications,
    jobs, departments, offices, and users. Authentication uses HTTP Basic Auth with an API token.
  tags:
  - Greenhouse
  - API
  created: '2026-05-06'
  modified: '2026-05-06'
capability:
  consumes:
  - type: http
    namespace: greenhouse
    baseUri: https://harvest.greenhouse.io/v1
    description: Greenhouse Harvest API HTTP API.
    authentication:
      type: basic
      username: '{{GREENHOUSE_USERNAME}}'
      password: '{{GREENHOUSE_PASSWORD}}'
    resources:
    - name: candidates
      path: /candidates
      operations:
      - name: get-candidates
        method: GET
        description: List candidates
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: post-candidates
        method: POST
        description: Create candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: candidates-id
      path: /candidates/{id}
      operations:
      - name: get-candidates-id
        method: GET
        description: Retrieve candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: patch-candidates-id
        method: PATCH
        description: Update candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: delete-candidates-id
        method: DELETE
        description: Delete candidate
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: applications
      path: /applications
      operations:
      - name: get-applications
        method: GET
        description: List applications
        inputParameters:
        - name: job_id
          in: query
          type: integer
        - name: status
          in: query
          type: string
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: applications-id
      path: /applications/{id}
      operations:
      - name: get-applications-id
        method: GET
        description: Retrieve application
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: patch-applications-id
        method: PATCH
        description: Update application
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: applications-id-advance
      path: /applications/{id}/advance
      operations:
      - name: post-applications-id-advance
        method: POST
        description: Advance application
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: applications-id-hire
      path: /applications/{id}/hire
      operations:
      - name: post-applications-id-hire
        method: POST
        description: Hire application
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: applications-id-reject
      path: /applications/{id}/reject
      operations:
      - name: post-applications-id-reject
        method: POST
        description: Reject application
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: jobs
      path: /jobs
      operations:
      - name: get-jobs
        method: GET
        description: List jobs
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: jobs-id
      path: /jobs/{id}
      operations:
      - name: get-jobs-id
        method: GET
        description: Retrieve job
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: patch-jobs-id
        method: PATCH
        description: Update job
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: departments
      path: /departments
      operations:
      - name: get-departments
        method: GET
        description: List departments
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: offices
      path: /offices
      operations:
      - name: get-offices
        method: GET
        description: List offices
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: offices-id
      path: /offices/{id}
      operations:
      - name: get-offices-id
        method: GET
        description: Retrieve office
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users
      path: /users
      operations:
      - name: get-users
        method: GET
        description: List users
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: users-id
      path: /users/{id}
      operations:
      - name: get-users-id
        method: GET
        description: Retrieve user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: patch-users-id
        method: PATCH
        description: Update user
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: greenhouse-rest
    description: REST adapter for Greenhouse Harvest API.
    resources:
    - path: /candidates
      name: get-candidates
      operations:
      - method: GET
        name: get-candidates
        description: List candidates
        call: greenhouse.get-candidates
        outputParameters:
        - type: object
          mapping: $.
    - path: /candidates
      name: post-candidates
      operations:
      - method: POST
        name: post-candidates
        description: Create candidate
        call: greenhouse.post-candidates
        outputParameters:
        - type: object
          mapping: $.
    - path: /candidates/{id}
      name: get-candidates-id
      operations:
      - method: GET
        name: get-candidates-id
        description: Retrieve candidate
        call: greenhouse.get-candidates-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /candidates/{id}
      name: patch-candidates-id
      operations:
      - method: PATCH
        name: patch-candidates-id
        description: Update candidate
        call: greenhouse.patch-candidates-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /candidates/{id}
      name: delete-candidates-id
      operations:
      - method: DELETE
        name: delete-candidates-id
        description: Delete candidate
        call: greenhouse.delete-candidates-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications
      name: get-applications
      operations:
      - method: GET
        name: get-applications
        description: List applications
        call: greenhouse.get-applications
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications/{id}
      name: get-applications-id
      operations:
      - method: GET
        name: get-applications-id
        description: Retrieve application
        call: greenhouse.get-applications-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications/{id}
      name: patch-applications-id
      operations:
      - method: PATCH
        name: patch-applications-id
        description: Update application
        call: greenhouse.patch-applications-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications/{id}/advance
      name: post-applications-id-advance
      operations:
      - method: POST
        name: post-applications-id-advance
        description: Advance application
        call: greenhouse.post-applications-id-advance
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications/{id}/hire
      name: post-applications-id-hire
      operations:
      - method: POST
        name: post-applications-id-hire
        description: Hire application
        call: greenhouse.post-applications-id-hire
        outputParameters:
        - type: object
          mapping: $.
    - path: /applications/{id}/reject
      name: post-applications-id-reject
      operations:
      - method: POST
        name: post-applications-id-reject
        description: Reject application
        call: greenhouse.post-applications-id-reject
        outputParameters:
        - type: object
          mapping: $.
    - path: /jobs
      name: get-jobs
      operations:
      - method: GET
        name: get-jobs
        description: List jobs
        call: greenhouse.get-jobs
        outputParameters:
        - type: object
          mapping: $.
    - path: /jobs/{id}
      name: get-jobs-id
      operations:
      - method: GET
        name: get-jobs-id
        description: Retrieve job
        call: greenhouse.get-jobs-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /jobs/{id}
      name: patch-jobs-id
      operations:
      - method: PATCH
        name: patch-jobs-id
        description: Update job
        call: greenhouse.patch-jobs-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /departments
      name: get-departments
      operations:
      - method: GET
        name: get-departments
        description: List departments
        call: greenhouse.get-departments
        outputParameters:
        - type: object
          mapping: $.
    - path: /offices
      name: get-offices
      operations:
      - method: GET
        name: get-offices
        description: List offices
        call: greenhouse.get-offices
        outputParameters:
        - type: object
          mapping: $.
    - path: /offices/{id}
      name: get-offices-id
      operations:
      - method: GET
        name: get-offices-id
        description: Retrieve office
        call: greenhouse.get-offices-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /users
      name: get-users
      operations:
      - method: GET
        name: get-users
        description: List users
        call: greenhouse.get-users
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{id}
      name: get-users-id
      operations:
      - method: GET
        name: get-users-id
        description: Retrieve user
        call: greenhouse.get-users-id
        outputParameters:
        - type: object
          mapping: $.
    - path: /users/{id}
      name: patch-users-id
      operations:
      - method: PATCH
        name: patch-users-id
        description: Update user
        call: greenhouse.patch-users-id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: greenhouse-mcp
    transport: http
    description: MCP adapter for Greenhouse Harvest API for AI agent use.
    tools:
    - name: get-candidates
      description: List candidates
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-candidates
      outputParameters:
      - type: object
        mapping: $.
    - name: post-candidates
      description: Create candidate
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.post-candidates
      outputParameters:
      - type: object
        mapping: $.
    - name: get-candidates-id
      description: Retrieve candidate
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-candidates-id
      outputParameters:
      - type: object
        mapping: $.
    - name: patch-candidates-id
      description: Update candidate
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.patch-candidates-id
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-candidates-id
      description: Delete candidate
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: greenhouse.delete-candidates-id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-applications
      description: List applications
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-applications
      with:
        job_id: tools.job_id
        status: tools.status
      inputParameters:
      - name: job_id
        type: integer
        description: job_id
      - name: status
        type: string
        description: status
      outputParameters:
      - type: object
        mapping: $.
    - name: get-applications-id
      description: Retrieve application
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-applications-id
      outputParameters:
      - type: object
        mapping: $.
    - name: patch-applications-id
      description: Update application
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.patch-applications-id
      outputParameters:
      - type: object
        mapping: $.
    - name: post-applications-id-advance
      description: Advance application
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.post-applications-id-advance
      outputParameters:
      - type: object
        mapping: $.
    - name: post-applications-id-hire
      description: Hire application
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.post-applications-id-hire
      outputParameters:
      - type: object
        mapping: $.
    - name: post-applications-id-reject
      description: Reject application
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.post-applications-id-reject
      outputParameters:
      - type: object
        mapping: $.
    - name: get-jobs
      description: List jobs
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-jobs
      outputParameters:
      - type: object
        mapping: $.
    - name: get-jobs-id
      description: Retrieve job
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-jobs-id
      outputParameters:
      - type: object
        mapping: $.
    - name: patch-jobs-id
      description: Update job
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.patch-jobs-id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-departments
      description: List departments
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-departments
      outputParameters:
      - type: object
        mapping: $.
    - name: get-offices
      description: List offices
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-offices
      outputParameters:
      - type: object
        mapping: $.
    - name: get-offices-id
      description: Retrieve office
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-offices-id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-users
      description: List users
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-users
      outputParameters:
      - type: object
        mapping: $.
    - name: get-users-id
      description: Retrieve user
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: greenhouse.get-users-id
      outputParameters:
      - type: object
        mapping: $.
    - name: patch-users-id
      description: Update user
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: greenhouse.patch-users-id
      outputParameters:
      - type: object
        mapping: $.
binds:
- namespace: env
  keys:
    GREENHOUSE_USERNAME: GREENHOUSE_USERNAME
    GREENHOUSE_PASSWORD: GREENHOUSE_PASSWORD