@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 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- 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/kula-ai/kula-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server