Greenhouse Integration
Manage Greenhouse list candidates, get candidate, create candidate, list jobs, list applications
The Greenhouse integration provides access to manage Greenhouse list candidates, get candidate, create candidate, list jobs, list applications through the Integrate MCP server.
Installation
The Greenhouse integration is included with the SDK:
import { greenhouseIntegration } from "integrate-sdk/server";Setup
1. Create a Greenhouse OAuth App
- Create an OAuth application for Greenhouse
- Configure your redirect URI
- Note your Client ID and Client Secret
2. Configure the Integration on Your Server
Add the Greenhouse integration to your server configuration. The integration automatically reads GREENHOUSE_CLIENT_ID and GREENHOUSE_CLIENT_SECRET from your environment variables:
import { createMCPServer, greenhouseIntegration } from "integrate-sdk/server";
export const { client: serverClient } = createMCPServer({
apiKey: process.env.INTEGRATE_API_KEY,
integrations: [
greenhouseIntegration({
scopes: ["candidates:read", "candidates:write", "jobs:read", "applications:read", "users:read"], // Optional
}),
],
});You can override the environment variables by passing explicit values:
greenhouseIntegration({
clientId: process.env.CUSTOM_GREENHOUSE_ID,
clientSecret: process.env.CUSTOM_GREENHOUSE_SECRET,
scopes: ["candidates:read", "candidates:write", "jobs:read", "applications:read", "users:read"], // Optional
});3. Client-Side Usage
The default client automatically includes all integrations. You can use it directly:
import { client } from "integrate-sdk";
await client.authorize("greenhouse");
const result = await client.greenhouse.listCandidates({});
console.log(result);If you're using a custom client, add the integration to the integrations array:
import { createMCPClient, greenhouseIntegration } from "integrate-sdk";
const customClient = createMCPClient({
integrations: [greenhouseIntegration()],
});Configuration Options
export interface GreenhouseIntegrationConfig {
clientId?: string;
Default Scopes
These defaults are applied unless you override scopes in the integration config:
candidates:readcandidates:writejobs:readapplications:readusers:read
Tools
greenhouse_list_candidates
List candidates
export interface GreenhouseListCandidatesParams { "per_page"?: number;
greenhouse_get_candidate
Get candidate
export interface GreenhouseGetCandidateParams { candidate_id: string }
greenhouse_create_candidate
Create candidate
export interface GreenhouseCreateCandidateParams { candidate_json: string }
greenhouse_list_jobs
List jobs
export interface GreenhouseListJobsParams { "per_page"?: number;
greenhouse_list_applications
List applications
export interface GreenhouseListApplicationsParams { "per_page"?: number;
greenhouse_list_users
List users
export interface GreenhouseListUsersParams { "per_page"?: number;
Notes
- Category: HR & Recruiting
- Authentication mode: OAuth