Bullhorn CRM MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BULLHORN_AUTH_URL | No | Auth URL | https://auth.bullhornstaffing.com |
| BULLHORN_PASSWORD | Yes | API Password | |
| BULLHORN_USERNAME | Yes | API Username | |
| BULLHORN_CLIENT_ID | Yes | OAuth 2.0 Client ID | |
| BULLHORN_LOGIN_URL | No | Login URL | https://rest.bullhornstaffing.com |
| BULLHORN_CLIENT_SECRET | Yes | OAuth 2.0 Client Secret |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_jobsA | List and filter job orders from Bullhorn CRM. Args: query: Lucene search query (e.g., "title:Engineer AND isOpen:1") status: Filter by job status limit: Maximum number of results (1-500, default 20) fields: Comma-separated fields to return Returns: JSON array of job orders Examples: - list_jobs() - Get recent jobs - list_jobs(query="isOpen:1") - Get open jobs - list_jobs(query="title:Software AND employmentType:Direct Hire", limit=10) - list_jobs(status="Accepting Candidates") |
| list_candidatesA | List and filter candidates from Bullhorn CRM. Args: query: Lucene search query (e.g., "lastName:Smith" or "skillSet:Python") status: Filter by candidate status limit: Maximum number of results (1-500, default 20) fields: Comma-separated fields to return Returns: JSON array of candidates Examples: - list_candidates() - Get recent candidates - list_candidates(query="skillSet:Python") - Find Python developers - list_candidates(query="lastName:Smith AND status:Active") - list_candidates(status="Active", limit=50) |
| get_jobA | Get details for a specific job order by ID. Args: job_id: The JobOrder ID fields: Comma-separated fields to return (default: all common fields) Returns: JSON object with job details |
| get_candidateA | Get details for a specific candidate by ID. Args: candidate_id: The Candidate ID fields: Comma-separated fields to return (default: all common fields) Returns: JSON object with candidate details |
| search_entitiesA | Search any Bullhorn entity type using Lucene query syntax. Args: entity: Entity type (JobOrder, Candidate, Placement, ClientCorporation, ClientContact, etc.) query: Lucene search query limit: Maximum number of results (1-500, default 20) fields: Comma-separated fields to return Returns: JSON array of matching entities Examples: - search_entities(entity="Placement", query="status:Approved") - search_entities(entity="ClientCorporation", query="name:Acme*") - search_entities(entity="JobSubmission", query="jobOrder.id:12345") |
| query_entitiesA | Query Bullhorn entities using SQL-like WHERE syntax. Args: entity: Entity type (JobOrder, Candidate, etc.) where: WHERE clause (e.g., "salary > 100000 AND status='Active'") limit: Maximum number of results (1-500, default 20) fields: Comma-separated fields to return order_by: Sort order (e.g., "-dateAdded" for newest first) Returns: JSON array of matching entities Examples: - query_entities(entity="JobOrder", where="salary > 100000") - query_entities(entity="Candidate", where="status='Active'", order_by="-dateAdded") |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
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/osherai/bullhorn-mcp-python'
If you have feedback or need assistance with the MCP directory API, please join our Discord server