# Lever MCP connector

The Lever connector lets Claude, ChatGPT, Cursor and the Elaichi Agent read opportunities, postings, applications and offers in Lever and move candidates between stages, with each person signed in as themselves and every action logged.

Source: https://elaichi.ai/connectors/lever/

## Facts

| | |
| --- | --- |
| Application | Lever |
| Category | ATS |
| AI tools | 54 |
| Authentication | Connects over OAuth |
| Bring your own OAuth app | Yes |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. Connected tools are never listed one by one, however few there are. The endpoint advertises `search_tools` and `execute_tool` instead |

## What you can ask once Lever is connected

- Which opportunities for the Senior Engineer posting are still in phone screen?
- Move Priya Shah to the onsite stage.
- List offers extended this week and who they went to.

## Connect Lever in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Lever.
2. Optionally set Share with, then press Connect.
3. Supply your own Lever app, then approve. Lever needs an OAuth app you register yourself, so bring its client ID and secret. One person does this once for the organization.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Lever tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Lever MCP connector for Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Lever MCP connector for ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Lever MCP connector for Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Lever to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Every scope the client asks for starts ticked except "Delete data and remove access", which you tick yourself. Calling a Lever tool needs "Run your connected tools". Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Lever through Elaichi

### Catch the pipeline up after a debrief

Recruiting. After a debrief, ask for the candidates on a posting, move the ones who passed to the next stage, and see who is still waiting on feedback.

### See where your candidates stand

Hiring managers. Ask which opportunities on your posting are in phone screen, onsite or offer without opening Lever or chasing the recruiter.

### Draft and update job postings

Recruiting ops. Create a new posting from a hiring brief, then update the title, team or application questions when the role changes.

### Pull resumes before an outreach session

Sourcing. List the resumes and applications attached to an opportunity so you know what a candidate has already sent in before you write to them.

### Keep Lever seats in order

People ops. Add a new recruiter as a Lever user, deactivate someone who has left, and reactivate a hiring manager who is back from leave.

### Understand why candidates drop out

Leadership. Ask for open offers this quarter and the archive reasons used most often on a posting to see where the funnel leaks.

## Elaichi vs Zapier MCP vs Composio for Lever

All three can connect Lever to an AI assistant, and all three have admin controls. They differ in where access lives and how you pay.

| What to check | Elaichi | Zapier MCP | Composio |
| --- | --- | --- | --- |
| Where the AI connects | One address for the whole organization. Endpoint: https://api.elaichi.ai/mcp | A server per member, created at sign-in. | An MCP endpoint per team, or an SDK. |
| Control over Lever tools | Allow or restrict single Lever tools, per role or user. | App and action restrictions on the account. | Role permissions, down to the action. |
| Record of calls | One audit entry per Lever call. | A History tab of tool calls. | A log of every tool call. |
| Single sign-on | SAML or OIDC, plus SCIM, on Gold. | SAML on Enterprise. | SAML and OIDC on Enterprise. |
| Price | $15 per user per month. | 2 tasks per successful call. | Billed per tool call. |

