Skip to main content
Glama

Create interview

create_interview
Destructive

[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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
codeNoOptional external code/reference for the interview.
nameYesInterview / position name.
tagsNoFree-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.
typeYesProduct 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..
statusYesLifecycle 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..
locationYesJob location — a city/country, or `remote`. Required and must not be empty: when the job description gives no location, pass `Not specified`.
recordingNoCheating/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..
visibilityYesWho 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..
descriptionNoShort, 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.
environmentNoWhich 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_embeddedNoSet 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.
merchant_idNoMerchant id. Admin / sub-merchant callers only; otherwise taken from your token.
result_viewNoResult 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_durationNoMaximum 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_followupsNoMaximum 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_scoringNoCustom result-scoring overrides merged with defaults and template overrides.
interview_toneNoInterview 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_typeNoInterview 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..
conversation_idNoPass 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_urlNoCover image URL.
seniority_levelNoTarget 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_messageNoCustom welcome message shown to the candidate.
description_longNoFull 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-markdown
interview_lengthNoNumber 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_salaryNoSalary range shown for the position.
thank_you_messageNoCustom thank-you message shown after the interview.
additional_contextNoArbitrary additional context object merged into AI generation.
hiring_for_companyNoWho 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_attemptsNoAllowed candidate attempts (1-20).
instructional_videoNoShow an instructional video before approval. Defaults to false.
interview_departmentNoDepartment the position belongs to.
mojito_language_codeYesPlatform language code used for the interview. Must be one of the platform-languages.json codes.
recruiter_profile_idNoProfile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant.
interview_template_idYesId of the interview template to base this interview on.
candidate_expectationsNoFree-text candidate expectations folded into AI generation.
include_closing_promptNoInclude a closing prompt. Defaults to true.
pdf_export_auto_configNoAuto-generate a candidate PDF report with these options once the interview completes. null disables auto-export.
recording_full_sessionNoFull 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_pronunciationNoRequire pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false.
knowledge_base_store_idNoKnowledge base store id to source additional context from.
questions_random_subsetNoAsk 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_questionNoInclude an opening rapport question. Defaults to false.
interview_available_tillNoISO date/time after which the interview is no longer available to candidates. null keeps it always available.
use_enhanced_expectationsNoReserved flag passed through to generation.
candidate_video_introductionNoWhether a candidate video introduction is optional or required.
interview_conversation_speedNoConversation 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_transcriptNoAllow editing the transcript on the result view. Defaults to true.
instructional_video_custom_textNoCustom narration text for the instructional video.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
embed_idNoEmbed id, present only when is_embedded=true.
max_durationYesLive session limit in seconds stored on the interview — the value sent, or the 1200 default when omitted.
_mcp_instructionsNoServer-issued metadata for this conversation.
embed_signing_keyNoEmbed signing key, present only when is_embedded=true.
questions_generatedYesNumber of questions actually generated. May be lower than the requested interview_length, which is capped by max_duration.
interview_def_set_idYesId of the newly created interview definition set.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / conversation_id / description
      Previous value: -"Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it."New value: +"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."
  2. Changed2 schema fields changed
    • addedInput schema / properties / conversation_id
      Added value: +{
      +  "description": "Echo the conversation_id from the server's previous response. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / _mcp_instructions
      Added value: +{
      +  "description": "Server-issued metadata for this conversation.",
      +  "properties": {
      +    "conversation_id": {
      +      "description": "The server-issued conversation identifier.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed5 schema fields changed
    • changedInput schema / properties / interview_tone / description
      Previous value: -"Interview tone — configures the AI avatar's speaking style and the tone of the AI-generated questions and follow-ups; omit to default to relaxed. Suggested values — `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.. Case-insensitive; other strings are accepted but unknown tones fall back to the default."New value: +"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.."
    • addedInput schema / properties / interview_tone / enum
      Added value: +[
      +  "relaxed",
      +  "simple",
      +  "professional",
      +  "persuasive",
      +  "exact",
      +  null
      +]
    • changedInput schema / properties / location / description
      Previous value: -"Job location."New value: +"Job location — a city/country, or `remote`. Required and must not be empty: when the job description gives no location, pass `Not specified`."
    • changedInput schema / properties / pdf_export_auto_config / properties / mojito_language_code / description
      Previous value: -"Report language code (platform-languages.json code)."New value: +"Report language code (a platform-languages.json code)."
    • addedInput schema / properties / pdf_export_auto_config / properties / mojito_language_code / enum
      Added value: +[
      +  "ar",
      +  "bg",
      +  "zh",
      +  "hr",
      +  "cs",
      +  "da",
      +  "nl",
      +  "en",
      +  "fil",
      +  "fi",
      +  "fr",
      +  "de",
      +  "el",
      +  "hi",
      +  "hu",
      +  "id",
      +  "it",
      +  "ja",
      +  "ko",
      +  "ms",
      +  "no",
      +  "pl",
      +  "pt",
      +  "br",
      +  "ro",
      +  "ru",
      +  "sk",
      +  "es",
      +  "sv",
      +  "ta",
      +  "th",
      +  "tr",
      +  "uk",
      +  "vi",
      +  null
      +]
  4. Changed1 schema field changed
    • addedInput schema / properties / environment
      Added value: +{
      +  "description": "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..",
      +  "enum": [
      +    "production",
      +    "uat",
      +    "development",
      +    "demo",
      +    null
      +  ],
      +  "example": "production",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  5. Changed1 schema field changed
    • changedInput schema / properties / pdf_export_auto_config / properties / template / description
      Previous value: -"Report layout: classic (default), modern, or one_pager."New value: +"Report layout: classic, modern, or one_pager. Omit for the merchant default (modern when unset)."
  6. Changed1 schema field changed
    • addedInput schema / properties / pdf_export_auto_config / properties / template
      Added value: +{
      +  "description": "Report layout: classic (default), modern, or one_pager.",
      +  "enum": [
      +    "classic",
      +    "modern",
      +    "one_pager",
      +    null
      +  ],
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  7. Changed1 schema field changed
    • changedInput schema / properties / description_long / description
      Previous value: -"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)."New value: +"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-markdown"
  8. Changed2 schema fields changed
    • changedInput schema / properties / tags / description
      Previous value: -"Free-form tags stored on the interview."New value: +"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."
    • changedInput schema / properties / tags / example
      Previous value: -[
      -  "engineering",
      -  "remote"
      -]New value: +[
      +  "interview-practice",
      +  "sales"
      +]
  9. Changed7 schema fields changed
    • changedInput schema / properties / interview_length / description
      Previous value: -"Number of questions to generate (max 40)."New value: +"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."
    • changedInput schema / properties / max_duration / description
      Previous value: -"Maximum interview duration in minutes used to scope question generation."New value: +"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."
    • changedInput schema / properties / max_duration / example
      Previous value: -30New value: +1200
    • changedOutput schema / description
      Previous value: -"Id of the created interview. Includes embed_id/embed_signing_key when is_embedded=true."New value: +"Id of the created interview, the number of questions generated and the stored max_duration. Includes embed_id/embed_signing_key when is_embedded=true."
    • addedOutput schema / properties / max_duration
      Added value: +{
      +  "description": "Live session limit in seconds stored on the interview — the value sent, or the 1200 default when omitted.",
      +  "example": 1200,
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / questions_generated
      Added value: +{
      +  "description": "Number of questions actually generated. May be lower than the requested interview_length, which is capped by max_duration.",
      +  "example": 8,
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "interview_def_set_id"
      -]New value: +[
      +  "interview_def_set_id",
      +  "questions_generated",
      +  "max_duration"
      +]
  10. First observed

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a non-idempotent, destructive, open-world write, so the safety profile is covered. The description adds real behavioral context beyond that: AI generation of description/questions/candidate expectations, provisioning of default steps, and optional embed-key provisioning. It stops short of disclosing credit implications or environment/webhook effects, which the schema carries instead.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence is well front-loaded with scope and the template-id modality insight. But the second paragraph largely restates the first — 'Creates a new interview / coaching / assessment definition' duplicates the opening 'Create a new interview' and re-lists the AI-generated artifacts, so a meaningful share of the text is redundant rather than additive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 48-parameter, 100%-documented schema with an output schema present, the description need not enumerate returns or fields, and it correctly covers the core operation, generation behavior, and a cross-reference to list_avatars. The one notable gap is sibling routing against create_interview_from_questions and update_interview, which a creation tool this broad should address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning the schema lacks: that interview_template_id determines the modality (voice-only vs realtime/pre-recorded avatar), a cross-field consequence not stated in the parameter's own description. It does not explain the 48-parameter surface broadly, but the key semantic link is captured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a new interview') plus the non-obvious side effect that questions are auto-generated from position data, and notes it covers interview/coaching/assessment definitions. However, it never distinguishes itself from the close sibling create_interview_from_questions, leaving the agent to infer which creation path to take.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the verb: use this to originate a new interview from position data. There is no explicit when-not-to-use, no mention of create_interview_from_questions for question-driven interviews, and no prerequisites such as required permissions or the need to have a template/avatar already chosen beyond a passing 'see list_avatars' pointer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.