# Lever — Pipedream Connect

> Flexible Recruiting Software for Today's Hiring Teams

- API slug: `lever` (use in MCP headers and tool keys)
- Auth: OAuth (Pipedream-managed)
- Categories: Human Resources
- Website: https://lever.co
- Managed OAuth scopes: `offline_access` · `archive_reasons:read:admin` · `feedback:read:admin` · `feedback:write:admin` · `files:read:admin` · `files:write:admin` · `interviews:read:admin` · `interviews:write:admin` · `notes:read:admin` · `notes:write:admin` · `offers:read:admin` · `opportunities:read:admin` · `opportunities:write:admin` · `postings:read:admin` · `postings:write:admin` · `resumes:read:admin` · `stages:read:admin` · `uploads:write:admin` · `users:read:admin` · `feedback_templates:read:admin` · `panels:write:admin`
- This page (HTML): https://pipedream.com/apps/lever
- Tools: 16 actions · 0 triggers

## Connect via MCP (recommended)

- Endpoint: `https://remote.mcp.pipedream.net/v3`
- Headers: `Authorization: Bearer <token>` · `x-pd-project-id` · `x-pd-environment` · `x-pd-external-user-id` · `x-pd-app-slug: lever`

```ts
import { Client } from "@modelcontextprotocol/sdk/client/index.js"
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js"
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const accessToken = await pd.rawAccessToken

const transport = new StreamableHTTPClientTransport(
  new URL("https://remote.mcp.pipedream.net/v3"),
  {
    requestInit: {
      headers: {
        Authorization: `Bearer ${accessToken}`,
        "x-pd-project-id": process.env.PIPEDREAM_PROJECT_ID!,
        "x-pd-environment": "production",
        "x-pd-external-user-id": "{external_user_id}", // any stable ID for this user in your system
        "x-pd-app-slug": "lever",
      },
    },
  },
)

const mcp = new Client({ name: "my-agent", version: "1.0.0" })
await mcp.connect(transport)

const { tools } = await mcp.listTools()

// e.g. run Add Note:
const result = await mcp.callTool({
  name: "lever-add-note",
  arguments: {
    opportunityId: "Opportunity ID",
    note: "Note",
  },
})
```