Sources: Zapier MCP [docs](https://docs.zapier.com/mcp/get-started/quickstart), [security](https://docs.zapier.com/mcp/manage/security), [usage](https://docs.zapier.com/mcp/features/usage); Composio [docs](https://docs.composio.dev/docs/composio-connect), [gateway](https://composio.dev/mcp-gateway), [enterprise](https://composio.dev/enterprise), [pricing](https://composio.dev/pricing). Checked September 2026.

Longer take: [Zapier MCP alternative](/blog/zapier-mcp-alternative/) and [when you don't need an MCP gateway](/blog/when-you-dont-need-an-mcp-gateway/).

## Frequently asked questions

### How do I connect Lever to Claude?

Connect Lever in Elaichi first, then in Claude go to Customize, then Connectors, then Add and paste https://api.elaichi.ai/mcp. Lever needs an OAuth application registered inside your own Lever account, so one admin brings a client ID and secret once when connecting, and nobody else has to. After that, each person signs in to Lever as themselves when their client asks.

### Does Lever work with ChatGPT and Cursor as well as Claude?

Yes. Lever is connected once in Elaichi and the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any MCP client and the Elaichi Agent. There is nothing extra to set up per client.

### What can an AI agent actually do with my Lever data?

It can list and look up opportunities, postings, applications, resumes, offers, stages and archive reasons in Lever, and move a candidate from one stage to the next. It can also create or update a posting, submit an application to a posting, and add, update, deactivate or reactivate Lever users. Short, concrete asks work better than long paragraphs, so 'move Priya to onsite' beats a full brief.

### Does connecting Lever give the AI everything in my Lever account?

No. Every call runs as the person who signed in to Lever, so the agent sees the postings, candidates and offers that person can already see, and nothing beyond that. Elaichi can narrow that further per team or per action, but it can never widen what Lever itself allows.

### Can my team share one Lever connection?

Yes. One person connects Lever in Elaichi and shares the connection with a team, and nobody else ever handles the client ID or secret. Each teammate still signs in as themselves, so the audit log names the actual person who moved a candidate or edited a posting.

### Can I stop an agent from changing things in Lever?

Yes. Restrictions in Elaichi work per action, so you can allow reading opportunities and postings while blocking moving candidates, editing postings or deactivating Lever users. A restricted action is left out of the AI client's tool list entirely, so it cannot be called no matter how the prompt is worded.

### What happens to a Lever connection when someone leaves?

Offboarding that person in Elaichi ends their access to Lever through every AI client at once. A shared Lever connection keeps working for everyone else on the team. If you want the connector gone, disconnecting Lever once in Elaichi removes it from Claude, ChatGPT, Cursor and every other client.

### Does the Lever MCP connector work with Gemini, Codex, Claude Code or other MCP clients?

Yes. Lever is reached over the same MCP endpoint every client uses, so anything that speaks MCP can call it — Gemini, Codex, Claude Code, Windsurf, Cline, Zed and OpenCode among them — alongside Claude, ChatGPT, Cursor, and the Elaichi Agent. The tools on offer and the access behind them are identical whichever client asks. Only the setup screen differs.

### Is Elaichi an alternative to Zapier MCP for Lever?

Yes. Both let Claude, ChatGPT or Cursor use Lever. Zapier MCP fits a team that already automates in Zapier, since each person signs in and acts as themselves in that account. Elaichi fits when IT wants one address for the whole company, per-tool rules by role, and a record of every Lever call.

### How is Elaichi different from Composio for Lever?

Composio gives AI agents tools and sign-in handling across 1,000+ apps, for developers building agents or people using an assistant, billed per tool call. Elaichi gives a company's own people governed access to Lever: one address, restrictions per role or user, and $15 per user per month. Both have role permissions and a log of every call.

## All 54 Lever tools

Every tool below is callable through https://api.elaichi.ai/mcp once Lever is connected, subject to the toolbox it is in and the restrictions on the caller.

- **List all Lever users** (List). List users in your Lever account. Returns each user's id, name, email, username, accessRole, and createdAt. Only active users are included by default.
- **Get single Lever user by ID** (Get). Get a single Lever user by id. Returns the full user object including id, name, email, accessRole, and deactivatedAt. Required: id.
- **Create a Lever user** (Create). Create a user in Lever. Returns the created user object including id, name, email, accessRole, and createdAt. Required: name, email. New users get the Interviewer access role by default and no invite email is sent.
- **Update a Lever user by ID** (Update). Update a Lever user by id. Returns the updated user object including id, name, email, accessRole, and createdAt. Required: id.
- **Lever users deactivate** (Deactivate). Deactivate a Lever user by user_id. The user can no longer log in but remains in the system for historical record keeping. Returns: id, name, username, email, createdAt, deactivatedAt, accessRole, photo, externalDirectoryId, linkedContactIds, jobTitle, managerId. Required: user_id.
- **Lever users reactivate** (Reactivate). Reactivate a previously deactivated Lever user. Returns the reactivated user record including id, name, username, email, accessRole, and jobTitle. Required: user_id.
- **List all Lever opportunities** (List). List all pipeline opportunities for contacts in your Lever account. Returns each opportunity's id, name, contact, emails, stage, origin, and createdAt (epoch milliseconds).
- **Get single Lever opportunity by ID** (Get). Get a single Lever opportunity by id. Returns the full opportunity object including id, name, contact, emails, stage, tags, applications, and createdAt (epoch milliseconds). Required: id.
- **Lever opportunities move** (Move). Move a Lever opportunity to a different pipeline stage (change its current stage). Returns a data object containing the noteId of the stage-change note. Required: opportunity_id, stage.
- **List all Lever stages** (List). List all pipeline stages in your Lever account. Returns: id, text.
- **Get single Lever stage by ID** (Get). Retrieve a single pipeline stage in Lever by id. Returns: id, text. Required: id.
- **List all Lever postings** (List). List all job postings in your Lever account. Returns: id, createdAt, updatedAt, noteId. Filterable by tag.
- **Get single Lever posting by ID** (Get). Get a single job posting by id. Returns: id, createdAt, updatedAt, noteId. Required: id.
- **Create a Lever posting** (Create). Create a job posting in your Lever account. Returns the created posting including id, text, state, categories, content, salaryRange, and urls. Requires text plus categories team, department, and location; state defaults to draft. API-created postings skip the approvals chain and cannot be confidential.
- **Update a Lever posting by ID** (Update). Update a Lever posting by id. Returns the updated posting object including its id, text, state, categories, content, and salaryRange. Required: id.
- **Lever postings application questions** (Action). Get the application questions and form fields for a Lever posting. Returns: id, type, text, description, required, prompt, options. Required: posting_id.
- **Lever postings apply** (Action). Apply a candidate to a specific job posting in Lever on their behalf. Returns: noteId. Required: posting_id. Only postings in published or internal state accept applications; application fields must match the posting's application form, and file fields must reference the uri from a prior file upload.
- **List all Lever resumes** (List). List all resumes attached to a Lever opportunity, including uploaded file details and the parsed resume content. Returns: id, createdAt, file, parsedData, expiresAt, filename, uri, size. Required: opportunity_id.
- **Get single Lever resume by ID** (Get). Retrieve a single resume for a Lever opportunity by id. Returns the resume's id, createdAt timestamp, file metadata (name, ext, downloadUrl, uploadedAt, status, size), and parsedData with the candidate's positions and schools. Required: opportunity_id and id.
- **List all Lever archive reasons** (List). List all archive reasons in your Lever account. Returns each reason's id, text, status, and type. Optionally filter by type (hired or non-hired).
- **Get single Lever archive reason by ID** (Get). Get a single archive reason in Lever by id. Returns: id, text, status, type. Required: id.
- **List all Lever offers** (List). List offers for a Lever opportunity. Returns each offer's id, status, creator, createdAt, fields, and the sentDocument/signedDocument download links when present. Required: offer_id.
- **List all Lever applications** (List). List applications for a specific Lever opportunity. Returns: id, createdAt, links, noteId. Required: opportunity_id. Deprecated upstream but still maintained; Lever recommends using List all opportunities with contact_id and expand=applications instead.
- **Get single Lever application by ID** (Get). Get a single application by id for a Lever opportunity. Returns: id, createdAt, links, noteId. Required: opportunity_id, id.
- **List all Lever notes** (List). List all notes on a candidate profile for a Lever opportunity. Returns note objects with: id, text, fields (typed note entries with value, score, stage, user), secret, and createdAt. Required: opportunity_id.
- **Get single Lever note by ID** (Get). Retrieve a single note on a Lever opportunity. Returns the note object with id, text, comment fields (value, score, stage, user), secret, completedAt, and createdAt. Required: opportunity_id and id.
- **Create a Lever note** (Create). Create a note on a Lever opportunity. Returns the created note: id, text, fields (comment entries with value, user, score, stage), secret, and createdAt. Required: opportunity_id.
- **Delete a Lever note by ID** (Delete). Delete a note from a Lever opportunity. Only notes created via the API can be deleted. Returns an empty 204 response on success. Required: opportunity_id and id.
- **List all Lever interviews** (List). List all interviews for a lever opportunity. Returns: id, panel, subject, note, interviewers, timezone, createdAt, date, duration, location, feedbackTemplate, feedbackForms, feedbackReminder, user, stage, canceledAt, postings, conferences. Required: opportunity_id.
- **Get single Lever interview by ID** (Get). Get a single interview on a lever opportunity by id. Returns: id, panel, subject, note, interviewers, timezone, createdAt, date, duration, location, feedbackTemplate, feedbackForms, feedbackReminder, user, stage, canceledAt, postings, conferences. Required: id and opportunity_id.
- **Create a Lever interview** (Create). Create a new interview for a lever opportunity on an existing panel. Returns the created interview including id, panel, subject, date, duration, interviewers, and stage. Required: opportunity_id, panel. New interviews can only be created on panels where externallyManaged == true.
- **Update a Lever interview by ID** (Update). Update an interview on a lever opportunity by id. Returns the updated interview including id, panel, subject, date, duration, interviewers, and stage. Required: id and opportunity_id.
- **Delete a Lever interview by ID** (Delete). Delete an interview from a lever opportunity by id. Returns an empty 204 response on success. Required: id and opportunity_id.
- **List all Lever feedback** (List). List all feedback forms for a Lever opportunity. Returns feedback records including id, type, text, instructions, fields (with submitted values and options), interview, panel, user, and created/updated timestamps. Includes interview, assignment, and share feedback types. Required: opportunity_id.
- **Get single Lever feedback by ID** (Get). Retrieve a single feedback form from a Lever opportunity by id. Returns the feedback record including id, type, text, fields with submitted values and options, interview, panel, user, and created/updated timestamps. Required: opportunity_id, id.
- **Create a Lever feedback** (Create). Create a feedback form for a Lever opportunity. Returns the created feedback record including id, type, text, fields with submitted values and options, interview, panel, user, and created/updated timestamps. Required: opportunity_id and a fields array of field id/value pairs.
- **Update a Lever feedback by ID** (Update). Update a feedback form on a Lever opportunity. Returns the updated feedback record including id, type, text, fields with submitted values and options, interview, panel, user, and created/updated timestamps. Required: opportunity_id, id, and a fields array of field id/value pairs.
- **Delete a Lever feedback by ID** (Delete). Delete a feedback form from a Lever opportunity by id. Returns an empty 204 response on success. Required: opportunity_id, id.
- **Create a Lever upload** (Create). Upload a file to Lever for temporary storage (e.g. a resume or a file answer for a posting application); include the returned uri in the apply-to-posting request, where the file is copied over to the application. Returns: id, uri, filename, size, expiresAt.
- **List all Lever files** (List). List all files uploaded to a Lever opportunity, such as cover letters, portfolios, and images. Returns: id, downloadUrl, ext, name, uploadedAt, status, size. Required: opportunity_id.
- **Get single Lever file by ID** (Get). Retrieve the metadata for a single file uploaded to a Lever opportunity. Returns: id, downloadUrl, ext, name, uploadedAt, status, size. Required: opportunity_id and id (the file UID).
- **Lever files download** (Download). Download the content of a file uploaded to a Lever opportunity. Returns the raw binary file content with the file's native content type (no JSON body). Required: opportunity_id, file_type, and file_id. Returns 422 if the file could not be processed by Lever.
- **List all Lever tags** (List). List all tags in your Lever account. Returns each tag with its text and usage count. No required parameters.
- **List all Lever sources** (List). List all candidate sources in your Lever account, each entry representing a source applied to candidates. Returns: text, count.g. "Referral"), count (number of candidates tagged with this source).
- **List all Lever feedback templates** (List). List all active feedback templates for a Lever account, including the default 'no-feedback' template present on every account. Returns: id, text, instructions, group, stage, fields, createdAt, updatedAt.
- **List all Lever form templates** (List). List all active profile form templates for a Lever account. Returns each template's id, text, instructions, group, secretByDefault, fields, createdAt, and updatedAt. Use include to limit the response to just id, text, and/or group.
- **List all Lever requisitions** (List). List all requisitions in your Lever account. Returns requisition records including id, requisitionCode, name, status, headcountHired, headcountTotal, compensationBand, approval, and customFields. No required parameters.
- **List all Lever requisition fields** (List). List the requisition field schema configured in your Lever account, which is used to validate customFields on requisitions. Returns: id, type, applicationId.
- **List all Lever deleted opportunities** (List). List all deleted opportunities in your Lever account. Returns each record's id and deletedAt timestamp. Optional filters: deleted_at_start and deleted_at_end.
- **List all Lever opportunity panels** (List). List interview panels for a Lever opportunity, each containing the series of interviews scheduled for a candidate in a stage. Returns panels with id, applications, interviews, stage, start/end times, timezone, and note. Required: opportunity_id.
- ...and 4 more tools. Call `tools/list` via the MCP endpoint, or see the full catalog via the API, for the complete set.
