JobMojito
Server Details
Run AI interviews, simulated personas and coaching sessions on JobMojito.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- JobMojito/mcp
- GitHub Stars
- 1
- Server Listing
- JobMojito MCP Server
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 75 tools
Most tools target a distinct resource+action, but several families blur together: list_my_merchants / search_merchants / list_sub_merchants / jobmojito_configuration all answer 'which account am I acting as', and search_documentation / get_documentation / get_tool_reference all answer 'how does this work'. The interview cluster (create_interview, update_interview, set_interview_state, duplicate_interview, get_interview_definition) is separable only because of very long descriptions rather than clean naming. Detailed prose rescues most selections, but the agent must read a lot to choose correctly.
Names are uniformly snake_case and almost always verb_noun (get_candidate, list_interviews, create_persona, save_task, upload_media_file). The only friction is inconsistent verb families for similar operations — save_ vs update_ vs set_ vs manage_ vs create_ (e.g. save_reason, set_candidate_tags, manage_segment, update_position_step) — which is a minor deviation, not a breakdown.
75 tools is far past what a single server should expose; the surface spans recruiting, results, portal CSS/branding, media library, coaching catalogue, reports and documentation. Each tool is individually functional, but the volume forces the agent through discovery overhead and long descriptions for even simple workflows. Splitting into domain-scoped servers would be far more usable.
Coverage is broad: full lifecycle for candidates (get/list/tags/merge/notes), interviews and positions (create/update/state/steps/slots/duplicate), tasks, document requests, knowledge base, media, reports and reasons. The few gaps are explicitly acknowledged dead ends — no tool creates a position from scratch (duplicate_position only), no delete for candidates/interviews, and welcome/thank-you messages are admin-only — which agents can work around but will hit.
Available Tools
75 toolsadd_candidate_noteAdd a note to a candidateADestructiveInspect
[Candidates] Add a note to a candidate (candidate_id) or to one result (result_id), visible to the team or private to you, optionally mentioning colleagues (each mention gets one e-mail). Notes cannot be changed or deleted through this tool.
Every argument in full, with examples: get_tool_reference.
Inputs: text (required), llm_model, result_id, visibility, +3 more. Returns: data, _mcp_instructions
create_interviewCreate interviewADestructiveInspect
[Interviews] Create a new interview. Without questions its question sequence is generated from the position data. With questions (an explicit list) they are stored as you wrote them, and in the session the avatar says each one in its tone, rephrased, unless you pass interview_tone="exact", which reads them verbatim (compliance, translated or legally reviewed text). With questions, a rapport question is added first unless include_rapport_question=false (3 sent are 4 asked), and the candidate expectations are generated from them. type is the product (interview, assessment, coaching); interview_type is the style of an interview (pre-screening, second-interview...); invite-only hiring is visibility=merchant_invite. A position's pre-screening STEP (resume and form) is something else: added with set_position_process, configured with update_position_step. The interview_template_id also sets the modality (voice-only vs realtime/pre-recorded avatar); list_avatars lists the templates. Full-session recording (recording_full_session) and a longer max_duration raise the credit cost.
Every argument in full, with examples: get_tool_reference.
Inputs: name (required), type (required), status (required), location (required), +52 more. Returns: embed_id, max_duration, _mcp_instructions, embed_signing_key, +2 more
create_personaCreate role-play personaADestructiveInspect
[Interviews] Create a role-play persona: an avatar that plays a defined role in a free-form conversation instead of a scored Q&A interview. portal selects between two different products: portal="interview" builds a SIMULATED PERSONA a recruiter invites candidates to — scored, billed to merchant credits, and listed with the recruiter's other results; portal="coaching" (THE DEFAULT) builds a coaching persona learners start themselves from the catalogue, paid per second from their own coaching minutes and never visible to recruiters. Hiring, screening and assessment use portal="interview". persona_role_avatar/persona_role_user set the roles and opening_line the avatar's first spoken line (default: a generic 'Hello'). Full-session recording (recording_full_session) and a longer max_duration raise the credit cost.
Every argument in full, with examples: get_tool_reference.
Inputs: name (required), status (required), visibility (required), persona_role_user (required), +30 more. Returns: embed_id, _mcp_instructions, embed_signing_key, interview_def_set_id
dismiss_candidate_duplicateDismiss a possible duplicateADestructiveIdempotentInspect
[Candidates] Mark a suggested duplicate pair (duplicate_id from get_candidate include=duplicates) as not the same person, with an optional note. Nobody is notified, and no tool undoes a dismissal.
Every argument in full, with examples: get_tool_reference.
Inputs: duplicate_id (required), note, llm_model, conversation_id. Returns: note, status, decided_at, duplicate_id, +1 more
duplicate_interviewCopy an interviewADestructiveInspect
[Positions] Copy a stand-alone interview (not a position's step) as a new draft, optionally renamed or into another company you manage. Results are not copied. Into another company the avatar must be shared with it.
Every argument in full, with examples: get_tool_reference.
Inputs: interview_id (required), name, llm_model, conversation_id, +1 more. Returns: interview_id, _mcp_instructions, source_interview_id
duplicate_positionCopy a positionADestructiveInspect
[Positions] Copy a position with its steps and settings as a new draft, optionally with a new name, country, location, openings or availability date, or into another company you manage (target_merchant_id; admins and sub-merchant operators only). Candidates and results are not copied. Needs the company's bulk position feature. Left out, interview_available_till and openings_total keep the original's; null makes the copy open (interview_available_till) or without a number of openings (openings_total).
Every argument in full, with examples: get_tool_reference.
Inputs: position_id (required), name, country, llm_model, +5 more. Returns: position_id, _mcp_instructions, source_position_id
finish_media_uploadFinish a media uploadADestructiveIdempotentInspect
[Admin] Last step of start_media_upload: checks the stored file and makes it usable. A file that is not what was declared, a video that is not H.264, or an SVG with anything active is removed and the error says why. replaced says whether a replacement took effect.
Every argument in full, with examples: get_tool_reference.
Inputs: media_id (required), width, height, llm_model, +3 more. Returns: file, replaced, warnings, drafts_updated, +1 more
generate_component_stylesGenerate component style alternativesARead-onlyInspect
[Admin] JobMojito's model proposes a few clearly different looks for one block type, from the block's content (sent as block) and the brand's CSS variables. Returns name, description and CSS ready for save_component_style. Nothing is stored; a look is kept only once save_component_style saves it. get_component_style_guide gives the selectors and variables for writing a style by hand. At most 30 requests an hour per person.
Every argument in full, with examples: get_tool_reference.
Inputs: portal (required), block_type (required), block, count, +5 more. Returns: warnings, block_type, alternatives, _mcp_instructions
generate_interview_reportGenerate interview reportADestructiveInspect
[Results] Generate an interview result report (HTML/PDF/JSON) for a completed interview. The report is decision-support material for a human reviewer, not an automated hiring decision. A report in a language other than the result's is translated, at 0.1 credit per result. interview_result_id from list_interview_results: a single-stage row's id, a multi-stage row's interview_result_id.
Every argument in full, with examples: get_tool_reference.
Inputs: export_type (required), template, llm_model, store_file, +4 more. Returns: result, _mcp_instructions
generate_interview_urlGenerate shareable interview linkADestructiveInspect
[Interviews] Generate a signed link that works for 30 days and can be opened more than once; nothing is sent. Whoever holds the link gets its access. type picks who it is for and the ids it needs: interview-for-profile = one candidate's own interview link (interview_profile_id + interview_id); results-for-profile = that candidate's results (interview_profile_id); interview-result-candidate = one result for the candidate, interview-result-talent-seeker = one result for a reviewer (interview_result_id); interview-results-for-position = every result of an active interview or position for a reviewer (interview_id). interview_profile_id is the candidate's id from list_candidates. There is no anonymous link to an interview: invitations are sent by invite_candidates.
Every argument in full, with examples: get_tool_reference.
Inputs: type (required), llm_model, show_menu, merchant_id, +4 more. Returns: result, _mcp_instructions
get_candidateGet a candidateARead-onlyIdempotentInspect
[Candidates] One candidate in full: profile, applications with their steps and decisions, tags and automatic tags, counts of notes, open tasks, document requests and segments, and the duplicate flag. include=notes,duplicates,documents,tasks,segments adds those lists; a section whose feature is off is named in unavailable. Candidate data is decision-support material for a human reviewer.
Every argument in full, with examples: get_tool_reference.
Inputs: candidate_id (required), include, llm_model, conversation_id. Returns: data, _mcp_instructions
get_catalogue_directoryGet coaching catalogue directoryARead-onlyIdempotentInspect
[Coaching catalogue] Read one catalogue directory in full: its settings, its custom Markdown page (content_md), its resolved sub-directories, and the coaching sessions its tag filter currently matches — which shows whether a session's tags place it in this directory. content_md, tags_sub and tags_interview_set_filter are replaced wholesale on update. Other language versions of the page are in translations (languages lists them, default first).
Every argument in full, with examples: get_tool_reference.
Inputs: id (required), llm_model, merchant_id, conversation_id, +1 more. Returns: id, name, status, tags_sub, +20 more
get_component_style_guideGet the component style guideARead-onlyIdempotentInspect
[Admin] The reference for designing a style for a kind of page block (hero, cards, faq, ...): the selectors each block renders, its layout variants, the brand's CSS variables, and the styles the editor already offers per block type (written_by agent or company), each with the pages that use it (draft or published). Without brand_id it is the main brand.
Every argument in full, with examples: get_tool_reference.
Inputs: portal (required), brand_id, llm_model, merchant_id, +1 more. Returns: brand, how_to, portal, tokens, +5 more
get_documentationRead a JobMojito documentation pageARead-onlyIdempotentInspect
Fetch the full content of a single JobMojito documentation page.
Accepts a URL returned by search_documentation. For developer docs the
clean Markdown (.md) variant is fetched automatically. Only
developer.jobmojito.com and help.jobmojito.com URLs are allowed.
Inputs: url (required), llm_model, max_chars, conversation_id. Returns: _mcp_instructions
get_interview_definitionGet interview definitionARead-onlyIdempotentInspect
[Interviews] Get the definition/configuration of an interview (position), including its ordered questions array. The questions come back in the same format create_interview accepts in questions, so an array read here and changed goes back to update_interview as it is. Each question's id identifies it: a question keeps its stored record while its id stays in the array. For a position add include=process (its steps with their settings and updated_at, for update_position_step), slots (upcoming meeting slots), team, lifecycle, publishing.
Every argument in full, with examples: get_tool_reference.
Inputs: position_id (required), include, llm_model, conversation_id. Returns: code, name, slug, tags, +60 more
get_interview_result_detailsGet interview result detailsARead-onlyIdempotentInspect
[Results] Get full interview result details including transcript and scores. Scores are assistive output for a human reviewer. One result is a large record, so view controls how much of it comes back — the default (standard) omits only the raw machine assessment data. interview_result_id from list_interview_results: a single-stage row's id, a multi-stage row's interview_result_id.
Every argument in full, with examples: get_tool_reference.
Inputs: interview_result_id (required), view, llm_model, conversation_id, +1 more. Returns: id, end, type, score, +48 more
get_merchant_statusGet merchant statusARead-onlyIdempotentInspect
[Admin] Get a merchant status snapshot: credit balances, subscription, pending-work counts, candidate/result totals, and invitation headroom.
Every argument in full, with examples: get_tool_reference.
Inputs: llm_model, merchant_id, conversation_id. Returns: candidates, profile_id, tasks_open, merchant_id, +21 more
get_portal_configurationGet portal configurationARead-onlyIdempotentInspect
[Admin] Read the company's portal configuration as editable documents: branding (portal name, style, colours, logos, e-mail sender name), interview-portal (languages, home texts), coaching-portal (vertical, feature toggles, labels, languages, home blocks), brands (sub-brands, when switched on) and one jobmojito.portal-site document per portal (every page's draft content and the theme CSS, plus style_settings and css_files when switched on). Narrow with sections (branding, interview-portal, coaching-portal, interview-pages, coaching-pages, brands): the page documents are the large ones. With page documents the answer also has block_types: every block a page can hold, what it is for, when to use it and its fields; a page holds only these block types. The documents are in the format update_portal_configuration takes, and fields a document leaves out keep their value there.
Every argument in full, with examples: get_tool_reference.
Inputs: sections, llm_model, merchant_id, conversation_id. Returns: documents, block_types, merchant_id, _mcp_instructions
get_reasonGet one of the company's reasonsARead-onlyIdempotentInspect
[Reasons] One decision or position status reason by id, archived ones included.
Every argument in full, with examples: get_tool_reference.
Inputs: reason_id (required), type, llm_model, merchant_id, +1 more. Returns: id, kind, type, label, +8 more
get_reportGet custom reportARead-onlyIdempotentInspect
[Reports] Get a custom report's JSON definition, visibility, your access and its version. save_report with report_id replaces the definition whole and needs this version.
Every argument in full, with examples: get_tool_reference.
Inputs: id (required), llm_model, merchant_id, conversation_id. Returns: id, title, access, version, +5 more
get_tool_referenceGet a tool's full referenceARead-onlyIdempotentInspect
The full definition of one JobMojito tool: its complete description, and every argument with all its options and examples (part=result: every field it returns). tools/list carries short versions; this one has the options of an argument, its exact format and examples.
Inputs: tool (required), part, llm_model, conversation_id. Returns: _mcp_instructions
invite_candidatesInvite candidates to an interview or positionADestructiveInspect
[Interviews] Invite candidates to an interview or position: e-mails each one their invitation.
The same invitation the admin console's Add candidates sends: creates or finds the candidate, uses the company's invitation budget, and queues the invitation e-mail (with the optional recruiter message). Each row comes back with its outcome; only 'Invited' means an e-mail was queued.
With send_email=false NOTHING is e-mailed: each candidate is registered and their personal interview_url comes back; nothing is sent. The result's email_sent says which happened. send_email=false sends nothing now or later: no invitation, no reminders, no SMS or WhatsApp, and it does not use the invitation budget.
A draft interview is not refused, but candidates can use their links only once it is active; activating it is a separate step (set_interview_state). is_test=true (with send_email=false) gives test links that also work on a draft, for trying the interview yourself; they are not for candidates, whose results would be marked as tests.
Inputs: candidates (required), interview_id (required), is_test, language, +5 more. Returns: _mcp_instructions
jobmojito_configurationChoose a JobMojito merchantARead-onlyIdempotentInspect
Interactive picker (MCP App UI) for the JobMojito merchant account a conversation acts as.
For choosing, switching or setting the merchant, or for a call that
needs a merchant_id when none is chosen yet. It renders a searchable
list with clickable options, and the user's choice arrives as their
next message. Later JobMojito calls then carry
merchant_id=<chosen id>; the user's own account needs none.
Inputs: llm_model, conversation_id.
list_avatarsList avatars and voice templatesARead-onlyIdempotentInspect
[Admin] List available avatar/voice templates. Each item's type decides the interview modality: interactive_elevenlabs = voice-only (no video avatar); interactive_spatius = realtime interactive 3D avatar (rendered in the candidate's browser, 1.25 credits, no early stop); interactive_heygen = premium realtime interactive video avatar; offline_heygen = pre-recorded, non-interactive avatar. An item's id is the interview_template_id of create_interview and create_persona, so the template's type sets the experience. Note: offline_elai and offline_synthesia are legacy integrations that may still appear here but cannot be used to create new interviews. Rows are large, so this returns 15 by default; offset pages while pagination.has_more is true, and type/filter_text narrow it. The company's own templates only unless include_public=true: no voice template here does not mean there is none.
Every argument in full, with examples: get_tool_reference.
Inputs: type, limit, offset, status, +7 more. Returns: data, pagination, _mcp_instructions
list_candidate_filtersList candidate search filtersARead-onlyIdempotentInspect
[Candidates] Every rule field and operator list_candidates accepts in rules, and every value with its id: tags with counts, automatic tags, positions with their steps, interviews, countries, sources, statuses, history, and where switched on decision reasons, job categories, skills, seniority and custom fields. Rules and tags use these ids.
Every argument in full, with examples: get_tool_reference.
Inputs: llm_model, merchant_id, conversation_id. Returns: data, _mcp_instructions
list_candidatesList and search candidatesARead-onlyIdempotentInspect
[Candidates] List the merchant's candidates, filtered by text, activity tab, source, channel, owner, prospect or applicant. To search like the admin's segment builder (tags, positions, steps, status, dates, countries, skills, custom fields...) pass rules as an object (or the same JSON as a string) {"match": "all", "rules": [...]}, field ids and values from list_candidate_filters, e.g. '{"match":"all","rules":[{"field":"tag","op":"any","values":[""]},{"field":"applied","op":"within_days","value":30}]}' (list operators take values, the others value); or segment_id for a segment's members.
Every argument in full, with examples: get_tool_reference.
Inputs: tab, kind, limit, owner, +12 more. Returns: data, pagination, _mcp_instructions
list_catalogue_directoriesList coaching catalogue directoriesARead-onlyIdempotentInspect
[Coaching catalogue] List the coaching-catalogue directories you can see (your merchant's own plus the platform-wide public ones). Returns directory ids, for finding one, picking a parent for a new one, or walking the tree with parent_tag; is_start_directory marks the page the catalogue opens on. The custom Markdown page is not included; get_catalogue_directory returns it. Returns 25 by default; limit and offset page through while pagination.has_more is true.
Every argument in full, with examples: get_tool_reference.
Inputs: limit, offset, status, llm_model, +7 more. Returns: data, pagination, _mcp_instructions
list_document_requestsList document requestsARead-onlyIdempotentInspect
[Document requests] Documents asked from candidates: company-wide or for one candidate, by status, or attention=true for the ones that need a look (uploaded, overdue).
Every argument in full, with examples: get_tool_reference.
Inputs: limit, offset, status, attention, +4 more. Returns: data, pagination, _mcp_instructions
list_interview_resultsList interview resultsARead-onlyIdempotentInspect
[Results] List the merchant's interview results. Rows carry the candidate's scores and recruiter risk flags, so this returns 20 by default; offset pages while pagination.has_more is true, and tab/interview_id/filter_text/owner/position_def_step_id narrow it. extended=true adds the owner, time on the step, outcome and decision reason. tab=shortlist is the shortlisted state of an application, not a candidate tag named Shortlist (list_candidates rules find tagged candidates).
Every argument in full, with examples: get_tool_reference.
Inputs: tab, step, type, limit, +14 more. Returns: data, pagination, _mcp_instructions
list_interviewsList interviews and positionsARead-onlyIdempotentInspect
[Interviews] List the merchant's interviews and positions, with lifecycle, category, tags, recruiter and step count; filter by lifecycle, recruiter_profile_id or interview_category. type=interview (the default) also lists multi-stage positions.
Every argument in full, with examples: get_tool_reference.
Inputs: type, limit, offset, status, +10 more. Returns: data, pagination, _mcp_instructions
list_knowledge_base_documentsList knowledge base documentsARead-onlyIdempotentInspect
[Knowledge base] List the company's knowledge base documents, optionally for one store, with the interviews each is limited to. knowledge_base_id narrows it to one document's limit.
Every argument in full, with examples: get_tool_reference.
Inputs: limit, offset, llm_model, merchant_id, +3 more. Returns: data, pagination, _mcp_instructions
list_knowledge_base_storesList knowledge base storesARead-onlyIdempotentInspect
[Knowledge base] The company's knowledge base stores with their document counts: the knowledge_base_store_id create_interview draws on and upload_knowledge_base_document adds to. strict=true means the AI uses only these documents.
Every argument in full, with examples: get_tool_reference.
Inputs: llm_model, merchant_id, conversation_id. Returns: data, _mcp_instructions
list_languagesList supported languagesARead-onlyIdempotentInspect
[Admin] List supported platform (mojito) languages: the code to pass as mojito_language_code, English/local names, SVG flag URL, per-interface enablement flags, and Azure speech accents.
Every argument in full, with examples: get_tool_reference.
Inputs: llm_model, conversation_id. Returns: languages, _mcp_instructions
list_media_filesList media library filesARead-onlyIdempotentInspect
[Admin] List the company's media library: images, MP4 video, audio and WOFF2 fonts, newest first. A file's url is what page blocks, brand logos and font settings take. Filter by folder ("" is the top). include_folders=true adds every folder (empty ones included) with how many files each holds; a folder name is the folder value here, in start_media_upload and in manage_media_file. A sub-company also sees its parent's files, marked read_only: usable, not changeable.
Every argument in full, with examples: get_tool_reference.
Inputs: kind, limit, folder, offset, +6 more. Returns: data, folders, pagination, _mcp_instructions
list_my_merchantsList merchants you can act asARead-onlyIdempotentInspect
Text list of the merchant accounts you can act as, for clients that cannot render MCP App UI.
jobmojito_configuration offers the same accounts as an interactive
picker. Returns the user's own account plus any sub-merchants. Later calls
for a sub-merchant carry merchant_id=<chosen id>; the own account needs
none.
Inputs: search, llm_model, conversation_id. Returns: _mcp_instructions
list_reasonsList the company's reasonsARead-onlyIdempotentInspect
[Reasons] The company's decision reasons (why a candidate was rejected or withdrew, kind reject / withdraw) and position status reasons (the reason_id set_interview_state needs for on_hold and cancelled, with the lifecycles each applies_to). type narrows to one; include_archived=true adds the archived ones. A company has six default position status reasons from the moment the position lifecycle is on.
Every argument in full, with examples: get_tool_reference.
Inputs: kind, type, language, llm_model, +3 more. Returns: data, _mcp_instructions
list_report_fieldsList report datasets and fieldsARead-onlyIdempotentInspect
[Reports] List what a custom report can use on this account: datasets (interview results, invitations, position pipeline, ATS pipeline, credits, coaching sessions - only those the account and your role include), their dimensions (group by / conditions, with allowed values) and measures. A report definition may only use ids listed here. Custom reports are switched on per account by JobMojito; while they are off, every custom report tool is refused with 403 (built-in reports keep working) 'Custom reports are not enabled for this account.' Retrying does not change that; JobMojito switches them on.
Every argument in full, with examples: get_tool_reference.
Inputs: dataset, llm_model, merchant_id, conversation_id. Returns: limits, schema, datasets, can_share, +4 more
list_reportsList reportsARead-onlyIdempotentInspect
[Reports] List the reports you can run: custom reports you can open (yours, shared with you), the JobMojito templates, and the built-in reports (kind builtin, id builtin:, with their sections and whether they are available to you). scope=builtin lists only the built-in ones; they are listed even while custom reports are switched off.
Every argument in full, with examples: get_tool_reference.
Inputs: scope, llm_model, merchant_id, conversation_id. Returns: data, _mcp_instructions
list_segmentsList candidate segmentsARead-onlyIdempotentInspect
[Candidates] List the company's candidate segments (dynamic, by rules, or static lists) with their size, or with segment_id one segment in full: rules, analytics and linked positions. list_candidates segment_id lists a segment's members.
Every argument in full, with examples: get_tool_reference.
Inputs: llm_model, segment_id, merchant_id, conversation_id. Returns: data, _mcp_instructions
list_sub_merchantsList sub-merchantsARead-onlyIdempotentInspect
[Admin] List the sub-merchants (child companies) under a merchant account, with their details. The accounts the user can act as are listed by jobmojito_configuration and list_my_merchants.
Every argument in full, with examples: get_tool_reference.
Inputs: limit, offset, order_by, llm_model, +3 more. Returns: data, pagination, _mcp_instructions
list_tasksList tasksBRead-onlyIdempotentInspect
[Tasks] The hiring team's follow-up tasks: mine, created by me or all; by candidate, position, assignee, status or due date; with counts.
Every argument in full, with examples: get_tool_reference.
Inputs: due, limit, scope, offset, +7 more. Returns: data, counts, truncated, pagination, +1 more
list_usersList the company's usersARead-onlyIdempotentInspect
[Admin] The company's users (owners, recruiters, hiring managers, admins) with the profile_id other tools take: a task assignee, a mention, an interviewer, a recruiter, a hiring team member. filter_text searches name and e-mail. role is the company-wide access level (reader = a hiring manager, read only); for who does what on one position pass position_id: only the people on it, each with position_roles (owning_recruiter, and the hiring team roles recruiter, hiring_manager, interviewer...).
Every argument in full, with examples: get_tool_reference.
Inputs: role, llm_model, filter_text, merchant_id, +3 more. Returns: data, _mcp_instructions
manage_candidate_tagCreate, change or delete a candidate tagADestructiveInspect
[Candidates] The company's candidate tag list: action create, update (rename, recolor) or delete. Rename, recolor and delete are for owners; delete removes the tag from every candidate for good (dry_run=true shows how many carry it).
Every argument in full, with examples: get_tool_reference.
Inputs: action (required), id, name, color, +4 more. Returns: data, _mcp_instructions
manage_media_fileDescribe, move or delete a media fileADestructiveInspect
[Admin] With action update (the default): change a file's name, alt text, focal point or poster, or move it to another folder ("" is the top). Fields left out keep their value. alt replaces the whole set of languages. A null focal_x, focal_y or poster_url clears it. A move gives the file a new url: live pages keep the old one and page drafts move at once (drafts_updated). With action delete and only media_id: delete the file for good; this cannot be undone. Refused while a page, brand, CSS file, style setting, company logo or branding, interview, position, blog post, avatar or coaching catalogue uses it: the error lists what does, and those uses are changed separately.
Every argument in full, with examples: get_tool_reference.
Inputs: media_id (required), alt, action, folder, +6 more. Returns: id, alt, url, kind, +20 more
manage_media_folderCreate, rename or delete a media folderADestructiveInspect
[Admin] Create an empty folder, rename one, or delete an empty one. Renaming moves every file in it to a new address: live pages keep the old one and page drafts move at once. A folder is deleted only once its files are moved or deleted. Names: 1 to 60 letters, digits, spaces, "-", "", ".", "(" and ")"; not starting with ".", "" or a space, and never "profile".
Every argument in full, with examples: get_tool_reference.
Inputs: action (required), folder (required), to, llm_model, +2 more. Returns: moved, folder, warnings, drafts_updated, +1 more
manage_meeting_slotCreate, change or delete a meeting slotADestructiveInspect
[Positions] Bookable time slots of a meeting step: action create, update or delete (with start_at, duration_minutes, capacity, location, meeting_url, interviewer and panel). Changing start_at, duration_minutes, location or meeting_url of a booked slot e-mails its booked candidates the new details; deleting one cancels their bookings and e-mails them and the interviewers. dry_run=true lists the booked candidates who would be e-mailed, without writing anything. get_interview_definition include=slots lists the slots. Creating a slot e-mails nobody. start_at is ISO 8601 with the UTC offset of the user's time zone (2026-11-20T14:00:00+01:00) and not in the past.
Every argument in full, with examples: get_tool_reference.
Inputs: action (required), note, agenda, dry_run, +11 more. Returns: slot, action, dry_run, warnings, +2 more
manage_segmentCreate, change or delete a candidate segmentADestructiveInspect
[Candidates] action save (create without id, update with id; name, description, kind, and rules: the same {match, rules} list_candidates takes, as an object or a JSON string), delete, or add_members / remove_members of a static segment (candidate ids). Fields left out keep their value. list_candidates takes the same rules and returns the candidates they match, without saving anything. Sends nothing to candidates. Deleting cannot be undone.
Every argument in full, with examples: get_tool_reference.
Inputs: action (required), kind, name, rules, +6 more. Returns: added, action, created, deleted, +4 more
merge_candidatesMerge two candidatesADestructiveInspect
[Candidates] Merge merge_id into keep_id after preview_candidate_merge (send its preview_token; field_choices picks keep or merge per field). Owners and admins only. IRREVERSIBLE: there is no unmerge. The candidate is not told. It is for two records of the same person.
Every argument in full, with examples: get_tool_reference.
Inputs: keep_id (required), merge_id (required), preview_token (required), llm_model, +3 more. Returns: moved, keep_id, merge_id, repeated, +3 more
preview_candidate_mergePreview merging two candidatesARead-onlyIdempotentInspect
[Candidates] Show what merging merge_id into keep_id would do: both values of each field, the records that move, blockers, and preview_token. merge_candidates needs that token, and refuses it if either candidate changed since.
Every argument in full, with examples: get_tool_reference.
Inputs: keep_id (required), merge_id (required), llm_model, conversation_id. Returns: fields, skills, keep_id, blockers, +5 more
publish_portal_stylesheetPublish a brand stylesheetADestructiveInspect
[Admin] Build one brand's stylesheet from its style settings and CSS files and put it live at once. Without brand_id it is the main brand. It publishes the drafts update_portal_configuration and save_component_style wrote. Publishing is immediate and changes the live site. Returns warnings, notably rules outside .jm-site.
Every argument in full, with examples: get_tool_reference.
Inputs: portal (required), files, brand_id, llm_model, +2 more. Returns: url, hash, warnings, size_bytes, +1 more
report_technical_issueReport technical issueADestructiveInspect
[Feedback] Report a technical problem to JobMojito support. It opens a support conversation from the signed-in user's account (their e-mail), with their company and the interview or result ids given; support answers there. The description covers what was done, what was expected and what happened (error text as shown). It sends the description exactly as given; at most 5 a day.
Every argument in full, with examples: get_tool_reference.
Inputs: description (required), llm_model, result_id, interview_id, +1 more. Returns: id, status, reference, _mcp_instructions
request_another_interview_attemptRe-open interview for another attemptADestructiveInspect
[Results] Re-open a submitted interview result so the candidate can take it again: the attempt is marked failed, the same result goes back to draft and the recruiter's decision on it is cleared. The candidate may then continue, keeping the answers already given, or start over from scratch. There is no preview, and this tool notifies nobody, the candidate included. More attempts on the whole interview are set by interview_attempts in update_interview. Company owners, recruiters and platform admins only. interview_result_id from list_interview_results: a single-stage row's id, a multi-stage row's interview_result_id.
Every argument in full, with examples: get_tool_reference.
Inputs: interview_result_id (required), llm_model, conversation_id. Returns: _mcp_instructions
request_candidate_documentsAsk a candidate for documentsADestructiveInspect
[Document requests] Ask a candidate for up to 10 documents (certificate, reference letter, work sample...) with a message and due date. With notify (the default) the candidate is e-mailed. dry_run=true shows whether the e-mail would go out (will_send, not_requested, no_valid_email, suppressed) and stores nothing. documents[].source_field_id replaces one of the position's own file questions, as its form names it (form_cover_letter, custom_...); without it the request is a plain upload.
Every argument in full, with examples: get_tool_reference.
Inputs: documents (required), candidate_id (required), notify, dry_run, +6 more. Returns: email, notify, dry_run, message, +10 more
run_reportRun a reportARead-onlyIdempotentInspect
[Reports] Run a report and return each block's rows (aggregated numbers, at most 500 rows per block). Three ways: report_id of a saved custom report (your saved filters, then filters, apply; with version a newer report is refused with 409); report_id builtin: of a built-in report from list_reports (section, from / to, position_id or interview_id, limit / offset; sections that list candidates by name run only with include_candidates=true and are audited); or an unsaved definition, which is validated against list_report_fields and run without storing anything: this validates a definition without saving it: a wrong block comes back with ok=false and an error naming the field and the valid ids. Report numbers are decision-support material for a human reviewer. Block types: line needs a date dimension first (with a grain), kpi and funnel take no dimensions. The period filters each dataset on its own date (its description in list_report_fields says which; a snapshot dataset ignores it); left out, the last 30 days.
Every argument in full, with examples: get_tool_reference.
Inputs: to, from, limit, stage, +13 more. Returns: kind, title, blocks, filters, +6 more
save_catalogue_directoryCreate or update a coaching catalogue directoryADestructiveInspect
[Coaching catalogue] With action create (the default): create a directory (page) in the coaching portal catalogue. A directory nests other directories (tags_sub), lists coaching sessions whose own tags match its tags_interview_set_filter, and can carry a fully custom Markdown page (content_md) with [sessions], [directory:…], [session:…] and [plan-progress] directives; the top-level fields are the default language, translations adds the others. With action update and id: rename it, change which sessions it lists, re-order its sub-directories, author its page, or add, replace or remove a language version (translations, per language; null removes one). On update only the fields you send change; a top-level null counts as not sent, except content_md: null, the only way to remove the custom page and restore the default grid. Coaching-platform feature. public visibility is for platform admins only.
Every argument in full, with examples: get_tool_reference.
Inputs: id (required), name, action, status, +13 more. Returns: id, parent_tag, merchant_id, catalogue_url, +2 more
save_component_styleSave a component styleADestructiveIdempotentInspect
[Admin] Write one named style for a block type as a DRAFT in its own file, components/<block_type>/.css; the company's other CSS files are never changed. The page editor then offers it on every block of that type. Every selector starts from the guide's root plus the style class. styleName on blocks (update_portal_configuration) applies it; it goes live only with publish_portal_stylesheet (files: [file_id]). remove: true deletes a style's file; the guide lists which pages use it, and their blocks go back to the standard look once the stylesheet is published.
Every argument in full, with examples: get_tool_reference.
Inputs: name (required), portal (required), block_type (required), css, +6 more. Returns: file, live, name, class, +7 more
save_knowledge_base_storeCreate or change a knowledge base storeADestructiveInspect
[Knowledge base] Without knowledge_base_store_id: a new store (name; strict true by default: the AI uses only its documents). With it: rename it or change strict, which changes how every interview on the store answers. upload_knowledge_base_document adds documents.
Every argument in full, with examples: get_tool_reference.
Inputs: name, strict, llm_model, merchant_id, +2 more. Returns: result, _mcp_instructions
save_reasonCreate, change or archive a reasonADestructiveInspect
[Reasons] Without reason_id: a new reason (decision: kind and label; position_status: label and applies_to). With reason_id: change it; fields left out keep their value; status archived stops offering it, active offers it again (an archived position status reason cannot be restored). Company-wide: a renamed reason is renamed on every past decision too. Owners only.
Every argument in full, with examples: get_tool_reference.
Inputs: type (required), kind, label, status, +7 more. Returns: result, _mcp_instructions
save_reportSave a custom reportADestructiveInspect
[Reports] Without report_id: save a new custom report from a definition (schema jobmojito.report/v1); it is created as Only me and is shared from the returned admin_url. With report_id and the version from get_report: replace that report's whole definition; on a report shared with other people the change is saved as a draft that the owner publishes in the admin, a private report updates at once, whatever target says. run_report with a definition and no report_id validates one without saving it.
Every argument in full, with examples: get_tool_reference.
Inputs: definition (required), target, version, llm_model, +3 more. Returns: id, version, admin_url, published, +1 more
save_taskCreate or change a taskADestructiveInspect
[Tasks] Without task_id: create a task (title, notes, due date, assignee, about a candidate, application or position: a new task needs one of candidate_id, application_id or position_id). With task_id: change the fields you send, or the status (done, cancelled; a cancelled task stays cancelled). Assigning a task to someone else e-mails them (assignee_notified); assignee_profile_id comes from list_users. due_at is a date and time with the offset of the user's time zone. Hiring managers are read only.
Every argument in full, with examples: get_tool_reference.
Inputs: notes, title, due_at, status, +8 more. Returns: status, created, task_id, _mcp_instructions, +1 more
search_documentationSearch JobMojito documentationARead-onlyIdempotentInspect
Search ALL JobMojito documentation.
One call searches both documentation sources in parallel and returns a merged, source-labeled list: • "developer" — developer.jobmojito.com: API reference, request/response schemas, tables, webhooks, code examples, integration guides. • "help" — help.jobmojito.com: recruiter, candidate, and administrator product guides (how the platform behaves for end users).
For how a feature, endpoint, field or workflow works, including what an
action tool will do. get_documentation(url) reads a returned page in
full.
Inputs: query (required), limit, source, llm_model, +1 more. Returns: _mcp_instructions
search_merchantsSearch sub-merchantsARead-onlyIdempotentInspect
Search, by name, the sub-merchants the signed-in user can act as.
Returns up to 50 matches, each with its merchant_id and name. It is the
search behind the jobmojito_configuration picker's Search button;
list_my_merchants (its search) returns the same accounts as text.
Inputs: query, llm_model, conversation_id. Returns: result, _mcp_instructions
set_assessment_resultRecord an external assessment resultADestructiveInspect
[Results] Record the result of a candidate's external assessment step (status, score, pass / fail, report link). The step then waits for the recruiter's decision. A completed result replaces the recorded score, pass / fail and label, a report link or note replaces the recorded one, and a cancelled assessment ignores it. Nobody is notified.
Every argument in full, with examples: get_tool_reference.
Inputs: status (required), position_result_step_id (required), note, score, +6 more. Returns: score, passed, status, outcome, +2 more
set_candidate_tagsTag candidatesADestructiveIdempotentInspect
[Candidates] Add and remove the company's tags on up to 5000 candidates in one call (add_tag_ids, remove_tag_ids; ids from list_candidate_filters). Candidates you cannot see are skipped and counted in not_visible.
Every argument in full, with examples: get_tool_reference.
Inputs: candidate_ids (required), llm_model, add_tag_ids, merchant_id, +2 more. Returns: data, _mcp_instructions
set_interview_stateChange publication status, vacancy lifecycle or embeddingADestructiveIdempotentInspect
[Interviews] Change an interview's or position's publication status (draft, active, archived...), or a position's vacancy lifecycle (open, applications_closed, on_hold, filled, cancelled, closed) with an optional reason_id and note, or its embed key (is_embedded). Moving a position to filled, cancelled or closed, or archiving it, e-mails every candidate whose application is still open, when the company has the position-closed notice on. on_hold and cancelled need a reason_id: one of the company's position status reasons from list_reasons type=position_status, whose applies_to has the lifecycle. dry_run=true answers the status change and whether the position-closed e-mail would go out, to how many candidates, without changing anything. A deleted interview can no longer be read or updated; an archived one can. is_embedded=false removes the embed keys, so existing embeds stop working.
Every argument in full, with examples: get_tool_reference.
Inputs: position_id (required), note, status, dry_run, +5 more. Returns: result, _mcp_instructions
set_knowledge_base_document_interviewsChange which interviews can use a documentADestructiveIdempotentInspect
[Knowledge base] Replace the interview limit of an existing knowledge base document. interview_ids is required: a list limits it to those interviews on the same knowledge base, [] to none, and null opens it to every interview on the knowledge base.
Every argument in full, with examples: get_tool_reference.
Inputs: interview_ids (required), knowledge_base_id (required), llm_model, conversation_id. Returns: interview_ids, _mcp_instructions, knowledge_base_id, limit_to_interviews
set_position_processSet a position's stepsADestructiveIdempotentInspect
[Positions] Add, remove or reorder the steps of a DRAFT position (pre-screening, AI interview, meeting, external assessment, Certo verification), sending the whole ordered list. New steps get the admin's defaults; update_position_step changes a step's settings. A step candidates already reached cannot be removed, nor a meeting step that still has slots. get_interview_definition include=process returns the current steps. dry_run=true returns the diff (added, removed, moved, changed) without saving. No tool creates a position from scratch: duplicate_position copies one as a draft, and the admin creates new ones.
Every argument in full, with examples: get_tool_reference.
Inputs: steps (required), position_id (required), dry_run, llm_model, +1 more. Returns: added, moved, steps, changed, +4 more
start_media_uploadStart a media uploadADestructiveInspect
[Admin] First step of an upload for a client that can send a file itself: returns a signed upload_url. The file is PUT there with the declared Content-Type, and finish_media_upload completes it. A client that cannot send a file to an address uses upload_media_file.
Every argument in full, with examples: get_tool_reference.
Inputs: file_name (required), size_bytes (required), content_type (required), folder, +4 more. Returns: path, token, media_id, upload_url, +2 more
submit_feature_requestSubmit feature requestADestructiveInspect
[Feedback] Send a feature request to the JobMojito product team. It is posted on the public feature request board under the signed-in user's name, where they get status updates; the company is not named. It takes a short title and a description of the need and why; everything sent is public. It posts the title and description exactly as given; at most 5 a day.
Every argument in full, with examples: get_tool_reference.
Inputs: title (required), description (required), llm_model, conversation_id. Returns: id, status, _mcp_instructions
update_document_requestCancel a document request or mark it reviewedADestructiveInspect
[Document requests] action cancel (the candidate can no longer upload) or reviewed (the uploads were checked). A request in the wrong state is refused with 409. Nobody is e-mailed, and no tool reopens a cancelled request.
Every argument in full, with examples: get_tool_reference.
Inputs: action (required), request_id (required), llm_model, merchant_id, +1 more. Returns: action, status, request_id, reviewed_at, +1 more
update_interviewUpdate interview or positionADestructiveIdempotentInspect
[Interviews] Update the configuration of an existing interview/position: name, description, avatar template, recording, scoring, tags, category and the rest of the create-time settings; for a position also its hiring team and recruiter. status is applied as set_interview_state applies it (archiving an active position can e-mail its open applicants; set_interview_state with dry_run previews that); the vacancy lifecycle and the embed key are set with set_interview_state only. A position's steps are changed with set_position_process and update_position_step. Only the fields you send are changed. To change the questions, send questions — the WHOLE list you want the interview to end up with, in order, in the format get_interview_definition returns. OMIT questions and the existing questions are left completely alone; there is no way to change one question on its own: the array get_interview_definition returns is edited and sent back whole. Resending an unchanged array does nothing. On an offline (pre-rendered video) template the questions change only while the interview is draft; on an interactive one also while it is active. Not updated by this tool at all: the welcome and thank-you messages and the instructional-video screen (stored as steps, not questions), and the language, which the existing questions are already written in (no tool changes these: the messages and the video screen are changed in the admin, and another language takes a new interview). tags places a coaching session into a catalogue directory. MULTI-STAGE POSITIONS: the interview-only settings (recording, knowledge_base_store_id, candidate_expectations_json and the like) do not exist at position level and are refused with a 422 naming the field. They live on the AI interview step's own interview (the step's interview_set_id, from get_interview_definition include=process). A null argument counts as not sent and changes nothing, except on three fields where null is the only way to switch something off: candidate_notification_channel (no SMS / WhatsApp), questions_random_subset (ask all questions) and pdf_export_auto_config (no automatic report).
Every argument in full, with examples: get_tool_reference.
Inputs: position_id (required), code, name, tags, +47 more. Returns: team, position_id, is_multistage, questions_diff, +2 more
update_portal_configurationUpdate portal configurationADestructiveInspect
[Admin] Import portal configuration documents, the same ones get_portal_configuration returns: branding, interview portal, coaching portal, brands, and portal sites (pages, menu, footer, theme CSS, style settings, CSS files). With dry_run: true nothing is written, and the answer has the summary, warnings and changes the same call makes without it. Fields a document omits keep their value, and languages are only ever added. Validation is all-or-nothing: a 422 lists every error and nothing is written. Pages land as drafts the company reviews in the admin; publish: true puts the pages and theme live at once, and it also builds and publishes the stylesheet of any brand whose settings or CSS files the documents carry. Brands, style settings and CSS files are switched on per company by JobMojito; while off, those parts are refused with 422. A CSS file's version, sent back, makes the call refuse a file someone else changed.
Every argument in full, with examples: get_tool_reference.
Inputs: documents (required), kind, portal, dry_run, +4 more. Returns: changes, dry_run, documents, merchant_id, +1 more
update_position_stepChange a position step's settingsADestructiveIdempotentInspect
[Positions] Change one step's settings. It takes step_id, optionally name, advance and kombo, and only the settings object of the step's type (meeting, certo, external_assessment, interview, pre_screening); only the keys you send change and null removes a key, but a list you send (pre_screening form_fields, assessment_rules) replaces the whole list: every item to keep is in it. pre_screening id and status are read only. A new form field: {"id": "custom_", "title", "field_type": text|file|radio, "type": required|optional, "options": ["Yes", "No"] for radio}; it goes after the fields get_interview_definition include=process returns. pre_screening all_rules_fulfilled_auto_approve approves a candidate who meets every rule without review; whether they then move on by themselves is advance (auto), a separate setting. expected_updated_at takes the step's updated_at from get_interview_definition include=process; when the step changed since, the call is refused with 409. Settings are live: candidates already on the step get them at once. dry_run=true shows the changed keys, the candidates on the step, booked meetings and warnings, and saves nothing. Nobody is e-mailed. A new meeting duration applies to slots created afterwards; existing slots keep theirs (manage_meeting_slot changes them).
Every argument in full, with examples: get_tool_reference.
Inputs: step_id (required), name, certo, kombo, +9 more. Returns: step, dry_run, warnings, changed_keys, +3 more
upload_knowledge_base_documentUpload knowledge base documentADestructiveInspect
[Knowledge base] Upload and process a knowledge base document (base64 file, name with its extension) into a store from list_knowledge_base_stores. An interview uses a store once create_interview / update_interview set its knowledge_base_store_id: interview_ids can only name interviews already linked to the store. The optional interview_ids limits it to chosen interviews on the same knowledge base: left out it is every interview, [] is none. Returns the limit it set.
Every argument in full, with examples: get_tool_reference.
Inputs: file (required), name (required), knowledge_base_store_id (required), llm_model, +3 more. Returns: interview_ids, _mcp_instructions, knowledge_base_id, limit_to_interviews
upload_media_fileUpload a file to the media libraryADestructiveInspect
[Admin] Upload a file to the company's media library and return it, ready to use.
Sends the file (base64) and has it checked: its real type, the codec of a
video, and anything active in an SVG, which is refused rather than cleaned.
The returned file.url is what page blocks, brand logos and font settings take.
The library is public: a file can be reached by anyone with its address.
Switched on per company by JobMojito; while it is off this is refused with 403.
A file too large to pass as an argument goes through start_media_upload and finish_media_upload, for a client that can send a file to an address.
Inputs: file (required), file_name (required), content_type (required), width, +8 more. Returns: _mcp_instructions
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Mock job interviews: prepare a spoken practice interview for any role, get a link. No sign-in.
AI-powered hiring for recruiters & candidates - video interviews, transcripts, scores, profiles.
AI interview practice and career preparation with user-controlled guidance.
AI voice interviewer: create roles, screen CVs, schedule interviews, read scored reports.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceJob search assistant and interview prep inside any ai tool via MCP or public skill. Every tool you'll need for your job search in one product.15 npm8MIT- FlicenseNot gradedqualityCmaintenanceGenerate tailored job descriptions, hire senior developers and pull technical interview questions without leaving the conversation.48-
- AlicenseAqualityDmaintenanceEnables interview preparation by analyzing resumes and job descriptions, generating role-specific questions, and evaluating answers using MCP tools integrated with an OpenAI agent.5MIT
- AlicenseNot gradedqualityDmaintenanceIntelligent interview assistant that parses resumes, generates interview questions, records conversations, and produces evaluation reports for technical interviews.9Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.