[!IMPORTANT]
This project is experimental and provided as-is. It is not endorsed by, affiliated with, or supported by Lever or Employ, Inc. "Lever" is a trademark of Employ, Inc. All product names, logos, and brands are property of their respective owners. Use at your own risk.
Quick Start
| Variable | Required | Default | Description |
|---|
LEVER_API_KEY | Yes | | Lever API key |
PORT | No | 3000 | HTTP listen port |
LEVER_BASE_URL | No | https://api.lever.co/v1 | Override for sandbox or EU regions |
Build & Run
# build
make build # or: go build -o lever-mcp ./cmd/lever-mcp
# run
export LEVER_API_KEY=your-key
./lever-mcp # listening on :3000
The server exposes two endpoints:
POST /mcp (MCP Streamable HTTP)
GET /health (health check)
Tool Filtering
Restrict which tools are registered using comma-separated env vars:
# allowlist: only these tools are registered
LEVER_ENABLED_TOOLS=list_opportunities,get_opportunity
# blocklist: everything except these
LEVER_DISABLED_TOOLS=delete_opportunity_note,delete_webhook
If both are set, LEVER_ENABLED_TOOLS takes precedence.
Available Tools (59)
:eyes: read · :pencil2: create · :arrows_counterclockwise: update · :wastebasket: destructive
| Tool | Annotation | API Docs |
|---|
list_opportunities | :eyes: | docs |
get_opportunity | :eyes: | docs |
create_opportunity | :pencil2: | docs |
list_deleted_opportunities | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
archive_opportunity | :arrows_counterclockwise: | docs |
change_opportunity_stage | :arrows_counterclockwise: | docs |
add_opportunity_tags | :pencil2: | docs |
add_opportunity_sources | :pencil2: | docs |
add_opportunity_links | :pencil2: | docs |
remove_opportunity_tags | :arrows_counterclockwise: | docs |
remove_opportunity_sources | :arrows_counterclockwise: | docs |
remove_opportunity_links | :arrows_counterclockwise: | docs |
| Tool | Annotation | API Docs |
|---|
list_opportunity_notes | :eyes: | docs |
create_opportunity_note | :pencil2: | docs |
delete_opportunity_note | :wastebasket: | docs |
| Tool | Annotation | API Docs |
|---|
list_opportunity_offers | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_opportunity_interviews | :eyes: | docs |
update_opportunity_interview | :arrows_counterclockwise: | docs |
delete_opportunity_interview | :wastebasket: | docs |
| Tool | Annotation | API Docs |
|---|
list_opportunity_feedback | :eyes: | docs |
get_opportunity_feedback | :eyes: | docs |
create_opportunity_feedback | :pencil2: | docs |
update_opportunity_feedback | :arrows_counterclockwise: | docs |
delete_opportunity_feedback | :wastebasket: | docs |
| Tool | Annotation | API Docs |
|---|
create_opportunity_panel | :pencil2: | docs |
delete_opportunity_panel | :wastebasket: | docs |
| Tool | Annotation | API Docs |
|---|
list_opportunity_referrals | :eyes: | docs |
list_opportunity_resumes | :eyes: | docs |
list_opportunity_files | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_opportunity_applications | :eyes: | docs |
get_opportunity_application | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_opportunity_forms | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_archive_reasons | :eyes: | docs |
get_archive_reason | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
get_contact | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_postings | :eyes: | docs |
get_posting | :eyes: | docs |
create_posting | :pencil2: | docs |
update_posting | :arrows_counterclockwise: | docs |
apply_to_posting | :pencil2: | docs |
get_posting_apply_questions | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_users | :eyes: | docs |
get_user | :eyes: | docs |
create_user | :pencil2: | docs |
deactivate_user | :arrows_counterclockwise: | docs |
reactivate_user | :arrows_counterclockwise: | docs |
| Tool | Annotation | API Docs |
|---|
list_stages | :eyes: | docs |
list_sources | :eyes: | docs |
list_tags | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_requisitions | :eyes: | docs |
get_requisition | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_feedback_templates | :eyes: | docs |
create_feedback_template | :pencil2: | docs |
delete_feedback_template | :wastebasket: | docs |
list_form_templates | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_webhooks | :eyes: | docs |
create_webhook | :pencil2: | docs |
delete_webhook | :wastebasket: | docs |
| Tool | Annotation | API Docs |
|---|
list_eeo_responses | :eyes: | docs |
| Tool | Annotation | API Docs |
|---|
list_audit_events | :eyes: | docs |
Client Configuration
Claude Desktop
{
"mcpServers": {
"lever": {
"type": "streamable-http",
"url": "http://localhost:3000/mcp"
}
}
}
Generic MCP Client
Any client that supports Streamable HTTP transport can connect to http://<host>:3000/mcp.
Development
make test # run all tests
make build # compile binary
go test ./internal/tools/ -run TestConformance # annotation & schema conformance
API Reference
Lever API Documentation
License
AGPL-3.0
Copyright (c) 2026 Stefano Amorelli (stefano@amorelli.tech)