accueil / serveurs / Fichiers & Documents / com.jobmojito/jobmojito
com.jobmojito/jobmojito
serveur MCP (Model Context Protocol) · JobMojito 1.4.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que com.jobmojito/jobmojito est sûr ?
Au dernier audit MCP Hub, le serveur MCP « com.jobmojito/jobmojito » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 38 outils
- create_catalogue_directory≈ 2754 tokens
[Coaching catalogue] 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. One directory can hold several languages: the top-level fields are the default language, `translations` adds the others. Coaching-platform feature. Creates a directory (page) in the coaching portal catalogue. A directory nests other directories through `tags_sub`, lists coaching sessions through `tags_interview_set_filter`, and can replace the default grid with a custom Markdown page through `content_md`. The id you choose is the catalogue URL segment and cannot be changed afterwards.
Paramètres, retour & exemple (15)
Paramètresid· string|null · requis
Directory id — also the catalogue URL segment (/catalogue/<id>) and the value other directories reference in their `tags_sub`. Lowercase letters, digits and single - or _ separators. Convention is to end language-specific directories with the language code, e.g. `sales-coaching-en`.name· string|null · requis
Display name of the directory, shown as the page title and on its card.status· string|null · optionnel · draft | active | archived | None
Lifecycle status of the catalogue directory. Options — `draft`: Not published — the directory exists but is not served to visitors. | `active`: Published and served in the catalogue. | `archived`: Retired — kept for reference but no longer served..tags_sub· array|null · optionnel
Ids of the directories nested under this one, in display order. Replaces the whole list — send the full set, not just the additions. A referenced directory only appears if it exists and is visible to the viewer.coach_plan· string|null · optionnel · demo | screening | 2nd | 3rd | closing | job-specific | other | None
Coaching-plan stage this item belongs to, used by the coaching-plan progress view. Omit/null to leave it out of any plan. Options — `demo`: Demo session. | `screening`: Screening-interview practice. | `2nd`: Second-interview practice. | `3rd`: Third-interview practice. | `closing`: Closing / salary-negotiation practice. | `job-specific`: Job-specific coaching. | `other`: Anything that does not fit the other buckets..content_md· string|null · optionnel
Markdown for a custom directory page. When set (even as an empty string) the markdown replaces the default grid and decides the layout itself; null renders the plain grid of sub-directories and sessions. Alongside normal Markdown you can place these directives, each ALONE on its own line: `[plan-progress]` (the learner's coaching-plan progress), `[directory:<tag-id>]` (a card for one sub-directory), `[session:<interview-id>]` (a card for one session), `[sessions]` (every session in this directory), `[sessions:<term>]` (sessions matching a term), `[sessions:filter=<term>,limit=<n>]` (a filtered, capped list). A directive on a line with other text is rendered as ordinary text. Chips, callouts, cards, columns and buttons are available here too — full vocabulary: https://developer.jobmojito.com/cookbooks/format-content-with-markdownparent_tag· string|null · optionnel
Id of an existing directory to nest this new one under: the new id is appended to that directory's `tags_sub`. Omit to create a top-level directory (reachable via a direct link, or by adding it to another directory later).visibility· string|null · optionnel · public | merchant_public | merchant_invite | merchant_unlisted | None
Who can see the catalogue directory. Options — `public`: Shared across every merchant. Platform admins only — a merchant caller is rejected by row-level security. | `merchant_public`: Listed in the merchant's own catalogue — the normal choice. | `merchant_invite`: Owned by the merchant but not listed; reachable only for invited users. | `merchant_unlisted`: Owned by the merchant but not listed; reachable only via a direct link..description· string|null · optionnel
Short description shown on the directory card.merchant_id· string|null · optionnel
Merchant that owns the directory. Admin / sub-merchant callers only; otherwise taken from your token.translations· object|null · optionnel
Other language versions of the directory, keyed by mojito language code. The top-level fields are the default language (`mojito_language_code`); each version is a page of its own (name, Markdown, session filter, sub-directories) shown to learners who pick that language. A key may not equal `mojito_language_code`.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.cover_image_url· string|null · optionnel
Cover image URL shown on the directory card.mojito_language_code· string|null · optionnel · ar | bg | zh | hr | cs | da | nl | en
Language of the directory (one of the platform-languages.json codes). The catalogue groups directories by language; defaults to `en` when omitted.tags_interview_set_filter· array|null · optionnel
Tag filter selecting which coaching sessions this directory lists: a session appears when its own `tags` contain EVERY tag here (an AND, not an OR). Only `active` coaching/persona sessions with visibility `public` or `merchant_public` are listed. Set the matching tags on the session with the create-interview / job-interview-update `tags` field.
Exemple d'appel{"name": "create_catalogue_directory", "arguments": {"id": "texte", "name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "parent_tag": "texte", "merchant_id": "texte", "catalogue_url": "texte", "_mcp_instructions": {}}} - create_interview≈ 5350 tokens
[Interviews] Create a new interview and auto-generate its question sequence from position data. The `interview_template_id` you pass also sets the modality (voice-only vs realtime/pre-recorded avatar) — see `list_avatars`. Creates a new interview / coaching / assessment definition, generates its description, questions and candidate expectations via AI, and provisions default steps. Optionally provisions an embed key.
Paramètres, retour & exemple (48)
Paramètrescode· string|null · optionnel
Optional external code/reference for the interview.name· string|null · requis
Interview / position name.tags· array|null · optionnel
Free-form tags stored on the interview. Tags are also the coaching-catalogue mapping key: a catalogue directory (see the catalogue-tag-create / catalogue-tag-update endpoints) lists a coaching or persona session when the session's tags contain EVERY tag in that directory's `tags_interview_set_filter`. Only `active` sessions with visibility `public` or `merchant_public` are listed.type· string|null · requis · interview | coaching | assessment | None
Product type of the interview. Options — `interview`: Standard candidate interview for a role — answers are AI-scored and produce a hiring recommendation. | `coaching`: Practice/coaching session — candidate-facing feedback to help them improve; not a hiring evaluation. Only available on the coaching portal, NOT the interview portal. | `assessment`: Skills/knowledge assessment — evaluates competencies and is scored like an interview..status· string|null · requis · draft | active | None
Lifecycle status of the interview. Options — `draft`: Created but not published — not visible to candidates and cannot be run yet. Use to stage an interview before going live. | `active`: Published and live — candidates can run it..location· string|null · requis
Job location — a city/country, or `remote`. Required and must not be empty: when the job description gives no location, pass `Not specified`.recording· string|null · optionnel · audio_first_5_answers | audio_all | video_all | video_first_5_answers | None
Cheating/proctoring detection mode for candidate answers — this is NOT a full session recording. Video options also record the candidate. Omit/null to disable. Options — `audio_first_5_answers`: Audio-only cheating detection, first 5 answers only. | `audio_all`: Audio-only cheating detection on every answer. | `video_all`: Audio + video cheating detection on every answer (candidate is recorded for all answers). | `video_first_5_answers`: Audio + video cheating detection, first 5 answers only..visibility· string|null · requis · merchant_public | merchant_invite | merchant_unlisted | None
Who can discover and access the interview. Options — `merchant_public`: Listed on the merchant's public interview list — anyone with the merchant link can find and start it. | `merchant_invite`: Invite-only — only candidates explicitly invited (by email/link) can access it; not listed anywhere. | `merchant_unlisted`: Reachable only via a direct link — not listed anywhere; share the link manually..description· string|null · optionnel
Short, two-sentence job description shown to the candidate. Provide it to use it as-is; leave it null/blank and it is AI-generated from the position name and any other context.environment· string|null · optionnel · production | uat | development | demo | None
Which of your webhook environments results from this interview are delivered to. Defaults to production. Options — `production`: Live hiring. Results reach the webhooks configured as production. This is the default when the field is omitted. | `uat`: User-acceptance testing - an isolated environment for pre-release verification. | `development`: Development/testing. Use for interviews created by a test or preview app so their results never reach the production webhook. | `demo`: Demonstrations and sales trials..is_embedded· boolean|null · optionnel
Set true when the interview will be embedded as an iframe on an external page. Provisions an embed key and returns embed_id / embed_signing_key, which are used to authenticate/sign the iframe embed. Where it runs depends on the type: interviews, assessments and interview role-plays embed on the interview portal (`https://<interview portal domain>/embed?embed_id=...`); coaching sessions and coaching personas embed on the consumer (coaching) portal (`https://<coaching portal domain>/embed?embed_id=...`, a link built on the interview portal is forwarded there). A signed coaching embed (name, email, signature) signs the visitor in as a learner of that portal, and the session is charged to the merchant's interview credits on completion, not to the learner's coaching credits; it cannot start while the merchant has none.merchant_id· string|null · optionnel
Merchant id. Admin / sub-merchant callers only; otherwise taken from your token.result_view· string|null · optionnel · none | minimal | minimal_with_score | advanced | full | full_expand_scores | None
Result screen shown to the candidate after finishing. With any value other than `none`, the candidate sees a results screen where they can provide feedback, record an intro video and edit the transcript, and must then submit the result; the value sets how much score/result detail is shown. Options — `none`: No results screen at all — the interview is submitted immediately when the candidate finishes (no feedback, intro video, transcript edit or manual submit step). | `minimal`: Minimal results layout, no score shown. | `minimal_with_score`: Minimal results layout including the overall score. | `advanced`: Advanced results layout with more detail. | `full`: Full results layout with all sections. | `full_expand_scores`: Full results with every score breakdown expanded..max_duration· number|null · optionnel
Maximum interview duration in seconds. Scopes how many questions are generated (see interview_length) and is stored on the interview as the live session limit and the basis for the credit multiplier. Defaults to 1200 (20 minutes) when omitted.max_followups· integer|null · optionnel
Maximum number of AI follow-up questions. 0 disables follow-ups; presets are 0-3 (none/low/normal/high) and custom values start at 4; null uses the template default (Normal).custom_scoring· object|null · optionnel
Custom result-scoring overrides merged with defaults and template overrides.interview_tone· string|null · optionnel · relaxed | simple | professional | persuasive | exact | None
Interview tone — configures the AI avatar's speaking style and the tone of the AI-generated questions and follow-ups. Case-insensitive; omit to default to relaxed. Options — `relaxed`: Friendly and conversational tone that helps candidates feel at ease. | `simple`: Plain language at CEFR A2 level — short sentences and simple words. | `professional`: Formal and business-like approach suitable for senior roles. | `persuasive`: Engaging style that encourages candidates to elaborate. | `exact`: Asks the questions exactly as provided, without rephrasing — for interviews built from your own questions (create_interview_from_questions) where the wording is a script..interview_type· string|null · optionnel · pre-screening | pre-screening-with-test-questions | second-interview | remote-freelancer-verification | strength-based-interview | potential-based-interview | process-verification-from-knowledge-base | knockout-screening
Interview style — configures the AI avatar and shapes both the AI-generated questions and the follow-up questions asked during the interview. Defaults to pre-screening when omitted. Options — `pre-screening`: Pre-screening — quick qualification check focusing on basic requirements and availability. | `pre-screening-with-test-questions`: Pre-screening with test questions — pre-screening plus practical questions to test relevant skills. | `second-interview`: Second round interview — deeper dive for candidates who passed initial screening. | `remote-freelancer-verification`: Remote worker verification — verify remote work capabilities and communication skills. | `strength-based-interview`: Strength-based interview — focus on what candidates enjoy and excel at to predict job satisfaction. | `potential-based-interview`: Potential-based interview — assess learning ability and growth potential rather than past experience. | `process-verification-from-knowledge-base`: Knowledge Base interview — generate questions from your knowledge base documents. | `knockout-screening`: Knock-out screening — a short (about 5 minute) check of the role's must-haves with closed questions; ends early, politely, when a must-have is clearly not met. On creation it defaults custom_scoring.early_stop to true (where the avatar supports early stop) and max_followups to 1 unless you send them..conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.cover_image_url· string|null · optionnel
Cover image URL.seniority_level· string|null · optionnel · entry-level | intermediate | senior | managerial | director | executive | None
Target seniority level for the role; auto-detected from the job description when omitted. Options — `entry-level`: Early-career or graduate roles. | `intermediate`: Some experience required. | `senior`: Experienced professional. | `managerial`: Team or department lead. | `director`: Director-level responsibility. | `executive`: C-suite or executive role..welcome_message· string|null · optionnel
Custom welcome message shown to the candidate.description_long· string|null · optionnel
Full job description in Markdown (Job Purpose, Responsibilities, Required & Preferred Qualifications). Provide it to use it as-is; leave it null/blank and it is AI-generated (interview and assessment types only). Rendered as Markdown on the candidate-facing position page, including chips, callouts, cards, columns and buttons — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdowninterview_length· ? · optionnel
Number of questions to generate (1-40). Also capped by max_duration, which allows one question per 2 minutes: 20 min -> 10 questions, 30 min -> 15, 45 min -> 22, 60 min -> 30, 80 min -> 40. Asking for more than the cap is not an error — you get the cap, and the response reports the real count in questions_generated. Omit this field to let the AI pick 5-8.interview_salary· string|null · optionnel
Salary range shown for the position.thank_you_message· string|null · optionnel
Custom thank-you message shown after the interview.additional_context· object|null · optionnel
Arbitrary additional context object merged into AI generation.hiring_for_company· object|null · optionnel
Who the position is really for. Omit/null (or an object with name null/blank) when hiring for yourself; { name: 'undisclosed' } for an unnamed external client; or { name: '<company>' } plus optional description/location/sector/company_size for a named client. Stored in creation_parameters.hiring_for_company.interview_attempts· number|null · optionnel
Allowed candidate attempts (1-20).instructional_video· boolean|null · optionnel
Show an instructional video before approval. Defaults to false.interview_department· string|null · optionnel
Department the position belongs to.mojito_language_code· string|null · requis · ar | bg | zh | hr | cs | da | nl | en
Platform language code used for the interview. Must be one of the platform-languages.json codes.recruiter_profile_id· string|null · optionnel
Profile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant.interview_template_id· string|null · requis
Id of the interview template to base this interview on.candidate_expectations· string|null · optionnel
Free-text candidate expectations folded into AI generation.include_closing_prompt· boolean|null · optionnel
Include a closing prompt. Defaults to true.pdf_export_auto_config· object|null · optionnel
Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export.recording_full_session· string|null · optionnel · audio_all | video_all | None
Full interview-session recording (includes the avatar and voice) produced as a single file. Independent of `recording`. Omit/null to disable. Options — `audio_all`: Record the whole session audio (avatar + candidate voice) into a single file. Adds +0.2 credits. | `video_all`: Record the whole session video + audio (avatar + candidate) into a single file. Adds +0.4 credits..required_pronunciation· boolean|null · optionnel
Require pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false.knowledge_base_store_id· string|null · optionnel
Knowledge base store id to source additional context from.questions_random_subset· number|null · optionnel
Ask only a random subset of the questions, expressed as a fraction between 0.01 and 0.9 (e.g. 0.5 = 50%). null asks all questions.include_rapport_question· boolean|null · optionnel
Include an opening rapport question. Defaults to false.interview_available_till· string|null · optionnel
ISO date/time after which the interview is no longer available to candidates. null keeps it always available.use_enhanced_expectations· boolean|null · optionnel
Reserved flag passed through to generation.candidate_video_introduction· string|null · optionnel · optional | required | None
Whether a candidate video introduction is optional or required.interview_conversation_speed· string|null · optionnel · slower | normal | faster | None
Conversation pace of the AI avatar. Omit/null keeps the template default pace. Options — `slower`: The avatar speaks more slowly — easier to follow for non-native speakers. | `normal`: Default speaking pace. | `faster`: The avatar speaks more quickly for a snappier conversation..result_enable_edit_transcript· boolean|null · optionnel
Allow editing the transcript on the result view. Defaults to true.instructional_video_custom_text· string|null · optionnel
Custom narration text for the instructional video.
Exemple d'appel{"name": "create_interview", "arguments": {"name": "texte", "type": "interview", "status": "draft", "location": "texte", "visibility": "merchant_public", "mojito_language_code": "ar"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"embed_id": "texte", "max_duration": 1, "_mcp_instructions": {}, "embed_signing_key": "texte", "questions_generated": 1, "interview_def_set_id": "texte"}} - create_interview_from_questions≈ 5718 tokens
[Interviews] Create a new interview from an explicit array of questions. The AI rephrases your wording by default; pass `interview_tone="exact"` to have each question asked verbatim, which is what you want when the wording is a script (compliance, translated, or legally reviewed text). Creates a new interview definition set from a caller-provided array of questions, builds its default and generated steps, optionally activates it, and optionally creates an embed key.
Paramètres, retour & exemple (46)
Paramètrescode· string|null · optionnel
Optional external code/reference.name· string|null · requis
Interview/position name.tags· array|null · optionnel
Free-form tags stored on the interview. Tags are also the coaching-catalogue mapping key: a catalogue directory (see the catalogue-tag-create / catalogue-tag-update endpoints) lists a coaching or persona session when the session's tags contain EVERY tag in that directory's `tags_interview_set_filter`. Only `active` sessions with visibility `public` or `merchant_public` are listed.type· string|null · requis · interview | coaching | assessment | None
Product type of the interview. Options — `interview`: Standard candidate interview for a role — answers are AI-scored and produce a hiring recommendation. | `coaching`: Practice/coaching session — candidate-facing feedback to help them improve; not a hiring evaluation. Only available on the coaching portal, NOT the interview portal. | `assessment`: Skills/knowledge assessment — evaluates competencies and is scored like an interview..status· string|null · requis · draft | active | None
Lifecycle status of the interview. Options — `draft`: Created but not published — not visible to candidates and cannot be run yet. Use to stage an interview before going live. | `active`: Published and live — candidates can run it..location· string|null · requis
Job location — a city/country, or `remote`. Required and must not be empty: when the job description gives no location, pass `Not specified`.questions· array|null · requis
Ordered list of interview questions to create as steps.recording· string|null · optionnel · audio_first_5_answers | audio_all | video_all | video_first_5_answers | None
Cheating/proctoring detection mode for candidate answers — this is NOT a full session recording. Video options also record the candidate. Omit/null to disable. Options — `audio_first_5_answers`: Audio-only cheating detection, first 5 answers only. | `audio_all`: Audio-only cheating detection on every answer. | `video_all`: Audio + video cheating detection on every answer (candidate is recorded for all answers). | `video_first_5_answers`: Audio + video cheating detection, first 5 answers only..visibility· string|null · requis · merchant_public | merchant_invite | merchant_unlisted | None
Who can discover and access the interview. Options — `merchant_public`: Listed on the merchant's public interview list — anyone with the merchant link can find and start it. | `merchant_invite`: Invite-only — only candidates explicitly invited (by email/link) can access it; not listed anywhere. | `merchant_unlisted`: Reachable only via a direct link — not listed anywhere; share the link manually..description· string|null · requis
Short interview description.environment· string|null · optionnel · production | uat | development | demo | None
Which of your webhook environments results from this interview are delivered to. Defaults to production. Options — `production`: Live hiring. Results reach the webhooks configured as production. This is the default when the field is omitted. | `uat`: User-acceptance testing - an isolated environment for pre-release verification. | `development`: Development/testing. Use for interviews created by a test or preview app so their results never reach the production webhook. | `demo`: Demonstrations and sales trials..is_embedded· boolean|null · optionnel
Set true when the interview will be embedded as an iframe on an external page. Creates an embed key and returns embed_id/embed_signing_key, used to authenticate/sign the iframe embed.merchant_id· string|null · optionnel
Target merchant id (admins / sub-merchant only).result_view· string|null · optionnel · none | minimal | minimal_with_score | advanced | full | full_expand_scores | None
Result screen shown to the candidate after finishing. With any value other than `none`, the candidate sees a results screen where they can provide feedback, record an intro video and edit the transcript, and must then submit the result; the value sets how much score/result detail is shown. Options — `none`: No results screen at all — the interview is submitted immediately when the candidate finishes (no feedback, intro video, transcript edit or manual submit step). | `minimal`: Minimal results layout, no score shown. | `minimal_with_score`: Minimal results layout including the overall score. | `advanced`: Advanced results layout with more detail. | `full`: Full results layout with all sections. | `full_expand_scores`: Full results with every score breakdown expanded..max_followups· integer|null · optionnel
Maximum number of AI follow-up questions. 0 disables follow-ups; presets are 0-3 (none/low/normal/high) and custom values start at 4; null uses the template default (Normal).custom_scoring· object|null · optionnel
Custom scoring overrides merged with defaults.interview_tone· string|null · optionnel · relaxed | simple | professional | persuasive | exact | None
Tone — configures the AI avatar's speaking style and the follow-up questions it generates; the base `questions` you supply are not affected. Case-insensitive; omit to default to relaxed. Options — `relaxed`: Friendly and conversational tone that helps candidates feel at ease. | `simple`: Plain language at CEFR A2 level — short sentences and simple words. | `professional`: Formal and business-like approach suitable for senior roles. | `persuasive`: Engaging style that encourages candidates to elaborate. | `exact`: Asks the questions exactly as provided, without rephrasing — for interviews built from your own questions (create_interview_from_questions) where the wording is a script..interview_type· string|null · optionnel · pre-screening | pre-screening-with-test-questions | second-interview | remote-freelancer-verification | strength-based-interview | potential-based-interview | process-verification-from-knowledge-base | knockout-screening
Interview style — configures the AI avatar and the follow-up questions it generates during the interview. The base `questions` you supply are used as-is and are NOT affected by this setting. Options — `pre-screening`: Pre-screening — quick qualification check focusing on basic requirements and availability. | `pre-screening-with-test-questions`: Pre-screening with test questions — pre-screening plus practical questions to test relevant skills. | `second-interview`: Second round interview — deeper dive for candidates who passed initial screening. | `remote-freelancer-verification`: Remote worker verification — verify remote work capabilities and communication skills. | `strength-based-interview`: Strength-based interview — focus on what candidates enjoy and excel at to predict job satisfaction. | `potential-based-interview`: Potential-based interview — assess learning ability and growth potential rather than past experience. | `process-verification-from-knowledge-base`: Knowledge Base interview — generate questions from your knowledge base documents. | `knockout-screening`: Knock-out screening — a short (about 5 minute) check of the role's must-haves with closed questions; ends early, politely, when a must-have is clearly not met. On creation it defaults custom_scoring.early_stop to true (where the avatar supports early stop) and max_followups to 1 unless you send them..conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.cover_image_url· string|null · optionnel
Cover image URL.seniority_level· string|null · optionnel · entry-level | intermediate | senior | managerial | director | executive | None
Target seniority level for the role; auto-detected from the job description when omitted. Options — `entry-level`: Early-career or graduate roles. | `intermediate`: Some experience required. | `senior`: Experienced professional. | `managerial`: Team or department lead. | `director`: Director-level responsibility. | `executive`: C-suite or executive role..welcome_message· string|null · optionnel
Custom welcome message.description_long· string|null · optionnel
Long-form interview description. Rendered as Markdown on the candidate-facing position page, including chips, callouts, cards, columns and buttons — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdowninterview_salary· string|null · optionnel
Salary range shown for the position.thank_you_message· string|null · optionnel
Custom thank-you message.additional_context· object|null · optionnel
Extra context forwarded to expectation generation.hiring_for_company· object|null · optionnel
Who the position is really for. Omit/null (or an object with name null/blank) when hiring for yourself; { name: 'undisclosed' } for an unnamed external client; or { name: '<company>' } plus optional description/location/sector/company_size for a named client. Stored in creation_parameters.hiring_for_company.interview_attempts· number|null · optionnel
Allowed attempts, 1-20.instructional_video· boolean|null · optionnel
Enable an instructional video before approval.interview_department· string|null · optionnel
Department the position belongs to.mojito_language_code· string|null · requis · ar | bg | zh | hr | cs | da | nl | en
Platform language code (one of the platform-languages.json codes); must also resolve to a supported language with an Azure speech mapping.recruiter_profile_id· string|null · optionnel
Profile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant.disable_deduplication· boolean|null · optionnel
When true, skip step deduplication on insert.interview_template_id· string|null · requis
Id of the interview template to use. Must reference an existing interview_templates row.candidate_expectations· string|null · optionnel
Free-text candidate expectations.pdf_export_auto_config· object|null · optionnel
Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export.recording_full_session· string|null · optionnel · audio_all | video_all | None
Full interview-session recording (includes the avatar and voice) produced as a single file. Independent of `recording`. Omit/null to disable. Options — `audio_all`: Record the whole session audio (avatar + candidate voice) into a single file. Adds +0.2 credits. | `video_all`: Record the whole session video + audio (avatar + candidate) into a single file. Adds +0.4 credits..required_pronunciation· boolean|null · optionnel
Require pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false.knowledge_base_store_id· string|null · optionnel
Optional knowledge base store id; validated for existence.questions_random_subset· number|null · optionnel
Fraction of questions to randomly ask, between 0.01 and 0.9.interview_available_till· string|null · optionnel
ISO date/time after which the interview is no longer available to candidates. null keeps it always available.candidate_expectations_json· object|null · optionnel
Pre-generated candidate expectations, bucketed by requirement level (weak/moderate/strong); auto-generated when omitted for type=interview. Extra keys are preserved.candidate_video_introduction· string|null · optionnel · optional | required | None
Whether a candidate video introduction is optional or required.interview_conversation_speed· string|null · optionnel · slower | normal | faster | None
Conversation pace of the AI avatar. Omit/null keeps the template default pace. Options — `slower`: The avatar speaks more slowly — easier to follow for non-native speakers. | `normal`: Default speaking pace. | `faster`: The avatar speaks more quickly for a snappier conversation..result_enable_edit_transcript· boolean|null · optionnel
Allow editing the transcript on the result view. Defaults to true.instructional_video_custom_text· string|null · optionnel
Custom text for the instructional video.
Exemple d'appel{"name": "create_interview_from_questions", "arguments": {"name": "texte", "type": "interview", "status": "draft", "location": "texte", "questions": [], "visibility": "merchant_public"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"embed_id": "texte", "_mcp_instructions": {}, "embed_signing_key": "texte", "interview_def_set_id": "texte"}} - create_persona≈ 4522 tokens
[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. FIRST CHOOSE `portal`, because it 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. Pass `portal="interview"` explicitly for any hiring, screening or assessment use. Then set `persona_role_avatar`/`persona_role_user` for the roles and `opening_line` for the avatar's first spoken line (defaults to a generic 'Hello'). FIRST DECIDE `portal`. This endpoint creates two different products and the default is NOT the recruiter one: - `portal: "interview"` — an INTERVIEW ROLE-PLAY. Use this whenever the goal is to ASSESS or SCREEN candidates: hiring, assessments, sales role-plays for job applicants, anything a recruiter runs. Candidates are invited through the normal invitation flow, results appear in the recruiter's result list, it is billed against merchant credits, and attempts are capped via `interview_attempts` — exactly like an interview. - `portal: "coaching"` (THE DEFAULT) — a coaching persona for practice/training on the coaching portal. Consumed against the mentee's own coaching credits, self-started from the catalogue, and its results are NOT visible to recruiters. Omitting `portal` gives you this one, so pass `portal: "interview"` explicitly for any recruiting/assessment use case. The conversation itself behaves identically in both. The avatar plays a defined role in a free-form conversation instead of running a scored Q&A interview. No AI question/description generation runs; the persona role fields ARE the configuration. The session runs as: a welcome message → the avatar's OPENING LINE (the first thing it says, set via `opening_line`) → the candidate replies and the free-form role-play begins → a closing message. Because there is no question list, `opening_line` is how the avatar starts the scene — set it to a concrete in-character line; if omitted it defaults to a generic "Hello". Set `welcome_message` and `thank_you_message` too — omitting them leaves the generic platform defaults. Also set `candidate_expectations`: it is the yardstick the session is scored against. The four avatar prompts divide up as: `persona_avatar_who_is` (identity and what drives it), `persona_avatar_knowledge` (the private facts it may use), `persona_avatar_progress` (how the conversation is allowed to move forward, and what gates the later personal details), and `persona_avatar_end_conditions` (when to stop). Without `persona_avatar_progress` the avatar has no defined arc and tends to either concede immediately or never concede at all. Provisions the default conversational steps and optionally an embed key.
Paramètres, retour & exemple (33)
Paramètrescode· string|null · optionnel
Optional external code/reference for the persona.name· string|null · requis
Persona / session name.tags· array|null · optionnel
Free-form tags stored on the persona. Tags are also the coaching-catalogue mapping key: a catalogue directory (see the catalogue-tag-create / catalogue-tag-update endpoints) lists a coaching or persona session when the session's tags contain EVERY tag in that directory's `tags_interview_set_filter`. Only `active` sessions with visibility `public` or `merchant_public` are listed.portal· string|null · optionnel · coaching | interview | None
REQUIRED IN PRACTICE — pick deliberately; the default is the coaching product, not the recruiting one. `interview`: an interview role-play. Choose this for ANY recruiting or assessment use case (screening candidates, hiring, sales role-plays for applicants). Candidates are invited through the normal invitation flow, results are visible to the recruiter alongside ordinary interview results, it is billed against your merchant credits on the same basis as an interview, and attempts are capped (see `interview_attempts`). | `coaching` (DEFAULT when omitted): the classic coaching persona for practice/training. Runs on the coaching portal, is consumed against the mentee's own coaching credits, is started by the mentee from the catalogue or a shared link, and its results are NOT visible to recruiters. The conversation itself behaves identically in both cases — only the portal, billing, visibility and attempt limits differ.status· string|null · requis · draft | active | None
Lifecycle status of the interview. Options — `draft`: Created but not published — not visible to candidates and cannot be run yet. Use to stage an interview before going live. | `active`: Published and live — candidates can run it..recording· string|null · optionnel · audio_first_5_answers | audio_all | video_all | video_first_5_answers | None
Cheating/proctoring detection mode for candidate answers — this is NOT a full session recording. Video options also record the candidate. Omit/null to disable. Options — `audio_first_5_answers`: Audio-only cheating detection, first 5 answers only. | `audio_all`: Audio-only cheating detection on every answer. | `video_all`: Audio + video cheating detection on every answer (candidate is recorded for all answers). | `video_first_5_answers`: Audio + video cheating detection, first 5 answers only..visibility· string|null · requis · merchant_public | merchant_invite | merchant_unlisted | None
Who can discover and access the interview. Options — `merchant_public`: Listed on the merchant's public interview list — anyone with the merchant link can find and start it. | `merchant_invite`: Invite-only — only candidates explicitly invited (by email/link) can access it; not listed anywhere. | `merchant_unlisted`: Reachable only via a direct link — not listed anywhere; share the link manually..description· string|null · optionnel
Short persona description shown to the candidate on the pre-session poster. Candidate-visible — keep it to max 2 sentences. Unlike job-interview-create, personas run no AI generation, so this is never auto-generated: leave it null/blank and the poster simply shows no description; set it to frame the scene.environment· string|null · optionnel · production | uat | development | demo | None
Which of your webhook environments results from this interview are delivered to. Defaults to production. Options — `production`: Live hiring. Results reach the webhooks configured as production. This is the default when the field is omitted. | `uat`: User-acceptance testing - an isolated environment for pre-release verification. | `development`: Development/testing. Use for interviews created by a test or preview app so their results never reach the production webhook. | `demo`: Demonstrations and sales trials..is_embedded· boolean|null · optionnel
Set true when the persona will be embedded as an iframe on an external page. Provisions an embed key and returns embed_id / embed_signing_key, used to sign the iframe link. Where it runs depends on the type: interviews, assessments and interview role-plays embed on the interview portal (`https://<interview portal domain>/embed?embed_id=...`); coaching sessions and coaching personas embed on the consumer (coaching) portal (`https://<coaching portal domain>/embed?embed_id=...`, a link built on the interview portal is forwarded there). A signed coaching embed (name, email, signature) signs the visitor in as a learner of that portal, and the session is charged to the merchant's interview credits on completion, not to the learner's coaching credits; it cannot start while the merchant has none.merchant_id· string|null · optionnel
Merchant id. Admin / sub-merchant callers only; otherwise taken from your token.result_view· string|null · optionnel · none | minimal | minimal_with_score | advanced | full | full_expand_scores | None
Result screen shown to the candidate after finishing. With any value other than `none`, the candidate sees a results screen where they can provide feedback, record an intro video and edit the transcript, and must then submit the result; the value sets how much score/result detail is shown. Options — `none`: No results screen at all — the interview is submitted immediately when the candidate finishes (no feedback, intro video, transcript edit or manual submit step). | `minimal`: Minimal results layout, no score shown. | `minimal_with_score`: Minimal results layout including the overall score. | `advanced`: Advanced results layout with more detail. | `full`: Full results layout with all sections. | `full_expand_scores`: Full results with every score breakdown expanded..max_duration· number|null · optionnel
Maximum conversation duration in seconds. Defaults to 1200 (20 min) when omitted.opening_line· string|null · optionnel
The avatar's opening line — the FIRST thing it says out loud when the session starts, before the candidate has said anything. This is a literal spoken line, NOT a description: write the exact words the avatar should say, in character and consistent with persona_role_avatar. For an escalated scenario it should already convey that state (e.g. an angry customer opens angrily). If omitted, the platform inserts a generic default ("Hello"), which is usually a weak opener — set this for anything other than a neutral greeting.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.cover_image_url· string|null · optionnel
Cover image URL.welcome_message· string|null · optionnel
Custom welcome message spoken to the candidate before the role-play starts — set it; omitting it leaves a generic platform default. This is the scene-setting message; the avatar's first in-character line is `opening_line`, which comes after it.persona_role_user· string|null · requis
The role the candidate (mentee) plays. Candidate-visible — shown on the pre-session poster as 'Your role', so write it as candidate-facing setup and keep it to max 2 sentences. Example: 'is to be a sales person trying to sell an additional product to the customer'.thank_you_message· string|null · optionnel
Custom thank-you message shown after the session — set it; omitting it leaves a generic platform default.interview_attempts· number|null · optionnel
Allowed candidate attempts (1-20), defaulting to 3. Only meaningful when `portal` is `interview`; coaching personas are unlimited. A recruiter can still grant an extra attempt afterwards.interview_location· string|null · optionnel
Optional location label shown for the session.persona_role_avatar· string|null · requis
The role the AI avatar plays. Candidate-visible — shown on the pre-session poster as 'Role of the agent', so write it as candidate-facing setup and keep it to max 2 sentences. Example: 'is to act as a happy customer responding to questions'.mojito_language_code· string|null · requis · ar | bg | zh | hr | cs | da | nl | en
Platform language code used for the conversation. Must be one of the platform-languages.json codes.recruiter_profile_id· string|null · optionnel
Profile id of the recruiter owning this persona. Must be a merchant/merchant_owner/admin profile of the same merchant.interview_template_id· string|null · requis
Id of the interview template (avatar) the persona uses.persona_avatar_who_is· string|null · optionnel
Who the avatar represents: name, role, context, personality, woven with what drives them underneath (motive, fear, what they refuse until heard, what they do not know until told). One continuous description; no labelled subsections.candidate_expectations· string|null · optionnel
Mentee assessment goals — free-text describing what the candidate is expected to achieve (max 2100 chars).recording_full_session· string|null · optionnel · audio_all | video_all | None
Full interview-session recording (includes the avatar and voice) produced as a single file. Independent of `recording`. Omit/null to disable. Options — `audio_all`: Record the whole session audio (avatar + candidate voice) into a single file. Adds +0.2 credits. | `video_all`: Record the whole session video + audio (avatar + candidate) into a single file. Adds +0.4 credits..persona_avatar_progress· string|null · optionnel
How the conversation moves forward — one plain-text value starting with `Mode: turning point` (resistance) or `Mode: steps` (difficult conversation protocol), then the labelled lines for that mode (Initial hold / Unlocks when / … or Framework / Steps / …), including a Gates line: do not share later personal details from persona_avatar_knowledge until progress is earned.persona_avatar_knowledge· string|null · optionnel
Private facts the avatar can use (numbers, dates, names, objections), plus any personal details shareable only after progress and only if natural — timing written inline, not as labelled subsections. Those personal details are never required for the goal.candidate_video_introduction· string|null · optionnel · optional | required | None
Whether a candidate video introduction is optional or required.interview_conversation_speed· string|null · optionnel · slower | normal | faster | None
Conversation pace of the AI avatar. Omit/null keeps the template default pace. Options — `slower`: The avatar speaks more slowly — easier to follow for non-native speakers. | `normal`: Default speaking pace. | `faster`: The avatar speaks more quickly for a snappier conversation..persona_avatar_end_conditions· string|null · optionnel
When the avatar should end the session. Prefer referring to persona_avatar_progress: wrap up when progress is complete (turning point unlocked and a plan accepted, or steps "Done when" reached), or when the conversation has clearly broken down.
Exemple d'appel{"name": "create_persona", "arguments": {"name": "texte", "status": "draft", "visibility": "merchant_public", "persona_role_user": "texte", "persona_role_avatar": "texte", "mojito_language_code": "ar"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"embed_id": "texte", "_mcp_instructions": {}, "embed_signing_key": "texte", "interview_def_set_id": "texte"}} - create_report≈ 2130 tokens
[Reports] Save a new custom report from a definition (schema jobmojito.report/v1). It is created as Only me: tell the user they can share it from the returned admin_url. Check the definition with preview_report first. Stores a new custom report. It is created as "Only me" (private to you); share it from the JobMojito admin. Returns its id, version and the admin link to open it. Check the definition with preview_report first.
Paramètres, retour & exemple (3)
Paramètresdefinition· object · requis
A custom report: report-wide filters and up to 12 blocks. Read report-catalog first for the dataset, field and measure ids.merchant_id· string|null · optionnel
Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "create_report", "arguments": {"definition": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "version": 1, "admin_url": "texte", "published": true, "_mcp_instructions": {}}} - generate_interview_report≈ 1722 tokens
[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. Generates an interview result report as a PDF (returns a signed URL), raw HTML, or structured JSON. Provide either `interview_result_id` for a single result or `interview_result_ids` for a combined multi-result report.
Paramètres, retour & exemple (7)
Paramètrestemplate· ? · optionnelstore_file· boolean|null · optionnel
When true (pdf only), persist the file to storage and return a signed URL.export_type· string|null · requis · pdf | html | json | Noneconversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.interview_result_id· string|null · optionnelinterview_result_ids· array|null · optionnel
Generate a single combined report for multiple results.export_features_result· object · optionnel
Exemple d'appel{"name": "generate_interview_report", "arguments": {"export_type": "pdf"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte", "_mcp_instructions": {}}} - generate_interview_url≈ 636 tokens
[Interviews] Generate a signed public interview URL/token. Generates a public, token-signed URL for an existing interview, profile, or result. The required id fields depend on `type`.
Paramètres, retour & exemple (7)
Paramètrestype· string|null · requis · interview-for-profile | results-for-profile | interview-result-candidate | interview-result-talent-seeker | interview-results-for-position | None
Which kind of signed URL to generate.hide_menu· ? · optionnel
Pass the string 'false' to show the navigation menu; any other value hides it (default).merchant_id· string|null · optionnel
Override merchant id (admin / sub-merchant only).interview_id· string|null · optionnel
Interview or position id. Required for interview-for-profile and interview-results-for-position.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.interview_result_id· string|null · optionnel
Interview result id. Required for interview-result-candidate and interview-result-talent-seeker.interview_profile_id· string|null · optionnel
Candidate profile id. Required for interview-for-profile and results-for-profile.
Exemple d'appel{"name": "generate_interview_url", "arguments": {"type": "interview-for-profile"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte", "_mcp_instructions": {}}} - get_catalogue_directory≈ 2672 tokens
[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 is how you verify that a session's `tags` actually place it in this directory. Read before updating: `content_md`, `tags_sub` and `tags_interview_set_filter` are replaced wholesale, so you need the current value to extend it. Other language versions of the page are in `translations` (`languages` lists them, default first). Reads one catalogue directory in full: its settings, its custom Markdown page (`content_md`), the sub-directories it nests, and the coaching sessions its `tags_interview_set_filter` currently matches. Read a directory before updating it — `content_md`, `tags_sub` and `tags_interview_set_filter` are replaced wholesale by catalogue-tag-update, so you need the current value to extend rather than overwrite it.
Paramètres, retour & exemple (4)
Paramètresid· string · requis
Id of the catalogue directory to read (the catalogue URL segment). The old id of a renamed directory also works; the response carries its current `id`.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.mojito_language_code· string · optionnel · ar | bg | zh | hr | cs | da | nl | en
Show `sub_directories` and `matched_sessions` for this language version of the directory (one of its `languages`) instead of the default one - how you verify a translation lists the right sessions.
Exemple d'appel{"name": "get_catalogue_directory", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "name": "texte", "status": "texte", "tags_sub": [], "languages": [], "coach_plan": "texte", "content_md": "texte", "created_at": "texte", "updated_at": "texte", "visibility": "texte", "description": "texte", "merchant_id": "texte"}} - get_documentation≈ 392 tokens
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.
Paramètres, retour & exemple (3)
Paramètresurl· string · requis
The documentation page URL.max_chars· integer · optionnel
Truncate content to this many characters (default 20000).conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "get_documentation", "arguments": {"url": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"_mcp_instructions": {}}} - get_interview_definition≈ 4093 tokens
[Interviews] Get the definition/configuration of an interview (position), including its ordered `questions` array. The questions come back in the same format create_interview_from_questions accepts, so you can read an interview here, change the array, and send it to update_interview. Each question's `id` identifies it — keep the ids you did not mean to change. Retrieves the interview definition for a given interview-definition id or position id. Returns the compiled `calc_definition_json`, the ordered `questions` array (in the same format job-interview-create-from-array accepts, so it round-trips into job-interview-update) plus basic metadata. Access is subject to the caller's row-level security.
Paramètres, retour & exemple (2)
Paramètresposition_id· string · requis
Identifier of either an interview definition (single-stage) or a position definition (multi-stage). The function resolves whichever matches.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "get_interview_definition", "arguments": {"position_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"code": "texte", "name": "texte", "slug": "texte", "tags": [], "type": "coaching", "stage": "Interest", "status": "draft", "questions": [], "recording": "audio_first_5_answers", "coach_plan": "demo", "created_at": "texte", "updated_at": "texte"}} - get_interview_result_details≈ 2438 tokens
[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. Returns an interview result with its full transcript and AI assessment. Optionally attaches signed recording URLs.
Paramètres, retour & exemple (4)
Paramètresview· string · optionnel · summary | standard | full
How much of the record to return. Handled by the MCP server, not the JobMojito API — it only narrows the response, never the query. - `summary`: scores, the overall AI analysis, and each question with the candidate's answer — no per-answer AI commentary, recording paths or raw assessment data. Use this to review or compare candidates. - `standard`: everything a human reviewer reads: the full transcript with per-answer analysis, scores and recordings, minus the raw machine assessment blobs. This is the default. - `full`: every field, including the per-answer raw assessment data — condensed: pronunciation and sentiment scores per recognised segment with the lowest-scoring words, reading/gaze statistics, STT reliability, proctor status and seconds per detected speaker. Word-, character- and frame-level arrays are left out (listed in `_omitted`). Only ask for this if you need those assessment details.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.interview_result_id· string · requis
The interview result to fetch the transcript and details for.get_signed_recordings· string · optionnel · true | false
When true, includes short-lived signed recording URLs for the session, the video introduction, and each transcript answer.
Exemple d'appel{"name": "get_interview_result_details", "arguments": {"interview_result_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"end": "texte", "score": 1, "start": "texte", "status": "texte", "duration": 1, "score_text": "texte", "transcript": [], "ai_analysis": "texte", "score_answer": 1, "recording_url": "texte", "recruiter_risks": "texte", "score_sentiment": 1}} - get_merchant_analytics≈ 1046 tokens
[Results] Get the merchant's daily event analytics. Daily event-count time-series for a merchant over a date range (the admin-portal analytics events graph), scoped to your token's merchant (or a merchant_id override). Optionally drilled to a single interview. Capped at 1000 records per page. Note: only day/event combinations with a non-zero count are returned — any day/event pair absent from the response should be treated as a count of 0 by the caller.
Paramètres, retour & exemple (7)
Paramètreslimit· integer · optionnel
Maximum number of records to return (1–1000).offset· integer · optionnel
Number of records to skip from the start of the result set.date_to· string · requis
End of the date range (inclusive), YYYY-MM-DD.date_from· string · requis
Start of the date range (inclusive), YYYY-MM-DD.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.interview_id· string · optionnel
Optional interview (interview_def_set) or position (position_def_set) id to drill the event counts down. The type is detected automatically: a position aggregates the daily counts across every interview that makes up the position; an interview filters to that single definition.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "get_merchant_analytics", "arguments": {"date_to": "texte", "date_from": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - get_merchant_credit_usage≈ 1300 tokens
[Results] Get the merchant's credit usage. Per-event credit-usage ledger for a merchant: every billable analytics event (interview, pre-screening, public avatar, simulation, …) that consumed credits, ordered most recent first. Scoped to your token's merchant, or a merchant_id override for admins / sub-merchant operators. The credits consumed by each event are in stats.credit_amount. Capped at 1000 records per page.
Paramètres, retour & exemple (5)
Paramètreslimit· integer · optionnel
Maximum number of records to return (1–1000).offset· integer · optionnel
Number of records to skip from the start of the result set.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.interview_id· string · optionnel
Optional interview (interview_def_set) or position (position_def_set) id to drill the credit-usage ledger down to a single interview or position. The type is detected automatically: for a position the response combines pre-screening and interview-result credits across the whole position; for an interview it returns that interview's credit events (including simulations and report translations).conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "get_merchant_credit_usage", "arguments": {"limit": 1, "offset": 1, "merchant_id": "texte", "interview_id": "texte", "conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - get_merchant_status≈ 1441 tokens
[Admin] Get a merchant status snapshot: credit balances, subscription, pending-work counts, candidate/result totals, and invitation headroom. Status snapshot for a merchant: interview-credit balances, subscription type/status, pending-work counts (undecided / ongoing / uncredited interviews), candidate & result totals with 14-day history, and invitation headroom. Scoped to your token's merchant (or a merchant_id override for admins / sub-merchant operators). Also echoes the caller's profile_id and default_merchant_id from the token, plus the effective merchant_id.
Paramètres, retour & exemple (2)
Paramètresmerchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "get_merchant_status", "arguments": {"merchant_id": "texte", "conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"candidates": 1, "profile_id": "texte", "merchant_id": "texte", "invitations_sent": 1, "_mcp_instructions": {}, "interview_results": 1, "invitations_limit": 1, "subscription_type": "texte", "candidates_history": [], "definitions_active": 1, "interviews_ongoing": 1, "default_merchant_id": "texte"}} - get_report≈ 591 tokens
[Reports] Get a custom report's JSON definition, visibility, your access and its version. Read it before update_report: the definition is replaced whole and the version must match. The report's JSON definition, visibility, your access (owner, edit, view) and its version (needed to update it). People who can edit also get the unpublished draft, if any.
Paramètres, retour & exemple (3)
Paramètresid· string · requis
Report id (from list_reports).merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "get_report", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "title": "texte", "access": "owner", "version": 1, "admin_url": "texte", "definition": "texte", "visibility": "private", "draft_definition": "texte", "_mcp_instructions": {}}} - jobmojito_configuration≈ 316 tokens
Show the interactive JobMojito merchant picker (UI). ALWAYS call this when the user wants to choose, switch, or set a merchant, or when a tool needs a `merchant_id` and none is selected. It renders a searchable picker with clickable options. Do NOT list merchants as text or ask the user to type a name — render this picker instead. After calling it, STOP and wait for the user's selection; then pass `merchant_id=<chosen id>` on every JobMojito call (omit it for the user's own account).
Paramètres, retour & exemple (1)
Paramètresconversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "jobmojito_configuration", "arguments": {"conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - list_avatars≈ 1570 tokens
[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` you pass to the create-interview tools, so pick the template whose type matches the experience you want. 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 at a time; page with `offset` while `pagination.has_more` is true, or narrow with `type`/`filter_text`. Paginated list of a merchant's avatar templates (the admin-portal avatars list), scoped to your token's merchant (or a merchant_id override). Capped at 1000 records per page.
Paramètres, retour & exemple (10)
Paramètrestype· string · optionnel · interactive_heygen | interactive_elevenlabs | interactive_spatius | offline_heygen | offline_elai | offline_synthesia
Filter by avatar template type. Omit for all.limit· integer · optionnel
Maximum number of records to return (1–1000).offset· integer · optionnel
Number of records to skip from the start of the result set.status· string · optionnel · active | draft | archived | deleted
Filter by status. Omit for all except archived (see include_archived).filter_text· string · optionnel
Case-insensitive search on template name or voice language name.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.include_public· string · optionnel · true | false
Also include public templates shared across merchants, in addition to this merchant's own.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.include_archived· string · optionnel · true | false
Include archived templates (excluded by default).mojito_language_code· string · optionnel · ar | bg | zh | hr | cs | da | nl | en
Filter by platform language code. Omit for all languages.
Exemple d'appel{"name": "list_avatars", "arguments": {"type": "interactive_heygen", "limit": 1, "offset": 1, "status": "active", "filter_text": "texte", "merchant_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - list_candidates≈ 1497 tokens
[Candidates] List the merchant's candidates. Paginated list of a merchant's candidates (the admin-portal candidates list), scoped to your token's merchant (or a merchant_id override). Capped at 1000 records per page.
Paramètres, retour & exemple (9)
Paramètrestab· string · optionnel · interview | pre-screening | no-action | leads |
Filter candidates by recent activity. Omit (or empty) to include all.limit· integer · optionnel
Maximum number of records to return (1–1000).offset· integer · optionnel
Number of records to skip from the start of the result set.source· string · optionnel · invited | registered
Filter by how the candidate entered: invited or self-registered. Omit for both.order_by· string · optionnel · name_accending | name_decending | created_at_newest | created_at_oldest
Sort order of the result set.filter_text· string · optionnel
Search on candidate name, email, external id, phone and CV skills. Every word must match (case and accents ignored; longer words tolerate typos). Without order_by, the best matches come first.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.filter_emoji· string · optionnel
Filter by the candidate emoji marker.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "list_candidates", "arguments": {"tab": "interview", "limit": 1, "offset": 1, "source": "invited", "order_by": "name_accending", "filter_text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - list_catalogue_directories≈ 1768 tokens
[Coaching catalogue] List the coaching-catalogue directories you can see (your merchant's own plus the platform-wide public ones). Start here to find a directory id, to pick a parent for a new one, or to walk the tree with `parent_tag`; `is_start_directory` marks the page the catalogue opens on. The custom Markdown page is not included — read it with get_catalogue_directory. Returns 25 at a time; page with `offset` while `pagination.has_more` is true. Paginated list of the coaching-catalogue directories visible to you: your merchant's own, plus the platform-wide `public` ones unless you set include_public=false. Use it to find a directory id before updating one, to pick a `parent_tag`, or to walk the tree with `parent_tag`. The custom Markdown page is not included — fetch it per directory with catalogue-tag-get.
Paramètres, retour & exemple (10)
Paramètreslimit· integer · optionnel
Maximum number of records to return (1–1000).offset· integer · optionnel
Number of records to skip from the start of the result set.status· string · optionnel · draft | active | archived
Filter by lifecycle status. Omit to include every status you can see (deleted directories are never returned).parent_tag· string · optionnel
Return only the directories nested directly under this one (its `tags_sub`), in the parent's own order. Combine with the other filters to narrow further.visibility· string · optionnel · public | merchant_public | merchant_invite | merchant_unlisted
Filter by visibility.filter_text· string · optionnel
Case-insensitive search on the directory id, name and description.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.include_public· string · optionnel · true | false
Include the platform-wide `public` directories shared across merchants.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.mojito_language_code· string · optionnel · ar | bg | zh | hr | cs | da | nl | en
Filter by language: directories whose default language or one of whose language versions is this one. Omit for all languages.
Exemple d'appel{"name": "list_catalogue_directories", "arguments": {"limit": 1, "offset": 1, "status": "draft", "parent_tag": "texte", "visibility": "public", "filter_text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - list_interview_results≈ 2078 tokens
[Results] List the merchant's interview results. Rows carry the candidate's scores and recruiter risk flags, so this returns 20 at a time; page with `offset` while `pagination.has_more` is true, or narrow with `tab`/`interview_id`/`filter_text`. Paginated list of a merchant's interview results (the admin-portal results list), scoped to your token's merchant (or a merchant_id override). Capped at 1000 records per page.
Paramètres, retour & exemple (13)
Paramètrestab· string · optionnel · decided-rejected | undecided | shortlist | decided-selected | completed | incomplete | archived-interview | public_avatar
Filter by decision/completion state. Omit (or empty) to include all.step· string · optionnel · pre-screening | interview | meeting
Filter by pipeline step type (pre-screening, interview or meeting). Omit for all.type· string · optionnel · interview | coaching | assessment | public_avatar | persona | persona_interview
Product type of results to list.limit· integer · optionnel
Maximum number of records to return (1–1000).risks· string · optionnel
Comma-separated list of recruiter-risk keys to filter by (matches any).offset· integer · optionnel
Number of records to skip from the start of the result set.order_by· string · optionnel · score | created_at_newest | created_at_oldest | updated_at_newest
Sort order of the result set.filter_text· string · optionnel
Case-insensitive search on candidate name or email.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.filter_emoji· string · optionnel
Filter by the candidate emoji marker.interview_id· string · optionnel
Filter to a single interview definition id.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.profile_interview_id· string · optionnel
Filter to a single candidate (profile_interview) id.
Exemple d'appel{"name": "list_interview_results", "arguments": {"tab": "decided-rejected", "step": "pre-screening", "type": "interview", "limit": 1, "risks": "texte", "offset": 1}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - list_interviews≈ 1463 tokens
[Interviews] List the merchant's interview definitions. Paginated list of a merchant's interview definitions (the admin-portal interview list), scoped to your token's merchant (or a merchant_id override). Capped at 1000 records per page.
Paramètres, retour & exemple (10)
Paramètrestype· string · optionnel · interview | coaching | assessment | public_avatar | persona | persona_interview
Product type of interviews to list.limit· integer · optionnel
Maximum number of records to return (1–1000).offset· integer · optionnel
Number of records to skip from the start of the result set.status· string · optionnel · draft | active | archived | deleted | preparing | completed
Filter by lifecycle status. Omit to include all statuses.show_demo· string · optionnel · true | false
Include demo/sample interviews.filter_text· string · optionnel
Case-insensitive search on the interview name.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.show_public· string · optionnel · true | false
Include interviews shared publicly across merchants (coaching/avatars).filter_emoji· string · optionnel
Filter by the interview emoji marker.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "list_interviews", "arguments": {"type": "interview", "limit": 1, "offset": 1, "status": "draft", "show_demo": "true", "filter_text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - list_languages≈ 918 tokens
[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. Returns all supported platform (mojito) languages: the mojito language code, English and local names, and an SVG flag image URL. Use the `code` as `mojito_language_code` when creating interviews or personas.
Paramètres, retour & exemple (1)
Paramètresconversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "list_languages", "arguments": {"conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"languages": [], "_mcp_instructions": {}}} - list_my_merchants≈ 412 tokens
FALLBACK merchant list for clients WITHOUT UI support. Do NOT use this to choose or switch merchants when a UI is available — call `jobmojito_configuration` instead (it renders an interactive picker), and do not hand-format a merchant list as text. Use this tool only when the client cannot render MCP App UI. Returns the user's own account plus any sub-merchants; after a pick, pass `merchant_id=<chosen id>` on subsequent calls (OMIT for the own account).
Paramètres, retour & exemple (2)
Paramètressearch· string · optionnel
Optional case-insensitive filter on sub-merchant name.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "list_my_merchants", "arguments": {"search": "texte", "conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"_mcp_instructions": {}}} - list_report_fields≈ 800 tokens
[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. Call this first: a report definition may only use ids listed here. Custom reports are switched on per account by JobMojito; while they are off, every report tool is refused with 403 'Custom reports are not enabled for this account.' Tell the user to contact JobMojito rather than retrying. Everything a custom report may use on this account: the datasets (interview results, invitations, position pipeline, ATS pipeline, credits, coaching sessions - only those your account and role include), their dimensions (group by / filter) and measures (numbers), block types, condition operators and period presets. Read this before writing a report definition: ids not listed here are refused.
Paramètres, retour & exemple (2)
Paramètresmerchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "list_report_fields", "arguments": {"merchant_id": "texte", "conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"limits": {}, "schema": "texte", "datasets": [], "can_share": true, "where_ops": [], "block_types": [], "period_presets": [], "_mcp_instructions": {}}} - list_reports≈ 708 tokens
[Reports] List custom reports you can open (yours, shared with you) and the JobMojito templates, with id, title, visibility, your access and version. Custom reports you can open on this account (yours, the ones shared with you) and the JobMojito templates. Pinned first, then most recently updated.
Paramètres, retour & exemple (3)
Paramètresscope· string · optionnel · all | mine | shared | templates
all (default), mine, shared (by colleagues) or templates.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "list_reports", "arguments": {"scope": "all", "merchant_id": "texte", "conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "_mcp_instructions": {}}} - list_sub_merchants≈ 1310 tokens
[Admin] List sub-merchants under the merchant account. Paginated list of the sub-merchants the caller administers (the admin-portal sub-merchants list). Visibility is enforced by row-level security. Capped at 1000 records per page.
Paramètres, retour & exemple (6)
Paramètreslimit· integer · optionnel
Maximum number of records to return (1–1000).offset· integer · optionnel
Number of records to skip from the start of the result set.order_by· string · optionnel · name | created_at_newest | created_at_oldest
Sort order of the result set.filter_text· string · optionnel
Case-insensitive search on the sub-merchant name.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "list_sub_merchants", "arguments": {"limit": 1, "offset": 1, "order_by": "name", "filter_text": "texte", "merchant_id": "texte", "conversation_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"data": [], "pagination": {}, "_mcp_instructions": {}}} - preview_report≈ 2893 tokens
[Reports] Validate a report definition against the catalogue and run it without saving anything. Use it before create_report / update_report: a block that is wrong comes back with ok=false and an error naming the field and the valid ids. Validates a report definition against the catalogue and runs it, without storing anything. Use it to check a definition before create_report or update_report. A 422 names the block and field that is wrong and lists the valid ids.
Paramètres, retour & exemple (5)
Paramètresfilters· ? · optionnelblock_id· string|null · optionnel
Run only this block.definition· object · requis
A custom report: report-wide filters and up to 12 blocks. Read report-catalog first for the dataset, field and measure ids.merchant_id· string|null · optionnel
Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "preview_report", "arguments": {"definition": {}}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"title": "texte", "blocks": [], "filters": {}, "version": 1, "report_id": "texte", "_mcp_instructions": {}}} - register_users_for_interview≈ 1182 tokens
[Interviews] Register users/candidates for a specific interview and return their personal interview links. Registers (or updates) one or more candidate profiles for an interview and returns a one-time interview URL for each. Accepts a Supabase user JWT (merchant/admin) or the service key (merchant_id then required).
Paramètres, retour & exemple (8)
Paramètresusers· array|null · requis
Candidates to register for the interview. Each gets a one-time interview URL.is_test· ? · optionnel
When true (or the string "true"), mints a test token that can take a draft/unpublished interview and flags the result as a test. For a DRAFT interview it also recompiles the definition (interview_recalc_definition) first, so the test session includes the current questions/welcome. This makes it a single-call "trigger interview test".hide_menu· ? · optionnel
When true (or the string "true"), the interview UI hides its menu (view_hm).send_email· boolean|null · optionnel
Whether to send an invitation email to each registered candidate.hide_iframe· ? · optionnel
When true (or the string "true"), the interview UI hides its iframe chrome (view_hi).merchant_id· string|null · optionnel
Merchant id. Required when authenticating with the service key; for user tokens it is optional and only honored for admin / sub-merchant accounts.interview_id· string|null · requis
Interview definition (interview_def_set) or position (position_def_set) id to register users for.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "register_users_for_interview", "arguments": {"users": [], "interview_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": [], "_mcp_instructions": {}}} - report_technical_issue≈ 740 tokens
[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. Describe what was done, what was expected and what happened (error text as shown). Confirm the wording with the user first; at most 5 a day. Reports a technical problem to JobMojito support. It opens a support conversation from your account (your e-mail), with your company and the ids you give; support answers there. At most 5 reports per user in 24 hours. Requires a user token (admin console session or MCP sign-in) of a merchant, merchant owner or admin.
Paramètres, retour & exemple (4)
Paramètresresult_id· string|null · optionnel
The interview result the problem is about, if any.description· string|null · requis
What went wrong: what you did, what you expected, what happened instead (error messages as shown), and since when. Plain text; blank lines separate paragraphs. Do not include passwords or API keys.interview_id· string|null · optionnel
The interview (definition) the problem is about, if any.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "report_technical_issue", "arguments": {"description": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "status": "sent", "reference": "texte", "_mcp_instructions": {}}} - request_another_interview_attempt≈ 408 tokens
[Results] Re-open a submitted interview result so the candidate can retry. Marks a submitted (active + completed) interview result as unsuccessful so the candidate can retake it. Resets the result to draft and clears the recruiter decision.
Paramètres, retour & exemple (2)
Paramètresconversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.interview_result_id· string|null · requis
The interview result to reopen for another attempt.
Exemple d'appel{"name": "request_another_interview_attempt", "arguments": {"interview_result_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"_mcp_instructions": {}}} - run_report≈ 982 tokens
[Reports] Run a saved custom report and return each block's rows (aggregated numbers, at most 500 rows per block). Optional `filters` JSON overrides the period / positions / interviews for this run only. Report numbers are decision-support material for a human reviewer. Runs every block of a saved report and returns its rows. Filters start from the report's defaults, then your own saved filters, then `filters` if you pass it. Each block runs on its own: a block that fails returns ok=false with an error while the others still return data. Numbers are aggregated; no block returns more than 500 rows.
Paramètres, retour & exemple (6)
Paramètresid· string · requis
Report id (from list_reports).draft· string · optionnel · true | false
Run the unpublished draft instead (only if you can edit the report).filters· string · optionnel
Optional JSON ReportFilters to apply on top, e.g. {"period":{"preset":"last_month"}}.block_id· string · optionnel
Run only this block.merchant_id· string · optionnel
Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "run_report", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"title": "texte", "blocks": [], "filters": {}, "version": 1, "report_id": "texte", "_mcp_instructions": {}}} - search_documentation≈ 542 tokens
Search ALL JobMojito documentation. This is the single entry point. One call searches both documentation sources in parallel and returns a merged, source-labeled list — you do not need to choose a source or call a separate tool: • "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). Use this whenever you need to understand how a feature, endpoint, field, or workflow works — including before calling an action tool you're unsure about. Then call `get_documentation(url)` with a returned URL to read the full page.
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnel
Max results per source (1-25).query· string · requis
Natural-language search query or keywords.source· string · optionnel
"all" (default), "developer", or "help" to restrict the search.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "search_documentation", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"_mcp_instructions": {}}} - set_interview_state≈ 796 tokens
[Interviews] Change the state of an interview/position (e.g. open, closed). Changes the lifecycle status of an interview or position (draft, active, archived, preparing, completed, deleted) and/or manages its embed key. Provide at least one of `status` or `is_embedded`.
Paramètres, retour & exemple (4)
Paramètresstatus· string|null · optionnel · draft | active | archived | deleted | preparing | completed | None
New lifecycle status to apply.is_embedded· boolean|null · optionnel
Controls iframe embedding of the interview on an external page. When true, ensures an embed key exists (returns embed_id/embed_signing_key, used to authenticate/sign the iframe embed). When false, removes the embed keys (disables embedding). Where it runs depends on the type: interviews, assessments and interview role-plays embed on the interview portal (`https://<interview portal domain>/embed?embed_id=...`); coaching sessions and coaching personas embed on the consumer (coaching) portal (`https://<coaching portal domain>/embed?embed_id=...`, a link built on the interview portal is forwarded there). A signed coaching embed (name, email, signature) signs the visitor in as a learner of that portal, and the session is charged to the merchant's interview credits on completion, not to the learner's coaching credits; it cannot start while the merchant has none.position_id· string|null · requis
Interview definition id or position id whose state should change.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "set_interview_state", "arguments": {"position_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"result": "texte", "_mcp_instructions": {}}} - submit_feature_request≈ 730 tokens
[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. Write a short title and a description of the need and why (no candidate data or company names). Confirm the wording with the user before submitting; at most 5 a day. Sends a feature request to the JobMojito product team. It is posted on the public feature request board under your name (from your account e-mail), where you get status updates and others can vote on it; your company is not named. At most 5 requests per user in 24 hours. Requires a user token (admin console session or MCP sign-in) of a merchant, merchant owner or admin.
Paramètres, retour & exemple (3)
Paramètrestitle· string|null · requis
A short summary of the feature, shown as the post title.description· string|null · requis
What the user needs and why: the problem, how they work around it today, who it would help. Plain text; blank lines separate paragraphs. The board is public: do not include candidate data, company names or other personal information.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "submit_feature_request", "arguments": {"title": "texte", "description": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "status": "posted", "_mcp_instructions": {}}} - update_catalogue_directory≈ 2508 tokens
[Coaching catalogue] Update a coaching catalogue directory: rename it, change which sessions it lists (`tags_interview_set_filter`), re-order its sub-directories (`tags_sub`), author its custom Markdown page (`content_md`), or add, replace or remove a language version (`translations`, per language; null removes one). Only the fields you send are changed. Coaching-platform feature. Updates a directory (page) of the coaching portal catalogue. Only the fields present in the request body are written — everything else keeps its current value, and sending null clears a nullable field. Use it to rename a directory, re-point which sessions it lists (`tags_interview_set_filter`), re-order or replace its sub-directories (`tags_sub`), author its custom Markdown page (`content_md`), or add, replace and remove its other language versions (`translations`).
Paramètres, retour & exemple (13)
Paramètresid· string|null · requis
Id of the directory to update (the catalogue URL segment). The id itself is not changed here — rename a directory in the admin catalogue editor, which moves every link to it.name· string|null · optionnel
Display name of the directory.status· string|null · optionnel · draft | active | archived | None
Lifecycle status of the catalogue directory. Options — `draft`: Not published — the directory exists but is not served to visitors. | `active`: Published and served in the catalogue. | `archived`: Retired — kept for reference but no longer served..tags_sub· array|null · optionnel
Ids of the directories nested under this one, in display order. Replaces the whole list — send the full set, not just the additions. A referenced directory only appears if it exists and is visible to the viewer.coach_plan· string|null · optionnel · demo | screening | 2nd | 3rd | closing | job-specific | other | None
Coaching-plan stage this item belongs to, used by the coaching-plan progress view. Omit/null to leave it out of any plan. Options — `demo`: Demo session. | `screening`: Screening-interview practice. | `2nd`: Second-interview practice. | `3rd`: Third-interview practice. | `closing`: Closing / salary-negotiation practice. | `job-specific`: Job-specific coaching. | `other`: Anything that does not fit the other buckets..content_md· string|null · optionnel
Markdown for the custom directory page. Sending null removes the custom page and restores the default grid; sending a string replaces the whole page. Directives, each ALONE on its own line: `[plan-progress]`, `[directory:<tag-id>]`, `[session:<interview-id>]`, `[sessions]`, `[sessions:<term>]`, `[sessions:filter=<term>,limit=<n>]`. Chips, callouts, cards, columns and buttons are available too — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdownvisibility· string|null · optionnel · public | merchant_public | merchant_invite | merchant_unlisted | None
Who can see the catalogue directory. Options — `public`: Shared across every merchant. Platform admins only — a merchant caller is rejected by row-level security. | `merchant_public`: Listed in the merchant's own catalogue — the normal choice. | `merchant_invite`: Owned by the merchant but not listed; reachable only for invited users. | `merchant_unlisted`: Owned by the merchant but not listed; reachable only via a direct link..description· string|null · optionnel
Short description shown on the directory card.translations· object|null · optionnel
The directory's OTHER language versions, keyed by mojito language code. The top-level fields are the default language (`mojito_language_code`); each version here is a page of its own with its own name, Markdown, session filter and sub-directories, shown to learners who pick that language in the catalogue (falling back to English, then the default). A key may not equal `mojito_language_code`. Only the languages you send change: an object replaces that version, null removes it. Send `translations: null` to remove every version.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.cover_image_url· string|null · optionnel
Cover image URL shown on the directory card. null clears it.mojito_language_code· string|null · optionnel · ar | bg | zh | hr | cs | da | nl | en
Language of the directory (one of the platform-languages.json codes). The catalogue groups directories by language.tags_interview_set_filter· array|null · optionnel
Tag filter selecting which coaching sessions this directory lists: a session appears when its own `tags` contain EVERY tag here (an AND, not an OR). Only `active` coaching/persona sessions with visibility `public` or `merchant_public` are listed. Set the matching tags on the session with the create-interview / job-interview-update `tags` field.
Exemple d'appel{"name": "update_catalogue_directory", "arguments": {"id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "catalogue_url": "texte", "updated_fields": [], "_mcp_instructions": {}}} - update_interview≈ 7776 tokens
[Interviews] Update the configuration of an existing interview/position: name, description, avatar template, recording, scoring, tags and the rest of the create-time settings. 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, so read the interview first, edit that array, and send it back. Resending an unchanged array does nothing. 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. Use `tags` to place a coaching session into a catalogue directory. MULTI-STAGE POSITIONS: some per-interview settings do not exist at position level and are rejected with a 422 naming the field — `candidate_expectations_json` is the one seen in practice. Read the position with get_interview_definition, then update the individual stage you mean instead of sending that field to the position. Updates the configuration of an existing interview (single-stage) or position (multi-stage). Only the fields present in the request body are written — everything else keeps its current value, and sending null clears a nullable field. The question list is only touched when you send `questions`; omit that field and the questions are left exactly as they are. When sent, it must be the complete list and is applied as a diff against what is stored (matched on external_id, then id, then identical content), so unchanged questions keep their existing records, edited ones are unlinked and re-created, and dropped ones are unlinked — and re-sending the array job-interview-get returned changes nothing. See the field description, and `questions_diff` in the response for what was decided. Questions of an interview that is already `active` can only be changed on interactive avatar templates, where re-publishing is instant; on the offline (pre-rendered video) templates set the interview back to `draft` first. The welcome / thank-you messages and the instructional-video screen are stored as steps rather than questions and are never changed here. `mojito_language_code` cannot be changed — the existing questions and rendered videos are in the original language — so create a new interview to change language. A multi-stage position only carries the shared identity fields (name, code, location, description, description_long, cover_image_url, department, salary, available_till, recruiter, status, visibility, hiring_for_company); sending an interview-only field for a position is a 422.
Paramètres, retour & exemple (44)
Paramètrescode· string|null · optionnel
External code/reference. Blank is stored as null.name· string|null · optionnel
Interview / position name.tags· array|null · optionnel
Free-form tags stored on the interview. Tags are also the coaching-catalogue mapping key: a catalogue directory (see the catalogue-tag-create / catalogue-tag-update endpoints) lists a coaching or persona session when the session's tags contain EVERY tag in that directory's `tags_interview_set_filter`. Only `active` sessions with visibility `public` or `merchant_public` are listed.type· string|null · optionnel · interview | coaching | assessment | None
Product type of the interview. Changing it also re-derives `type_credit` (null for interview/assessment, otherwise interview_coach_manager) unless you send `type_credit` explicitly. Single-stage interviews only.status· string|null · optionnel · draft | active | archived | deleted | preparing | completed | None
New lifecycle status. Applied through the same interview_set_status routine as job-interview-set-state (which is also where you manage the iframe embed key).location· string|null · optionnel
Interview location (column `interview_location`). Blank is stored as null.questions· array|null · optionnel
OPTIONAL. Omit this field entirely and the interview's questions are left exactly as they are — this endpoint only touches questions when you send the array. When you do send it, send the COMPLETE list you want the interview to end up with, in order, in the same format job-interview-create-from-array accepts and job-interview-get returns: there is no way to change a single question on its own, so read the interview, edit that array, and send the whole thing back. An empty array is rejected. It is applied as a DIFF, not a replace, so resending the array job-interview-get gave you changes nothing at all. Each entry is matched against what is stored — first on `external_id`, then on `id`, then on identical content — and: an entry matching an unchanged question keeps that question exactly as it is, including its answer rules and any rendered avatar video; an entry matching a question whose content differs unlinks the old question and creates a new one in its place (fields you omit are carried over from the old one); an entry matching nothing is created; and a stored question no entry matches is unlinked. `questions_diff` in the response reports exactly what was decided. Questions are shared records, so nothing is ever deleted — removing one only unlinks it from this interview, and an edit is always unlink-old + create-new so the change cannot leak into another interview reusing the same question. The welcome, thank-you and instructional-video steps are not part of this array and are left in place. Single-stage interviews only; for a multi-stage position, update its interview stages individually.recording· string|null · optionnel · audio_first_5_answers | audio_all | video_all | video_first_5_answers | None
Cheating/proctoring detection mode for candidate answers — this is NOT a full session recording. Video options also record the candidate. Omit/null to disable. Options — `audio_first_5_answers`: Audio-only cheating detection, first 5 answers only. | `audio_all`: Audio-only cheating detection on every answer. | `video_all`: Audio + video cheating detection on every answer (candidate is recorded for all answers). | `video_first_5_answers`: Audio + video cheating detection, first 5 answers only..coach_plan· string|null · optionnel · demo | screening | 2nd | 3rd | closing | job-specific | other | None
Coaching-plan stage this item belongs to, used by the coaching-plan progress view. Omit/null to leave it out of any plan. Options — `demo`: Demo session. | `screening`: Screening-interview practice. | `2nd`: Second-interview practice. | `3rd`: Third-interview practice. | `closing`: Closing / salary-negotiation practice. | `job-specific`: Job-specific coaching. | `other`: Anything that does not fit the other buckets..visibility· string|null · optionnel · merchant_public | merchant_invite | merchant_unlisted | None
Who can discover and access the interview. Options — `merchant_public`: Listed on the merchant's public interview list — anyone with the merchant link can find and start it. | `merchant_invite`: Invite-only — only candidates explicitly invited (by email/link) can access it; not listed anywhere. | `merchant_unlisted`: Reachable only via a direct link — not listed anywhere; share the link manually..description· string|null · optionnel
Short interview description.environment· string|null · optionnel · production | uat | development | demo | None
Which of your webhook environments results from this interview are delivered to. Defaults to production. Options — `production`: Live hiring. Results reach the webhooks configured as production. This is the default when the field is omitted. | `uat`: User-acceptance testing - an isolated environment for pre-release verification. | `development`: Development/testing. Use for interviews created by a test or preview app so their results never reach the production webhook. | `demo`: Demonstrations and sales trials..position_id· string|null · requis
Id of the interview definition (single-stage) or position definition (multi-stage) to update. The same id you pass to job-interview-get.result_view· string|null · optionnel · none | minimal | minimal_with_score | advanced | full | full_expand_scores | None
Result screen shown to the candidate after finishing. With any value other than `none`, the candidate sees a results screen where they can provide feedback, record an intro video and edit the transcript, and must then submit the result; the value sets how much score/result detail is shown. Options — `none`: No results screen at all — the interview is submitted immediately when the candidate finishes (no feedback, intro video, transcript edit or manual submit step). | `minimal`: Minimal results layout, no score shown. | `minimal_with_score`: Minimal results layout including the overall score. | `advanced`: Advanced results layout with more detail. | `full`: Full results layout with all sections. | `full_expand_scores`: Full results with every score breakdown expanded..type_credit· string|null · optionnel · resume_check | interview_coach_starter | interview_coach_contributor | interview_coach_manager | cover_letter | None
Credit bucket the session draws from. Only meaningful for candidate-paid coaching/persona sessions; hiring interviews and assessments are merchant-billed and carry null. Options — `resume_check`: Resume-check credits. | `interview_coach_starter`: Coaching credits — starter tier. | `interview_coach_contributor`: Coaching credits — contributor tier. | `interview_coach_manager`: Coaching credits — manager tier. | `cover_letter`: Cover-letter credits..max_duration· number|null · optionnel
Live session limit in seconds. Also the basis for the credit multiplier.max_followups· integer|null · optionnel
Maximum number of AI follow-up questions. 0 disables follow-ups; presets are 0-3 (none/low/normal/high) and custom values start at 4; null uses the template default (Normal).custom_scoring· object|null · optionnel
Result-scoring overrides (max_score, early_stop, speech_cadence, ai_pronunciation, sentiment_analysis, ai_assessment_answer, ai_assessment_resume, ai_assessment_session). Merged onto the stored configuration, so keys you omit keep their current value.interview_tone· string|null · optionnel · relaxed | simple | professional | persuasive | exact | None
Tone — configures the AI avatar's speaking style and the follow-up questions it generates. Stored in creation_parameters; existing questions are NOT regenerated. Case-insensitive; omit to default to relaxed. Options — `relaxed`: Friendly and conversational tone that helps candidates feel at ease. | `simple`: Plain language at CEFR A2 level — short sentences and simple words. | `professional`: Formal and business-like approach suitable for senior roles. | `persuasive`: Engaging style that encourages candidates to elaborate. | `exact`: Asks the questions exactly as provided, without rephrasing — for interviews built from your own questions (create_interview_from_questions) where the wording is a script..interview_type· string|null · optionnel · pre-screening | pre-screening-with-test-questions | second-interview | remote-freelancer-verification | strength-based-interview | potential-based-interview | process-verification-from-knowledge-base | knockout-screening
Interview style — configures the AI avatar and the follow-up questions it generates during the interview. Stored in creation_parameters; existing questions are NOT regenerated. Options — `pre-screening`: Pre-screening — quick qualification check focusing on basic requirements and availability. | `pre-screening-with-test-questions`: Pre-screening with test questions — pre-screening plus practical questions to test relevant skills. | `second-interview`: Second round interview — deeper dive for candidates who passed initial screening. | `remote-freelancer-verification`: Remote worker verification — verify remote work capabilities and communication skills. | `strength-based-interview`: Strength-based interview — focus on what candidates enjoy and excel at to predict job satisfaction. | `potential-based-interview`: Potential-based interview — assess learning ability and growth potential rather than past experience. | `process-verification-from-knowledge-base`: Knowledge Base interview — generate questions from your knowledge base documents. | `knockout-screening`: Knock-out screening — a short (about 5 minute) check of the role's must-haves with closed questions; ends early, politely, when a must-have is clearly not met. On creation it defaults custom_scoring.early_stop to true (where the avatar supports early stop) and max_followups to 1 unless you send them..conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.cover_image_url· string|null · optionnel
Cover image URL.seniority_level· string|null · optionnel · entry-level | intermediate | senior | managerial | director | executive | None
Target seniority level for the role; auto-detected from the job description when omitted. Options — `entry-level`: Early-career or graduate roles. | `intermediate`: Some experience required. | `senior`: Experienced professional. | `managerial`: Team or department lead. | `director`: Director-level responsibility. | `executive`: C-suite or executive role..description_long· string|null · optionnel
Long-form interview description (column `interview_description_long`). Rendered as Markdown on the candidate-facing position page, including chips, callouts, cards, columns and buttons — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with-markdowninterview_salary· string|null · optionnel
Salary range shown for the position. Blank is stored as null.hiring_for_company· object|null · optionnel
Who the position is really for. null (or an object with name null/blank) means hiring for yourself; { name: 'undisclosed' } for an unnamed external client; or { name: '<company>' } plus optional description/location/sector/company_size. Stored in creation_parameters.hiring_for_company.interview_attempts· number|null · optionnel
Allowed candidate attempts (1-20). Stored as result_scoring.max_retries.country_availability· object|null · optionnel
Which countries the interview / position is open to on the candidate portal, judged by the IP address the candidate opens it from (an unknown location only passes when countries_allowed / countries_allowed_eu are empty). From a closed country it is left out of the portal listings, and a direct link shows "not available in your region". Invited candidates (register_users / invite links) and candidates who already started keep access; API and MCP calls themselves are never restricted. Null = not used, every country.interview_department· string|null · optionnel
Department the position belongs to. Blank is stored as null.recruiter_profile_id· string|null · optionnel
Profile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant. null clears it.interview_template_id· string|null · optionnel
Id of the interview template (avatar/voice) to use. Must reference an existing interview_templates row. Also decides the modality — see list_avatars / merchant-avatar-list.candidate_expectations· string|null · optionnel
Free-text candidate expectations.pdf_export_auto_config· object|null · optionnel
Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export.recording_full_session· string|null · optionnel · audio_all | video_all | None
Full interview-session recording (includes the avatar and voice) produced as a single file. Independent of `recording`. Omit/null to disable. Options — `audio_all`: Record the whole session audio (avatar + candidate voice) into a single file. Adds +0.2 credits. | `video_all`: Record the whole session video + audio (avatar + candidate) into a single file. Adds +0.4 credits..required_pronunciation· boolean|null · optionnel
Require pronunciation assessment (restricts to pronunciation-capable languages).knowledge_base_store_id· string|null · optionnel
Knowledge base store id the interview draws context from; validated for existence. null unlinks it.questions_random_subset· number|null · optionnel
Ask only a random subset of the questions, as a fraction between 0.01 and 0.9. null asks all questions.interview_available_till· string|null · optionnel
ISO date/time after which the interview is no longer available to candidates. null keeps it always available.candidate_expectations_json· object|null · optionnel
Structured candidate expectations (the scoring rubric), bucketed by requirement level (weak/moderate/strong). null clears the rubric. Extra keys are preserved.candidate_video_introduction· string|null · optionnel · hidden | optional | required | None
Whether a candidate video introduction is hidden, optional or required. null is treated like hidden.interview_conversation_speed· string|null · optionnel · slower | normal | faster | None
Conversation pace of the AI avatar. Omit/null keeps the template default pace. Options — `slower`: The avatar speaks more slowly — easier to follow for non-native speakers. | `normal`: Default speaking pace. | `faster`: The avatar speaks more quickly for a snappier conversation..result_enable_edit_transcript· boolean|null · optionnel
Allow editing the transcript on the result view.candidate_notification_channel· string|null · optionnel · reminders | last_reminder | all | None
SMS / WhatsApp notifications to the candidate, sent alongside the e-mails: "reminders" = with both e-mail reminders (day 1 and day 3); "last_reminder" = only with the final day-3 reminder; "all" = invitation, both reminders and the pre-screening-accepted step. null switches them off. WhatsApp is tried first, SMS when the number is not on WhatsApp. Available on paid plans (Starter and above) and needs a phone number on the candidate.regenerate_candidate_expectations· boolean|null · optionnel
Re-derive the interview-level `candidate_expectations_json` scoring rubric from the resulting question list, the way job-interview-create-from-array derives it at creation time. Only applies when `questions` is sent, the interview type is `interview`, and `candidate_expectations_json` is not also being set explicitly (an explicit value wins).
Exemple d'appel{"name": "update_interview", "arguments": {"position_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"position_id": "texte", "is_multistage": true, "questions_diff": {}, "updated_fields": [], "_mcp_instructions": {}}} - update_report≈ 2315 tokens
[Reports] Replace a custom report's definition (send the whole definition and the version from get_report). 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. Replaces the definition of a report you own or may edit. Send the version you read; if someone changed the report since, you get 409 and should get it again. A report shared with others keeps your change as a draft until it is published in the admin, so viewers never see a half-finished report.
Paramètres, retour & exemple (6)
Paramètresid· string|null · requis
Report id (from list_reports).target· string|null · optionnel · published | draft | None
published (default) or draft. A private report always publishes. Through the MCP server a shared report always gets a draft that its owner publishes in the admin.version· integer|null · requis
The version you read (get_report / list_reports). A stale version is refused with 409.definition· ? · requismerchant_id· string|null · optionnel
Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant.conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.
Exemple d'appel{"name": "update_report", "arguments": {"id": "texte", "version": 1, "definition": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": "texte", "version": 1, "admin_url": "texte", "published": true, "_mcp_instructions": {}}} - upload_knowledge_base_document≈ 524 tokens
[Knowledge base] Upload and process a knowledge base document (multipart form-data). Uploads a document to a knowledge base store and queues it for processing. Accepts the file either as multipart/form-data (binary `file`) or as application/json (base64 `file`).
Paramètres, retour & exemple (5)
Paramètresfile· string|null · requis
The document file (binary).name· string|null · optionnel
Document name (with extension). Falls back to the uploaded file name for multipart.merchant_id· string|null · optionnel
Override merchant id (admin / sub-merchant only).conversation_id· string · optionnel
Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep passing the same conversation_id for the rest of the conversation, including after later user messages or on a different task; do not reset it when the user starts a new request.knowledge_base_store_id· string|null · requis
The knowledge base store to add the document to.
Exemple d'appel{"name": "upload_knowledge_base_document", "arguments": {"file": "texte", "knowledge_base_store_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"_mcp_instructions": {}, "knowledge_base_id": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».