Recruit CRM MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SENTRY_DSN | No | Fallback DSN if you already export it globally. RECRUIT_CRM_MCP_SENTRY_DSN takes precedence. | |
| RECRUIT_CRM_API_KEY | Yes | Recruit CRM API token | |
| RECRUIT_CRM_MCP_ENV | No | Sentry environment tag. | production |
| RECRUIT_CRM_MCP_SENTRY_DSN | No | Your own Sentry project DSN. If set, tool-call exceptions and per-tool usage telemetry are auto-reported to that project. | |
| RECRUIT_CRM_MCP_SENTRY_TRACES_RATE | No | Sentry trace sample rate (0.0–1.0). | 1.0 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pingA | Check that the Recruit CRM MCP server is running and configured. |
| search_candidatesA | Search for candidates by name, email, location, or date range. Provide at least one filter for targeted results. Filters are combined with AND logic. With no filters, returns a paginated list of recent candidates. Date params use YYYY-MM-DD format. Returns a list of matching candidate summaries. |
| get_candidateB | Get full profile details for a specific candidate by slug or ID. |
| list_jobsA | List job requisitions without any filters. Returns jobs in reverse chronological order. Use search_jobs instead when you need to filter by status or other fields. |
| search_jobsA | Search for jobs by status, name, location, company, date range, or owner. Filters are optional and combined with AND logic. Status accepts a label: 'Open', 'On Hold', 'Closed', 'Placed', 'Canceled', 'Refill'. Date params use YYYY-MM-DD format. Use list_users to find valid owner_id values. With no filters, returns an empty list. |
| get_jobA | Get full details for a specific job by slug or ID. |
| get_assigned_candidatesA | Get candidates assigned to a specific job and their hiring stage. Returns candidate summaries with their current hiring status for the given job. Use status_id to filter by a specific hiring stage. |
| get_contactA | Get full details for a specific contact by slug. |
| search_contactsA | Search for contacts by name, email, company, or date range. Provide at least one filter for targeted results. Filters are combined with AND logic. With no filters, returns a paginated list of recent contacts. Date params use YYYY-MM-DD format. |
| get_companyA | Get full details for a specific company by slug. |
| search_companiesA | Search for companies by name, date range, or owner. Provide at least one filter for targeted results. Filters are combined with AND logic. With no filters, returns a paginated list of recent companies. Date params use YYYY-MM-DD format. sort_by accepts 'createdon' or 'updatedon'. sort_order accepts 'asc' or 'desc'. Set exact_search=True for exact name matching (default is fuzzy/like matching). Use list_users to find valid owner_id values. |
| get_noteA | Get full details for a specific note by ID. The |
| search_notesA | Search for notes by date range. Provide at least one filter for targeted results. Filters are combined with AND logic. With no filters, returns a paginated list of recent notes. Date params use YYYY-MM-DD format. |
| get_taskA | Get full details for a specific task by ID. The |
| search_tasksA | Search for tasks by title, date range, or owner. Provide at least one filter for targeted results. Filters are combined with AND logic. With no filters, returns a paginated list of recent tasks. Date params use YYYY-MM-DD format. Use list_users to find valid owner_id values. |
| get_meetingA | Get full details for a specific meeting by ID. The |
| search_meetingsA | Search for meetings by title, date range, or owner. Provide at least one filter for targeted results. Filters are combined with AND logic. With no filters, returns a paginated list of recent meetings. Date params use YYYY-MM-DD format. Use list_users to find valid owner_id values. |
| list_usersA | List all team members/users. Useful for discovering owner IDs to use with the search_jobs owner_id filter. Returns id, name, email, and role for each user. |
| list_note_typesA | List all note types available in the account. Returns {id, label} pairs suitable for passing as note_type_id on note writes. |
| list_meeting_typesA | List all meeting types available in the account. Returns {id, label} pairs suitable for passing as meeting_type_id on meeting writes. |
| list_task_typesA | List all task types available in the account. Returns {id, label} pairs suitable for passing as task_type_id on task writes. |
| list_hiring_pipelinesA | List all hiring pipelines configured in the account. Pipeline ID 0 is the master hiring pipeline. Use list_hiring_pipeline_stages with the returned id to inspect stages for a specific pipeline. |
| list_hiring_pipeline_stagesA | List hiring pipeline stages for a given pipeline. Use pipeline_id=0 for the master hiring pipeline. Returns {id, label} stage entries suitable for filtering assigned candidates by hiring stage. |
| list_contact_stagesA | List sales pipeline stages (contact stages). Returns {id, label} pairs for each stage in the sales pipeline. |
| list_industriesA | List all industries available in the account. Returns {id, label} pairs suitable for populating a company's industry_id. |
| list_company_custom_fieldsA | List all company custom fields defined in the account. Returns {id, label} pairs where id is the field_id and label is the field name. |
| list_contact_custom_fieldsA | List all contact custom fields defined in the account. Returns {id, label} pairs where id is the field_id and label is the field name. |
| list_job_custom_fieldsA | List all job custom fields defined in the account. Returns {id, label} pairs where id is the field_id and label is the field name. |
| list_candidate_custom_fieldsA | List all candidate custom fields defined in the account. Returns {id, label} pairs where id is the field_id and label is the field name. |
| log_meetingA | Log a meeting via POST /v1/meetings. Dates use ISO 8601 (e.g. |
| create_noteA | Create a note via POST /v1/notes.
|
| update_noteA | Update an existing note via POST /v1/notes/{id} — partial update. Only provided fields are sent; omitted fields are preserved server-side.
|
| create_taskB | Create a task via POST /v1/tasks.
|
| update_taskA | Update an existing task via partial POST to /v1/tasks/{id}. Only non-None fields are forwarded; omitted fields are preserved.
|
| create_companyA | Create a company via POST /v1/companies.
|
| update_companyA | Update a company via partial POST to /v1/companies/{slug}. Only non-None fields are forwarded; omitted fields are preserved server-side
(the API's required |
| set_company_custom_fieldsA | Set custom-field values on a company without touching any standard fields. Thin wrapper over |
| create_contactA | Create a contact via POST /v1/contacts.
|
| update_contactA | Update a contact via partial POST to /v1/contacts/{slug}. Only non-None fields are forwarded; omitted fields are preserved server-side. |
| set_contact_custom_fieldsB | Set custom-field values on a contact without touching any standard fields. |
| create_jobA | Create a job requisition via POST /v1/jobs. Seven fields are required:
Use |
| update_jobA | Update a job requisition via partial POST to /v1/jobs/{slug}. Only non-None fields are forwarded; omitted fields are preserved server-side. Only the fields most commonly edited are exposed; use the full |
| set_job_custom_fieldsA | Set custom-field values on a job without touching any standard fields. |
| create_candidateC | Create a candidate via POST /v1/candidates.
|
| update_candidateB | Update a candidate via partial POST to /v1/candidates/{slug}. Only non-None fields are forwarded; omitted fields are preserved server-side
(the API's required |
| set_candidate_custom_fieldsB | Set custom-field values on a candidate without touching any standard fields. |
| update_meetingA | Update a meeting via partial POST to /v1/meetings/{id}. Only non-None fields are forwarded; omitted fields are preserved server-side.
Attendee and association lists are joined into comma-separated strings to
match the create-endpoint shape. |
| delete_noteA | Delete a note via DELETE /v1/notes/{id}. Returns a |
| assign_candidateB | Assign a candidate to a job via POST /v1/candidates/{slug}/assign. The target job is passed as a query param. No body is needed. |
| unassign_candidateB | Unassign a candidate from a job via POST /v1/candidates/{slug}/unassign. |
| update_hiring_stageA | Update a candidate's hiring stage for a specific job. POST /v1/candidates/{candidate_slug}/hiring-stages/{job_slug}. Use
|
| upload_fileA | Upload a file to Recruit CRM via POST /v1/files (multipart).
|
| report_issueA | Build a prefilled GitHub issue URL the user can click to report a bug. Use when the user wants to flag unexpected behavior in this MCP server (not a Recruit CRM data issue). Returns a URL that opens the public repo's new-issue form pre-populated with the summary, last error, and environment details — the user clicks it and submits in their browser. Pass any recent exception text via |
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/ebragas/recruitcrm-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server