Loxo MCP Server
The Loxo MCP Server enables AI assistants to interact with the Loxo recruitment platform API, allowing management of various recruitment-related entities and tasks:
Activity Management: Retrieve activity types, view today's tasks, schedule future activities, and log completed activities for candidates or jobs
Call Queue Management: View the current call queue and add candidates or contacts to it
Candidate Management: Search for candidates, retrieve detailed candidate information, and add notes
Job Management: Search for jobs, access detailed job information, and add notes
The server employs type safety through Zod for runtime validation and includes comprehensive error handling for API interactions.
Loads environment variables from a .env file for configuration, including Loxo API credentials required for authentication with the Loxo platform.
Provides version control for the codebase, allowing developers to clone the repository and manage their own implementations of the Loxo MCP server.
Used for package management, dependency installation, and running build and development scripts for the Loxo MCP server.
Leverages TypeScript for static typing and improved developer experience when building and extending the Loxo MCP server.
Implements runtime type validation for environment variables, tool input parameters, and API responses to ensure data integrity when communicating with the Loxo API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Loxo MCP Serverfind candidates with Python experience in San Francisco"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Loxo MCP Server
π Documentation: https://tbensonwest.github.io/loxo-mcp-server/
A Model Context Protocol (MCP) server that gives Claude direct access to the Loxo recruitment platform. Version 1.7.0 provides 34 tools covering the full recruiter workflow: searching and researching candidates, managing job pipelines, tracking activity and communication, working with companies, and maintaining candidate records. Tool descriptions guide Claude to surface recruiter intake notes and intel-rich activity history β so it can answer "where did we leave things with this candidate?" without you having to dig.
Installation
Option 0: Install via Smithery (easiest)
Install automatically for Claude Desktop via Smithery:
npx -y @smithery/cli install loxo-mcp-server --client claudeOption 1: Local Installation
# Clone the repository
git clone [repository-url]
cd loxo-mcp-server
# Install dependencies
npm install
# Build the project
npm run buildOption 2: Docker Installation
# Clone the repository
git clone [repository-url]
cd loxo-mcp-server
# Build the Docker image
docker build -t loxo-mcp-server .
# Or use Docker Compose
docker-compose buildRelated MCP server: ghl-mcp-server
Configuration
Copy the provided .env.example file to .env and fill in your values:
cp .env.example .envThen update the .env file with your configuration:
LOXO_API_KEY=your_api_key
LOXO_DOMAIN=app.loxo.co
LOXO_AGENCY_SLUG=your_agency_slugRequired environment variables:
LOXO_API_KEY: Your Loxo API keyLOXO_AGENCY_SLUG: Your agency's slug in LoxoLOXO_DOMAIN: (Optional) Defaults to 'app.loxo.co'LOXO_DEFAULT_OWNER_ID: (Optional) Default Loxo user ID to set asowned_by_idon candidates created or updated via this server. Find your ID vialoxo_list_users. Falls back to no owner if not set; overridden per-call by theowned_by_idarg.LOXO_DEFAULT_OWNER_EMAIL: (Optional) Default email for deal ownership. Used byloxo_create_dealwhen noowner_emailarg is provided. Find emails vialoxo_list_users.
Docker Configuration
When using Docker, environment variables are automatically loaded from your .env file via Docker Compose, or can be passed directly:
Using Docker Compose (recommended):
# Ensure your .env file is configured
docker-compose upUsing Docker directly:
docker run -i \
-e LOXO_API_KEY=your_api_key \
-e LOXO_AGENCY_SLUG=your_agency_slug \
-e LOXO_DOMAIN=app.loxo.co \
loxo-mcp-serverNote: The -i flag is required because MCP servers communicate over stdin/stdout.
Usage
Running the Server
Locally:
npm startWith Docker Compose:
docker-compose upWith Docker directly:
docker run -i \
-e LOXO_API_KEY=your_api_key \
-e LOXO_AGENCY_SLUG=your_agency_slug \
loxo-mcp-serverIntegrating with Claude Desktop
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Local installation:
{
"mcpServers": {
"loxo": {
"command": "node",
"args": ["/path/to/loxo-mcp-server/build/index.js"],
"env": {
"LOXO_API_KEY": "your_api_key",
"LOXO_AGENCY_SLUG": "your_agency_slug",
"LOXO_DOMAIN": "app.loxo.co"
}
}
}
}Docker installation:
{
"mcpServers": {
"loxo": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "LOXO_API_KEY=your_api_key",
"-e", "LOXO_AGENCY_SLUG=your_agency_slug",
"-e", "LOXO_DOMAIN=app.loxo.co",
"loxo-mcp-server"
]
}
}
}Workflow Examples
Preparing a client briefing pack
"Prepare a briefing pack for the Northvale role."
loxo_search_jobsβ find the Northvale job and get its IDloxo_get_job_pipelineβ get all candidates and their current stageloxo_get_candidate_brief(per candidate) β pull intake notes, contact details, and recent intel-rich activities in one callCompile into a structured briefing document with current stage, motivations, compensation expectations, and recent touchpoints
Pipeline status update
"Give me a status update on all active candidates."
loxo_get_job_pipelineβ retrieve all candidates on the role with their stageloxo_get_candidate_brief(per candidate) β get intake notes and recent activity to summarise where each conversation standsDeliver a concise status summary: stage, last contact, next step
Matching candidates to a new role
"Who from our database would suit this new CFO role?"
loxo_search_candidatesβ search by title, skills, sector, and tags using Lucene queriesloxo_get_candidate_brief(for shortlisted candidates) β review intake notes and activity history to assess genuine fit and current availabilitySurface the best matches with supporting evidence from recruiter notes and recent conversations
Available Tools
Find & Research Candidates
loxo_search_candidatesβ Search the candidate database using Lucene queries. Filter by current title, past employers, skills, tags, location, or any combination. Returns 100 results per page including skillsets and tags, so you can filter without extra calls. Follow up withloxo_get_candidate_brieffor shortlisted candidates.loxo_get_candidateβ Full candidate profile including bio, current role, skills, tags, compensation, and the recruiter's intake and call notes (in thedescriptionfield). Thedescriptionfield is often the richest source of candidate intelligence: motivations, personal circumstances, compensation expectations, and role preferences.loxo_get_candidate_briefβ The go-to tool when you need full candidate context. Returns profile (including intake notes), all contact details, and recent intel-rich activities (calls, emails, notes, interviews β with pipeline noise filtered out) in a single call. Use this before drafting outreach, preparing briefing packs, or evaluating candidate-role fit. Supports pagination viascroll_idto dig back into older activity.loxo_get_person_emailsβ All email addresses on file for a candidate, with type labels (work, personal, etc.).loxo_get_person_phonesβ All phone numbers on file for a candidate, with type labels (mobile, work, home, etc.).loxo_list_person_job_profilesβ Complete work history list for a candidate: all roles, companies, and dates.loxo_get_person_job_profile_detailβ Detailed information about a specific role in a candidate's work history. Use afterloxo_list_person_job_profileswhen you need the full description for a particular position.loxo_list_person_education_profilesβ Complete education history for a candidate: all degrees, schools, and dates.loxo_get_person_education_profile_detailβ Detailed information about a specific education entry. Use afterloxo_list_person_education_profileswhen you need the full details for a particular qualification.
Manage Pipeline & Jobs
loxo_search_jobsβ Search open roles using Lucene queries (title, location, or any combination). Uses page-based pagination.loxo_get_jobβ Full job details including description, requirements, compensation, status, and hiring team.loxo_get_job_pipelineβ All candidates currently on a job with their pipeline stage (sourced, screened, interviewing, offer, placed). Returns candidate IDs and stages; follow up withloxo_get_candidate_brieffor full context on each person.loxo_add_to_pipelineβ Add a candidate to a job's pipeline. Places them at the first stage and makes them visible inloxo_get_job_pipeline.
Deals & BD Pipeline
loxo_list_deal_workflowsβ List all deal workflows (pipelines) with IDs and names. Use to discover which pipelines exist before searching or creating deals.loxo_get_deal_workflowβ Get a deal workflow's details including pipeline stages. Use to find validpipeline_stage_idvalues forloxo_create_deal.loxo_search_dealsβ Search deals with optional Lucene query and owner email filter. Uses cursor-based pagination withscroll_id.loxo_get_dealβ Full deal details including name, amount, close date, pipeline stage, and linked company/person/job.loxo_create_dealβ Create a new deal in a pipeline. Requires name, amount, close date, workflow ID, and pipeline stage ID. Owner email falls back toLOXO_DEFAULT_OWNER_EMAIL.loxo_log_deal_activityβ Log an activity on a deal. Useloxo_get_activity_typeswith the deal'sworkflow_idto find deal-specific activity type IDs.
Track Activity & Communication
loxo_get_candidate_activitiesβ Full activity timeline for a candidate: all calls, emails, meetings, notes, pipeline moves, and automation events, most recent first. Optionally filter byactivity_type_ids(useloxo_get_activity_typesto discover IDs). For a cleaner, intel-focused view, useloxo_get_candidate_briefinstead.loxo_log_activityβ Record a completed activity (call, email, meeting, interview) against a candidate. Useloxo_get_activity_typesfirst to find the correct activity type ID.loxo_schedule_activityβ Create a future activity (call, meeting, interview) for a candidate. Useloxo_get_activity_typesfirst to find the correct activity type ID.loxo_get_todays_tasksβ All scheduled items for today (or a date range you specify). Optionally filter by user.loxo_get_activity_typesβ List all activity types and their IDs. Optionally pass aworkflow_idto get deal-specific activity types instead of candidate types. Call this before logging or scheduling activities.
Companies & Reference Data
loxo_create_companyβ Create a new company (client/target account). Currently accepts onlyname.loxo_search_companiesβ Search the company database using Lucene queries. Uses cursor-based pagination withscroll_id.loxo_get_company_detailsβ Full company profile including description, contacts, relationships, and status.loxo_list_usersβ All users in your Loxo agency (recruiters, coordinators, etc.) with names and emails. Use to finduser_idvalues for filtering tasks or checking record ownership.loxo_list_skillsetsβ All Skillset and Sector Experience options with their IDs. Use to find validskillset_idsandsector_idsvalues before callingloxo_update_candidate.loxo_list_source_typesβ All candidate source types (LinkedIn, API, Referral, etc.) with their IDs. Use to find validsource_type_idvalues.loxo_list_person_typesβ All person type categories (Active Candidate, Prospect Candidate, etc.) with their IDs. Use to find validperson_type_idvalues.
Candidate Management
loxo_create_candidateβ Create a new candidate record with name, contact info, and current role. After creating, useloxo_update_candidateto set tags, skillsets, person type, and source type.loxo_update_candidateβ Update an existing candidate's details: profile fields, tags, skillsets, sector, person type, and source type. Useloxo_list_skillsetsandloxo_list_person_typesto look up valid IDs first.loxo_upload_resumeβ Upload a CV or resume file to a candidate's profile. Accepts base64-encoded file content. The file appears in the Resumes section of their Loxo record.
Architecture
Built on the Model Context Protocol SDK, communicating over stdio for seamless integration with Claude Desktop and Claude.ai.
v1.7.0 β 34 tools; tool descriptions guide Claude to surface recruiter intake notes (
descriptionfield) and intel-rich activities (calls, emails, notes, interviews) while filtering out pipeline automation noiseAll API calls go to
https://{LOXO_DOMAIN}/api/{LOXO_AGENCY_SLUG}/...with Bearer token authPOST/PATCH request bodies use
application/x-www-form-urlencodedwith bracket notation (e.g.person[name])All endpoints verified against the official Loxo OpenAPI specification
Pagination
Two pagination styles are used depending on the endpoint:
Cursor-based (
scroll_id) β used by candidates, companies, deals, schedule items, and activities. Pass thescroll_idfrom one response to the next to walk through pages.Page-based (
page/per_page) β used by jobs. Passpage=1,page=2, etc.
Activity & Event System
All activity tracking (calls, emails, meetings, notes, pipeline moves) goes through the person_events API:
Scheduled activities β use
loxo_schedule_activitywith a futurecreated_atdatetimeCompleted activities β use
loxo_log_activity; the current timestamp is applied automaticallyActivities can be linked to a person, a job, and/or a company
loxo_get_candidate_brieffilters activities to intel-rich types only (excludes pipeline automation events and other low-signal entries)
Development
Local Development
# Run in development mode with watch mode
npm run dev
# Build the project
npm run build
# Start the server
npm startDocker Development
# Rebuild after code changes
docker-compose build
# Run with live logs
docker-compose up
# Run in detached mode
docker-compose up -d
# View logs
docker-compose logs -f
# Stop the container
docker-compose downThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceEnables interaction with Viterbit recruitment API for managing candidates, jobs, and applications. Supports searching, updating candidate data, handling job applications, and advanced filtering with subscription and activity status tracking.
- Alicense-qualityDmaintenanceEnables AI assistants to interact with GoHighLevel's CRM, marketing automation, and business management tools via the API v2, with support for contacts, conversations, calendars, opportunities, payments, and workflows.52MIT
- Flicense-qualityDmaintenanceEnables LLMs to read conversations, send messages, create tasks, and manage calendar appointments within GoHighLevel CRM locations.1
- AlicenseAqualityAmaintenanceEnables AI tools like Claude and Codex to access and manage Recruit CRM data including candidates, jobs, companies, tasks, meetings, notes, and call logs through natural language.6933MIT
Related MCP Connectors
Give AI agents the LinkedIn tools to find, qualify, engage, and follow up with prospects.
Connect AI assistants to Stellary projects, boards, documents, and governed agent workflows.
Connect AI to your Attio CRM. Manage contacts, companies, deals, and sales pipelines. Create tasksβ¦
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tbensonwest/loxo-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server