Docs: [MCP guide](https://pipedream.com/docs/connect/mcp/developers.md)

## API proxy

For a Lever endpoint with no pre-built tool, the proxy forwards your request with the connected user's credentials attached.

```bash
# The path segment is the target URL, URL-safe base64 encoded:
# https://api.lever.co/v1/users

curl "https://api.pipedream.com/v1/connect/{project_id}/proxy/aHR0cHM6Ly9hcGkubGV2ZXIuY28vdjEvdXNlcnM?external_user_id={external_user_id}&account_id=apn_xxxxxxx" \
  -H "Authorization: Bearer {access_token}" \
  -H "x-pd-environment: production"
```

Docs: [API proxy guide](https://pipedream.com/docs/connect/api-proxy.md)

## SDK

```ts
import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "lever-add-note",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    lever: { authProvisionId: "apn_xxxxxxx" },
    opportunityId: "Opportunity ID",
    note: "Note",
  },
})
```

Docs: [Managed auth guide](https://pipedream.com/docs/connect/managed-auth/quickstart.md) · [Tools guide](https://pipedream.com/docs/connect/components.md)

## Actions (16)

### `lever-add-note` — Add Note (Write)

Adds a note to an opportunity. Use this to record recruiter observations, interview impressions, or follow-up reminders on a candidate. Use List Opportunity Items (resource=notes) first to check existing notes and avoid duplicates. Set Secret to true to make the note visible only to admins and…

Full schema: https://pipedream.com/apps/lever/actions/add-note.md

### `lever-archive-opportunity` — Archive Opportunity (Write)

Archives a candidate opportunity with a specified reason (hired or not hired). Use this when a hiring decision has been made — to mark a candidate as hired or to reject them. Use List Archive Reasons to find valid reason IDs (filter by type hired or non-hired). Use Search Opportunities to find the…

Full schema: https://pipedream.com/apps/lever/actions/archive-opportunity.md

### `lever-create-interview` — Create Interview (Write)

Schedules an interview for a candidate opportunity. Use this when asked to set up, book, or schedule an interview for a candidate. panel (Interview Panel UID), interviewers, date, duration, and Perform As are all required. Interviews can only be created on panels where externallyManaged == true…

Full schema: https://pipedream.com/apps/lever/actions/create-interview.md

### `lever-create-opportunity` — Create Opportunity (Write)

Creates a new opportunity (candidate + application) in Lever. Use this to add a new candidate to the pipeline, optionally applying them to a specific job posting. Use List Postings to find posting IDs, List Stages to find stage IDs, and List Users to find the recruiter user ID for Perform As…

Full schema: https://pipedream.com/apps/lever/actions/create-opportunity.md

### `lever-download-opportunity-files` — Download Opportunity Files (Write)

Downloads one or more candidate documents — résumés/CVs, other attached files, and/or offer documents — and saves them to the local file system for use in a later step. Use this when asked to download, export, or retrieve the actual files (not just their metadata). Set resources to the document…

Full schema: https://pipedream.com/apps/lever/actions/download-opportunity-files.md

### `lever-get-opportunity` — Get Opportunity (Read-only)

Returns full details for a single opportunity (candidate application) by ID. Use this after Search Opportunities when you need complete candidate data including contact info, stage, notes, and application history. Set expand to inline related objects: applications for application records, stage for…

Full schema: https://pipedream.com/apps/lever/actions/get-opportunity.md

### `lever-get-posting` — Get Posting (Read-only)

Returns full details for a single job posting by ID, including its complete job description. Use this to read a specific role's description, requirements, and closing text — the response content object holds description/descriptionHtml, lists (e.g. requirements), and closing/closingHtml, plus…

Full schema: https://pipedream.com/apps/lever/actions/get-posting.md

### `lever-list-archive-reasons` — List Archive Reasons (Read-only)

Returns all archive reasons configured in the Lever account. Use this to find a reason ID before archiving a candidate with Archive Opportunity. Filter by type to get only hired reasons or only non-hired (rejection) reasons. Returns each reason's id, text, and type. Returns one page (up to limit)…

Full schema: https://pipedream.com/apps/lever/actions/list-archive-reasons.md

### `lever-list-feedback-templates` — List Feedback Templates (Read-only)

Returns the feedback form templates configured in the Lever account, including each template's field definitions. Use this before Submit Feedback to resolve the baseTemplateId and the field IDs required for fieldValues — without it those IDs are unknown. Returns each template's id, text (name), and…

Full schema: https://pipedream.com/apps/lever/actions/list-feedback-templates.md

### `lever-list-opportunity-items` — List Opportunity Items (Read-only)

Returns sub-records attached to a single opportunity (candidate): notes, feedback, interviews, resumes, files, or offers. Use this when asked about a candidate's notes, interview feedback/scorecards, scheduled interviews, resumes, attached files, or offer. Set resource to choose which: notes…

Full schema: https://pipedream.com/apps/lever/actions/list-opportunity-items.md

### `lever-list-postings` — List Postings (Read-only)

Returns job postings from Lever, optionally filtered by state, team, or location. Use this to discover posting IDs before searching opportunities with Search Opportunities or creating a new candidate with Create Opportunity. Returns each posting's id, name, state, team, department, and location…

Full schema: https://pipedream.com/apps/lever/actions/list-postings.md

### `lever-list-stages` — List Stages (Read-only)

Returns all pipeline stages configured in the Lever account. Use this to resolve stage names to IDs before filtering candidates with Search Opportunities, moving a candidate with Update Opportunity Stage, or creating an opportunity at a specific stage. Returns each stage's id and text (display…

Full schema: https://pipedream.com/apps/lever/actions/list-stages.md

### `lever-list-users` — List Users (Read-only)

Returns all users (recruiters, hiring managers, admins) in the Lever account. Use this to resolve team member names to user IDs before assigning ownership, filtering opportunities by owner, or setting the Perform As field on write operations. Returns each user's id, name, email, and access role…

Full schema: https://pipedream.com/apps/lever/actions/list-users.md

### `lever-search-opportunities` — Search Opportunities (Read-only)

Searches and filters opportunities (candidate applications) in Lever. This is the primary tool for finding candidates — use it whenever asked to find, list, or filter candidates or applications. Supports filtering by job posting, pipeline stage, tag, origin, email, and archived status. Use List…

Full schema: https://pipedream.com/apps/lever/actions/search-opportunities.md

### `lever-submit-feedback` — Submit Feedback (Write)

Submits an interview feedback form (scorecard) for an opportunity. Use this after an interview to record the interviewer's assessment. baseTemplateId is required — it identifies which feedback form template to submit against. Use List Feedback Templates to resolve the template id and its field IDs…

Full schema: https://pipedream.com/apps/lever/actions/submit-feedback.md

### `lever-update-opportunity-stage` — Update Opportunity Stage (Write)

Moves a candidate to a different stage in the hiring pipeline. Use this when asked to advance, move, or update a candidate's stage. Use List Stages to find the target stage ID, and Search Opportunities to find the opportunity ID. Every stage change is logged in Lever's audit trail under the Perform…

Full schema: https://pipedream.com/apps/lever/actions/update-opportunity-stage.md

---

- All apps: https://pipedream.com/apps — index: https://pipedream.com/llms.txt
- Pipedream docs for agents: https://pipedream.com/docs/llms.txt
