@kula-ai/mcp-server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| KULA_API_KEY | Yes | Your Kula API key |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_job_postsA | List published job posts on the job board. Only use when the user explicitly asks about job board listings. |
| get_job_postA | Get details of a specific job post from the job board. Only use when the user asks about a specific job board listing. |
| list_jobsA | List jobs with SQL-based filters and sorting. Use this for browsing jobs or filtering by status, department, office, or date ranges. For title search (partial match supported), use search_jobs instead. |
| search_jobsA | Search jobs by title (partial match supported) with optional filters. Preferred over list_jobs when you need to find jobs by name. Results are sorted by relevance. |
| get_jobA | Retrieve full details of a specific job by ID, including description and interview stages. Use this when you already have the job ID. To find a job by title, use search_jobs first. |
| list_applicationsA | List job applications. Only use when the user explicitly asks about applications. |
| get_applicationA | Get details of a specific application. Only use when the user asks about a specific application. |
| update_application_stageC | Update the stage of a specific application. |
| list_application_notesC | List notes on a specific application. |
| create_application_noteB | Add a note to a specific application. |
| update_application_noteB | Update an existing note on an application. |
| create_candidateA | Create a new candidate in Kula. At least one of email or linkedin_url (in social_urls) is required. Optionally link to a job pipeline via job_id and job_stage_id. Returns the created candidate object. |
| list_candidatesA | List candidates with simple filters: email, date ranges, and sorting. Use this for browsing or filtering by exact email. For full-text search or filtering by skills, tags, location, job pipeline, or resume presence — use search_candidates instead. |
| search_candidatesA | Search candidates using Elasticsearch with rich filters and cursor-based pagination. Preferred over list_candidates when you need: full-text search (name, email, resume), filtering by skills, tags, sources, job pipeline, location, or resume presence. Pagination: pass cursor from the previous response meta.next_cursor to get the next page. IMPORTANT: if you change any filter or search parameter, omit cursor and start a new request — cursors are tied to a specific search context and will return wrong results if filters change. |
| get_candidateA | Retrieve full details of a specific candidate by ID, including all applications, tags, skills, and location. Use this when you already have the candidate ID. To find a candidate by name or attributes, use search_candidates first. |
| update_candidateA | Update an existing candidate's profile. All fields are optional — only send the fields you want to change. Returns the updated candidate object. |
| list_webhooksB | List all configured webhooks. |
| create_webhookB | Create a new webhook subscription. |
| get_webhookB | Get details of a specific webhook. |
| update_webhookA | Update an existing webhook configuration. Only include fields you want to change. |
| delete_webhookB | Delete a webhook. |
| enable_webhookA | Enable a disabled webhook. |
| disable_webhookA | Disable an active webhook. |
| rotate_webhook_secretB | Rotate the signing secret for a webhook. |
| test_webhookA | Send a test payload to a webhook and wait for the delivery result. Polls until delivered or failed (30s timeout). |
| list_webhook_logsA | List recent delivery logs for a webhook, including status and response details for each attempt. |
| list_webhook_eventsB | List all available webhook event types you can subscribe to. |
| get_webhook_sample_payloadB | Get a sample webhook payload for a specific event type. |
| search_companiesB | Search companies by name. Useful for autocompleting company names. |
| list_industriesB | List all available industries. |
| search_locationsA | Search locations by query. Useful for autocompleting city or region names. |
| search_institutionsA | Search academic institutions by name. Useful for autocompleting university or school names. |
| search_disciplinesA | Search academic disciplines by name. Useful for autocompleting field of study. |
| list_degreesB | List all available academic degrees. |
| list_departmentsA | List all departments as a flat paginated list. Each record has a parent_id to reconstruct the hierarchy client-side. |
| list_officesB | List all offices in the organization. |
| list_milestonesB | List all hiring milestones (pipeline stage groupings) in the organization. |
| list_custom_fieldsA | List custom fields configured in the organization. The type parameter is required — specify job, candidate, requisition, or offer. |
| list_rejection_reasonsB | List all rejection reasons configured in the organization. |
| list_sourcesB | List all candidate sources in the organization. |
| list_requisitionsC | List all requisitions for your account, respecting permissions. |
| get_requisitionB | Get detailed information about a specific requisition, including description and custom field values. |
| list_requisition_fieldsA | List default and custom field definitions for requisitions. Hidden fields are excluded. Optionally filter by department or office. |
| create_requisitionA | Create a new requisition. When head_count exceeds 1, creates a group of linked requisitions. Use list_requisition_fields to get available custom field IDs for additional_info. |
| update_requisitionA | Update an existing requisition. Cannot modify requisitions with closed, archived, or filled statuses. Pass all custom field values in additional_info — omitted fields will be cleared. |
| close_requisitionA | Close a requisition. Only requisitions in a closeable state can be closed. |
| list_scorecard_submissionsA | List scorecards for a specific application. Each scorecard may be linked to an interview, assessment, or review — use the type filter to narrow by activity type. |
| list_job_stagesC | List all pipeline stages for a specific job. |
| create_job_stageB | Create a new pipeline stage for a job. |
| list_stage_activitiesB | List all activities (actions) configured for a specific job stage. |
| list_interviewsA | List interviews for the account. Supports rich multi-value filters: by job, application, candidate, interviewer, organizer, recruiter, department, office, status, kind, location, AI note-taker flag, and start_time window. Cancelled interviews are included by default — use |
| list_application_interviewsA | List the interviews scheduled on a specific application. Same as |
| get_interviewA | Get full details for a single interview, including interviewers, candidate, conference URL, scorecard refs. |
| create_interviewA | Schedule an interview against an application. Calendar invites and conference URL are provisioned asynchronously — subscribe to the Typical workflow:
Where to discover IDs:
Constraints:
|
| update_interviewA | Update an existing interview. All fields are optional — only the supplied fields are modified. Immutable fields (cannot be changed after creation): |
| cancel_interviewA | Cancel a scheduled interview. Calendar events are torn down and cancellation notifications dispatched asynchronously. Cannot cancel: already-cancelled interviews (err_interview_already_cancelled), or completed HackerRank interviews (err_cannot_cancel_completed_hackerrank). |
| mark_candidate_no_showA | Mark the candidate as a no-show on an in_progress or ended interview. Cannot be marked when a scorecard has been submitted. |
| undo_candidate_no_showA | Reverse a candidate no-show. Allowed only when meeting_status is candidate_no_show. |
| check_interviewers_availabilityA | Compute free interview slots across the organizer + interviewers' calendars. Async — returns a Each returned slot carries |
| get_interviewers_availability_resultA | Poll for the result of a previous Each slot in the response includes |
| list_valid_organizersA | List users eligible to be the |
| list_conference_hostsA | List users eligible to be the conference |
| get_interview_planA | Read the interview plan configured on a job — stages with their pre-configured interview activities. Each activity's |
| list_scorecard_templatesA | List scorecard templates configured for the account. Use this to discover |
| get_scorecard_templateA | Get full details for a single scorecard template — questions, feedback/rating descriptions, and segmentation. |
| list_email_templatesA | List email and calendar-invite templates configured for the account. Per-interview snapshots and system templates are excluded. Use this to discover |
| get_email_templateA | Get full details for a single email or calendar-invite template, including subject, body, and owner. |
| list_usersB | List users in the organization. Defaults to active users; use the status filter to include pending, deactivated, or imported. Supports filtering by role, department, office, granted permissions, and a full-text query across name and email. |
| get_userA | Retrieve a single user by ID. Response includes a |
| create_userA | Invite a new user to the account. The user is created in the pending state and sent an invitation email. Requires email and first_name. |
| update_userA | Update an existing user. Only supplied fields are modified. Email and account status cannot be changed via this endpoint. |
| deactivate_userA | Deactivate a user. The user can no longer sign in but their historical activity is preserved. |
| reactivate_userC | Reactivate a previously deactivated user. |
| list_rolesA | List roles available in the account. Use this to discover valid role_id values for create_user and update_user. |
| get_roleA | Retrieve a single role by ID. Response includes a |
| find_locationsA | Search cities, states, and countries. The returned |
| find_companiesB | Search the global company catalog. Returned IDs map to |
| find_industriesB | List industries used to classify companies. Paginated; useful for discovering valid industry options. |
| find_institutionsB | Search academic institutions. Returned IDs map to |
| find_disciplinesB | Search academic disciplines (fields of study). |
| find_degreesB | List academic degrees, optionally filtered by name. Useful for discovering valid degree options for candidate education records. |
| find_tagsA | Search candidate tags (account-scoped). Returned IDs map to |
| find_skillsA | Search the global skill catalog. Returned IDs map to |
| find_currenciesA | List currencies. Returned IDs map to |
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/kula-ai/kula-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server