JobMojito
REMOTE · MCP.JOBMOJITO.COM
Run AI interviews, simulated personas and coaching sessions on JobMojito.
Available components
Last scanned (12 hours ago)
Scores higher than 88% of remote servers
Reachable. Last reached 6 Nov 2026.
Category Education and Research
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability34
- 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Fail
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 27855 tokens (~647/item across 43 items; 42 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 98% of tool parameters carry a description.Partial
- Structured output schemas are declared (98% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 42 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 44 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Checks we ran (14)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
- Transport
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
- Capabilities
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 6 Nov 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 3 Nov 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “invite_candidates”, which the server declares destructive security
- Tool “register_users_for_interview” rewrote its description, which is the text the model reads security
- Tool “create_report” rewrote its description, which is the text the model reads security
- Tool “list_report_fields” rewrote its description, which is the text the model reads security
- Tool “preview_report” rewrote its description, which is the text the model reads security
- Tool “update_report” rewrote its description, which is the text the model reads security
- Server version: 1.4.0 → 1.5.0 functional
- “list_report_fields” added an optional parameter “dataset” cosmetic
- “create_report” reworded the description of “definition” cosmetic
- “preview_report” reworded the description of “definition” cosmetic
- “register_users_for_interview” dropped the optional parameter “send_email” cosmetic
- 2 Nov 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “update_portal_configuration”, which the server declares destructive security
- New tool “get_portal_configuration” functional
- 30 Oct 26 0
- “create_interview” added an optional parameter “microphone_test_message” cosmetic
- “create_interview” added an optional parameter “microphone_test_no_speech_message” cosmetic
- “create_interview_from_questions” added an optional parameter “microphone_test_message” cosmetic
- “create_interview_from_questions” added an optional parameter “microphone_test_no_speech_message” cosmetic
4 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 29 Oct 26 0
- “create_interview” reworded the description of “interview_conversation_speed” cosmetic
- “create_interview_from_questions” reworded the description of “interview_conversation_speed” cosmetic
- “create_persona” reworded the description of “interview_conversation_speed” cosmetic
- “update_interview” reworded the description of “interview_conversation_speed” cosmetic
4 cosmetic changes on this day. Switch on “Show cosmetic changes” to see them.
- 27 Oct 26 0
- New tool “set_assessment_result”, which the server declares destructive security
- “update_interview” added an optional parameter “custom_fields” cosmetic
- 20 Oct 26 0
- New tool “report_technical_issue”, which the server declares destructive security
- New tool “submit_feature_request”, which the server declares destructive security
- 19 Oct 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “create_report”, which the server declares destructive security
- New tool “update_report”, which the server declares destructive security
- Tool “create_persona” rewrote its description, which is the text the model reads security
- Schema quality: 742 → 656 ▲ functional
- Server version: 1.3.2 → 1.4.0 functional
- New tool “get_report” functional
- New tool “list_report_fields” functional
- New tool “list_reports” functional
- New tool “preview_report” functional
- New tool “run_report” functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 6 Nov 2026 · Probed https://mcp.jobmojito.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.jobmojito.com | CN=Amazon RSA 2048 M01,O=Amazon,C=US | 30 Jul 2026 | 12 Feb 2027 | RSA 2048 | SHA256-RSA | 4e3ed70afd73438a4498c22dac8a188 |
| SANs: mcp.jobmojito.com | ||||||
| CN=Amazon RSA 2048 M01,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 77312380b9d6688a33b1ed9bf9ccda68e0e0f |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.jobmojito.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| com. | DS published | 19718 | 13 | Verified |
| jobmojito.com. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.jobmojito.com/.well-known/oauth-protected-resource/mcp", scope="openid email offline_access"
Bearer resource_metadata="https://mcp.jobmojito.com/.well-known/oauth-protected-resource/mcp", scope="openid email offline_access" Protected resource metadata
| Document | https://mcp.jobmojito.com/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.jobmojito.com/mcp |
| Authorisation server | https://momsbvnltsydezmoesqt.supabase.co/auth/v1 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.jobmojito.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.jobmojito.com/mcp | HTTPS enforced | 301 | https://mcp.jobmojito.com/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
create_catalogue_directory Create coaching catalogue directory ~1,188
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| coach_plan | string|null | – | 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.… |
| content_md | string|null | – | 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 sessi… |
| conversation_id | string | – | 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. Kee… |
| cover_image_url | string|null | – | Cover image URL shown on the directory card. |
| description | string|null | – | Short description shown on the directory card. |
| id | string|null | yes | 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… |
| merchant_id | string|null | – | Merchant that owns the directory. Admin / sub-merchant callers only; otherwise taken from your token. |
| mojito_language_code | string|null | – | Language of the directory (one of the platform-languages.json codes). The catalogue groups directories by language; defaults to `en` when omitted. |
| name | string|null | yes | Display name of the directory, shown as the page title and on its card. |
| parent_tag | string|null | – | 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 an… |
| status | string|null | – | 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`: Re… |
| tags_interview_set_filter | array|null | – | 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 visib… |
| tags_sub | array|null | – | 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… |
| translations | object|null | – | 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, ses… |
| visibility | string|null | – | 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 m… |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| catalogue_url | string|null | yes | Public URL of the directory page, when the merchant has a coaching-portal domain configured. Null otherwise. |
| id | string|null | yes | Id of the created directory. |
| merchant_id | string|null | yes | Owning merchant id. Null for a platform-wide (`public`) directory. |
| parent_tag | string|null | yes | The directory this one was nested under, when `parent_tag` was supplied. |
No examples provided.
create_interview Create interview ~2,888
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| additional_context | object|null | – | Arbitrary additional context object merged into AI generation. |
| candidate_expectations | string|null | – | Free-text candidate expectations folded into AI generation. |
| candidate_video_introduction | string|null | – | Whether a candidate video introduction is optional or required. |
| code | string|null | – | Optional external code/reference for the interview. |
| conversation_id | string | – | 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. Kee… |
| cover_image_url | string|null | – | Cover image URL. |
| custom_scoring | object|null | – | Custom result-scoring overrides merged with defaults and template overrides. |
| description | string|null | – | 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. |
| description_long | string|null | – | 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… |
| environment | string|null | – | 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… |
| hiring_for_company | object|null | – | 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… |
| include_closing_prompt | boolean|null | – | Include a closing prompt. Defaults to true. |
| include_rapport_question | boolean|null | – | Include an opening rapport question. Defaults to false. |
| instructional_video | boolean|null | – | Show an instructional video before approval. Defaults to false. |
| instructional_video_custom_text | string|null | – | Custom narration text for the instructional video. |
| interview_attempts | number|null | – | Allowed candidate attempts (1-20). |
| interview_available_till | string|null | – | ISO date/time after which the interview is no longer available to candidates. null keeps it always available. |
| interview_conversation_speed | string|null | – | 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 speaki… |
| interview_department | string|null | – | Department the position belongs to. |
| interview_length | – | – | 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 fo… |
| interview_salary | string|null | – | Salary range shown for the position. |
| interview_template_id | string|null | yes | Id of the interview template to base this interview on. |
| interview_tone | string|null | – | 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 c… |
| interview_type | string|null | – | 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-sc… |
| is_embedded | boolean|null | – | 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.… |
| knowledge_base_store_id | string|null | – | Knowledge base store id to source additional context from. |
| location | string|null | yes | Job location — a city/country, or `remote`. Required and must not be empty: when the job description gives no location, pass `Not specified`. |
| max_duration | number|null | – | 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.… |
| max_followups | integer|null | – | 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). |
| merchant_id | string|null | – | Merchant id. Admin / sub-merchant callers only; otherwise taken from your token. |
| microphone_test_message | string|null | – | Custom microphone-test instruction for a recorded (offline avatar) interview, spoken by the avatar and shown on screen before the first question. Omitted uses the default prompt in the interview lang… |
| microphone_test_no_speech_message | string|null | – | Custom text shown when the microphone test hears nothing. Omitted uses the default text in the candidate's language. |
| mojito_language_code | string|null | yes | Platform language code used for the interview. Must be one of the platform-languages.json codes. |
| name | string|null | yes | Interview / position name. |
| pdf_export_auto_config | object|null | – | Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export. |
| questions_random_subset | number|null | – | 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. |
| recording | string|null | – | 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`: Audi… |
| recording_full_session | string|null | – | 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 (av… |
| recruiter_profile_id | string|null | – | Profile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant. |
| required_pronunciation | boolean|null | – | Require pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false. |
| result_enable_edit_transcript | boolean|null | – | Allow editing the transcript on the result view. Defaults to true. |
| result_view | string|null | – | 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 transcr… |
| seniority_level | string|null | – | 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. | `senio… |
| status | string|null | yes | 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 a… |
| tags | array|null | – | 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 per… |
| thank_you_message | string|null | – | Custom thank-you message shown after the interview. |
| type | string|null | yes | 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 — ca… |
| use_enhanced_expectations | boolean|null | – | Reserved flag passed through to generation. |
| visibility | string|null | yes | 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`: Invi… |
| welcome_message | string|null | – | Custom welcome message shown to the candidate. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| embed_id | string|null | – | Embed id, present only when is_embedded=true. |
| embed_signing_key | string|null | – | Embed signing key, present only when is_embedded=true. |
| interview_def_set_id | string|null | yes | Id of the newly created interview definition set. |
| max_duration | number|null | yes | Live session limit in seconds stored on the interview — the value sent, or the 1200 default when omitted. |
| questions_generated | number|null | yes | Number of questions actually generated. May be lower than the requested interview_length, which is capped by max_duration. |
No examples provided.
create_interview_from_questions Create interview from questions ~2,524
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| additional_context | object|null | – | Extra context forwarded to expectation generation. |
| candidate_expectations | string|null | – | Free-text candidate expectations. |
| candidate_expectations_json | object|null | – | 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 | – | Whether a candidate video introduction is optional or required. |
| code | string|null | – | Optional external code/reference. |
| conversation_id | string | – | 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. Kee… |
| cover_image_url | string|null | – | Cover image URL. |
| custom_scoring | object|null | – | Custom scoring overrides merged with defaults. |
| description | string|null | yes | Short interview description. |
| description_long | string|null | – | 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/… |
| disable_deduplication | boolean|null | – | When true, skip step deduplication on insert. |
| environment | string|null | – | 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… |
| hiring_for_company | object|null | – | 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… |
| instructional_video | boolean|null | – | Enable an instructional video before approval. |
| instructional_video_custom_text | string|null | – | Custom text for the instructional video. |
| interview_attempts | number|null | – | Allowed attempts, 1-20. |
| interview_available_till | string|null | – | ISO date/time after which the interview is no longer available to candidates. null keeps it always available. |
| interview_conversation_speed | string|null | – | 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 speaki… |
| interview_department | string|null | – | Department the position belongs to. |
| interview_salary | string|null | – | Salary range shown for the position. |
| interview_template_id | string|null | yes | Id of the interview template to use. Must reference an existing interview_templates row. |
| interview_tone | string|null | – | 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 — `r… |
| interview_type | string|null | – | 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… |
| is_embedded | boolean|null | – | 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. |
| knowledge_base_store_id | string|null | – | Optional knowledge base store id; validated for existence. |
| location | string|null | yes | Job location — a city/country, or `remote`. Required and must not be empty: when the job description gives no location, pass `Not specified`. |
| max_followups | integer|null | – | 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). |
| merchant_id | string|null | – | Target merchant id (admins / sub-merchant only). |
| microphone_test_message | string|null | – | Custom microphone-test instruction for a recorded (offline avatar) interview, spoken by the avatar and shown on screen before the first question. Omitted uses the default prompt in the interview lang… |
| microphone_test_no_speech_message | string|null | – | Custom text shown when the microphone test hears nothing. Omitted uses the default text in the candidate's language. |
| mojito_language_code | string|null | yes | Platform language code (one of the platform-languages.json codes); must also resolve to a supported language with an Azure speech mapping. |
| name | string|null | yes | Interview/position name. |
| pdf_export_auto_config | object|null | – | Auto-generate a candidate PDF report with these options once the interview completes. null disables auto-export. |
| questions | array|null | yes | Ordered list of interview questions to create as steps. |
| questions_random_subset | number|null | – | Fraction of questions to randomly ask, between 0.01 and 0.9. |
| recording | string|null | – | 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`: Audi… |
| recording_full_session | string|null | – | 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 (av… |
| recruiter_profile_id | string|null | – | Profile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant. |
| required_pronunciation | boolean|null | – | Require pronunciation assessment (restricts to pronunciation-capable languages). Defaults to false. |
| result_enable_edit_transcript | boolean|null | – | Allow editing the transcript on the result view. Defaults to true. |
| result_view | string|null | – | 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 transcr… |
| seniority_level | string|null | – | 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. | `senio… |
| status | string|null | yes | 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 a… |
| tags | array|null | – | 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 per… |
| thank_you_message | string|null | – | Custom thank-you message. |
| type | string|null | yes | 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 — ca… |
| visibility | string|null | yes | 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`: Invi… |
| welcome_message | string|null | – | Custom welcome message. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| embed_id | string|null | – | Embed id, present only when is_embedded=true. |
| embed_signing_key | string|null | – | Embed signing key, present only when is_embedded=true. |
| interview_def_set_id | string|null | yes | Id of the newly created interview definition set. |
No examples provided.
create_persona Create role-play persona ~2,846
[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 L…
| Name | Type | Req | Description |
|---|---|---|---|
| candidate_expectations | string|null | – | Mentee assessment goals — free-text describing what the candidate is expected to achieve (max 2100 chars). |
| candidate_video_introduction | string|null | – | Whether a candidate video introduction is optional or required. |
| code | string|null | – | Optional external code/reference for the persona. |
| conversation_id | string | – | 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. Kee… |
| cover_image_url | string|null | – | Cover image URL. |
| description | string|null | – | 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 neve… |
| environment | string|null | – | 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… |
| interview_attempts | number|null | – | 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_conversation_speed | string|null | – | 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 speaki… |
| interview_location | string|null | – | Optional location label shown for the session. |
| interview_template_id | string|null | yes | Id of the interview template (avatar) the persona uses. |
| is_embedded | boolean|null | – | 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 t… |
| max_duration | number|null | – | Maximum conversation duration in seconds. Defaults to 1200 (20 min) when omitted. |
| merchant_id | string|null | – | Merchant id. Admin / sub-merchant callers only; otherwise taken from your token. |
| mojito_language_code | string|null | yes | Platform language code used for the conversation. Must be one of the platform-languages.json codes. |
| name | string|null | yes | Persona / session name. |
| opening_line | string|null | – | 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 t… |
| persona_avatar_end_conditions | string|null | – | 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 w… |
| persona_avatar_knowledge | string|null | – | 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.… |
| persona_avatar_progress | string|null | – | 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 (I… |
| persona_avatar_who_is | string|null | – | 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 desc… |
| persona_role_avatar | string|null | yes | 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… |
| persona_role_user | string|null | yes | 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 s… |
| portal | string|null | – | 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 (scre… |
| recording | string|null | – | 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`: Audi… |
| recording_full_session | string|null | – | 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 (av… |
| recruiter_profile_id | string|null | – | Profile id of the recruiter owning this persona. Must be a merchant/merchant_owner/admin profile of the same merchant. |
| result_view | string|null | – | 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 transcr… |
| status | string|null | yes | 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 a… |
| tags | array|null | – | 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 perso… |
| thank_you_message | string|null | – | Custom thank-you message shown after the session — set it; omitting it leaves a generic platform default. |
| visibility | string|null | yes | 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`: Invi… |
| welcome_message | string|null | – | 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| embed_id | string|null | – | Embed id, present only when is_embedded=true. |
| embed_signing_key | string|null | – | Embed signing key, present only when is_embedded=true. |
| interview_def_set_id | string|null | yes | Id of the newly created persona definition set. |
No examples provided.
create_report Create custom report ~323
[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. Format, rules and examples: https://developer.jobmojito.com/api-reference/reports/create-a-custom-report.md
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| definition | object | yes | A custom report: report-wide filters and up to 12 blocks. Read report-catalog first for the dataset, field and measure ids (every block needs an id and a type; measures are measure ids as strings, at… |
| merchant_id | string|null | – | Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| admin_url | string|null | yes | Open the report in the JobMojito admin. |
| id | string|null | yes | – |
| published | boolean|null | yes | false when the change was stored as a draft the owner publishes in the admin. |
| version | integer|null | yes | Send it back with the next update. |
No examples provided.
generate_interview_report Generate interview report ~253
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| export_features_result | object | – | – |
| export_type | string|null | yes | – |
| interview_result_id | string|null | – | – |
| interview_result_ids | array|null | – | Generate a single combined report for multiple results. |
| store_file | boolean|null | – | When true (pdf only), persist the file to storage and return a signed URL. |
| template | – | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| result | – | yes | The generated report. Exactly one of the three shapes below is returned, selected by the request `export_type`: `pdf` → `{ pdf_export_url, pdf_export_valid_until }`; `html` → `{ html_export }`; `json… |
No examples provided.
generate_interview_url Generate shareable interview link ~265
[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`.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| hide_menu | – | – | Pass the string 'false' to show the navigation menu; any other value hides it (default). |
| interview_id | string|null | – | Interview or position id. Required for interview-for-profile and interview-results-for-position. |
| interview_profile_id | string|null | – | Candidate profile id. Required for interview-for-profile and results-for-profile. |
| interview_result_id | string|null | – | Interview result id. Required for interview-result-candidate and interview-result-talent-seeker. |
| merchant_id | string|null | – | Override merchant id (admin / sub-merchant only). |
| type | string|null | yes | Which kind of signed URL to generate. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| result | string | yes | The signed interview URL. |
No examples provided.
get_catalogue_directory Get coaching catalogue directory ~408
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| id | string | yes | 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 | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| mojito_language_code | string | – | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| catalogue_url | string|null | yes | Public URL of this directory page, when the merchant has a coaching-portal domain configured. |
| coach_plan | string|null | yes | Coaching-plan stage, when the directory belongs to one. |
| content_md | string|null | yes | 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 sessi… |
| cover_image_url | string|null | yes | Cover image URL. |
| created_at | string|null | yes | Creation timestamp (ISO 8601). |
| description | string|null | yes | Short description shown on the directory card. |
| id | string|null | yes | Directory id — also the catalogue URL segment. |
| is_start_directory | boolean|null | yes | True when this is the directory the merchant's catalogue opens on. |
| languages | array|null | yes | Every language the directory has, the default (`mojito_language_code`) first. `matched_sessions` and `sub_directories` describe the default language unless the request names another one in `mojito_la… |
| matched_sessions | array|null | yes | The coaching/persona sessions this directory currently lists, applying the same rules as the live portal: `active`, type `coaching` or `persona`, visibility `public` or `merchant_public` for this mer… |
| matched_sessions_truncated | boolean|null | yes | True when more sessions match than the 200 returned — narrow `tags_interview_set_filter` if you see this. |
| merchant_id | string|null | yes | Owning merchant id. Null for a platform-wide directory. |
| merged_into | string|null | yes | Set when this directory was folded into another as one of its language versions: the directory to edit instead. Its old URL redirects there. |
| mojito_language_code | string|null | yes | Directory language. |
| name | string|null | yes | Display name. |
| status | string|null | yes | Lifecycle status. |
| sub_directories | array|null | yes | The directories listed in `tags_sub`, resolved and in display order. An id in `tags_sub` that does not resolve (deleted, or not visible to you) is simply absent here — compare the two to spot a broke… |
| tags_interview_set_filter | array|null | yes | 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 visib… |
| tags_sub | array|null | yes | 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… |
| translations | object|null | yes | 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 nam… |
| updated_at | string|null | yes | Last update timestamp (ISO 8601). |
| viewed_language | string|null | yes | The language version `sub_directories` and `matched_sessions` were resolved for: the requested `mojito_language_code`, else the default. |
| visibility | string|null | yes | Who can see it. |
No examples provided.
get_documentation Read a JobMojito documentation page ~181
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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| max_chars | integer | – | Truncate content to this many characters (default 20000). |
| url | string | yes | The documentation page URL. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
No examples provided.
get_interview_definition Get interview definition ~268
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| position_id | string | yes | Identifier of either an interview definition (single-stage) or a position definition (multi-stage). The function resolves whichever matches. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| calc_definition_json | – | – | The compiled interview definition JSON (structure varies by interview type). |
| candidate_expectations | string|null | yes | Free-text candidate expectations. Null for multi-stage positions. |
| candidate_expectations_json | – | – | Structured candidate expectations JSON — the scoring rubric. Null for multi-stage positions. |
| candidate_notification_channel | string|null | yes | SMS / WhatsApp candidate notifications: null = off, reminders = with both e-mail reminders, last_reminder = only with the final reminder, all = invitation + reminders + pre-screening accepted. |
| candidate_video_introduction | string|null | yes | Whether a candidate video introduction is hidden/optional/required. Null for multi-stage positions. |
| coach_plan | string|null | yes | Coaching-plan stage this session belongs to. Null for multi-stage positions and for sessions outside any plan. |
| code | string|null | yes | Caller-supplied external code/reference. |
| country_availability | – | – | Portal availability by the candidate's country: {countries_allowed?: string[], countries_allowed_eu?: boolean, countries_blocked?: string[], countries_blocked_eu?: boolean} (ISO 3166-1 alpha-2, EU =… |
| cover_image_url | string|null | yes | Cover image URL. |
| created_at | string|null | yes | – |
| creation_parameters | – | – | The creation parameters recorded at build time (interview_type, interview_tone, interview_length, additional_context, include_rapport_question, include_closing_prompt, knowledge_base_store_id, senior… |
| custom_fields | object|null | – | Company-defined fields (key: value) of a multi-stage position, when custom fields are enabled for the company (multi-stage positions only: absent for an interview). Keys are the field keys of the com… |
| description | string|null | yes | Short description. |
| environment | string|null | yes | Which webhook environment this interview's results are delivered to. Null for multi-stage positions, whose stages each carry their own. |
| interview_available_till | string|null | yes | ISO date/time after which the interview is no longer available to candidates. Null means always available. |
| interview_conversation_speed | string|null | yes | Conversation pace of the AI avatar (slower/normal/faster/fluent). Null keeps the template default. Null for multi-stage positions. |
| interview_department | string|null | yes | Department the position belongs to. |
| interview_description_long | string|null | yes | Long description (create/update field `description_long`). Rendered as Markdown on the candidate-facing position page — formatting guide: https://developer.jobmojito.com/cookbooks/format-content-with… |
| interview_location | string|null | yes | Location (create field `location`). |
| interview_salary | string|null | yes | Salary range shown for the position. |
| interview_template_id | string|null | yes | Interview template id. For multi-stage positions this is the first interview step's template. |
| interview_template_type | string|null | yes | Type of the linked interview template. `interactive_elevenlabs` is voice-only; the others (`interactive_spatius`, `interactive_heygen`, `offline_heygen`, `offline_elai`, `offline_synthesia`) are avat… |
| is_multistage | boolean|null | yes | True when the id resolved to a multi-stage position rather than a single interview. |
| is_voice_only | boolean|null | yes | Convenience flag derived from interview_template_type: true when voice-only (`interactive_elevenlabs`), false when avatar-based, null when the template type could not be resolved. |
| knowledge_base_store_id | string|null | yes | Linked knowledge base store id. Null for multi-stage positions. |
| max_duration | number|null | yes | Live session limit in seconds. Null for multi-stage positions. |
| max_followups | number|null | yes | Maximum number of AI follow-up questions; null uses the template default. Null for multi-stage positions. |
| merchant_id | string|null | yes | Owning merchant id. |
| mojito_language_code | string|null | yes | Platform (mojito) language code. |
| name | string|null | yes | Interview or position name. |
| pdf_export_auto_config | – | – | Auto-PDF-report options applied when the interview completes; null when auto-export is off. Null for multi-stage positions. |
| questions | array|null | yes | The interview questions, in the order they are asked, in the same format job-interview-create-from-array accepts — so this array can be edited and sent straight back to job-interview-update, or used… |
| questions_random_subset | number|null | yes | Fraction of the questions actually asked (0.01-0.9); null asks all of them. Null for multi-stage positions. |
| recording | string|null | yes | Per-answer recording mode. Null for multi-stage positions. |
| recording_full_session | string|null | yes | Full-session recording mode. Null for multi-stage positions. |
| recruiter_profile_id | string|null | yes | Profile id of the recruiter owning this interview/position. |
| required_pronunciation | boolean|null | yes | Whether a pronunciation assessment is required. Null for multi-stage positions. |
| result_enable_edit_transcript | boolean|null | yes | Whether the candidate may edit the transcript on the result view. Null for multi-stage positions. |
| result_scoring | – | – | Resolved result-scoring config (update field `custom_scoring`; its `max_retries` is the update field `interview_attempts`). Null means the platform defaults apply. Null for multi-stage positions. |
| result_view | string|null | yes | Result view level. Null for multi-stage positions. |
| slug | string|null | yes | URL slug of the public listing, when one was generated. |
| speech_language_code | string|null | yes | Azure speech language code. Null for multi-stage positions. |
| speech_language_name | string|null | yes | Azure speech language display name. Null for multi-stage positions. |
| stage | string|null | yes | Hiring-pipeline stage. Null for multi-stage positions. |
| status | string|null | yes | Lifecycle status of the interview/position. |
| tags | array|null | yes | Free-form tags. Also the coaching-catalogue mapping key: a catalogue directory lists this session when its `tags_interview_set_filter` is a subset of these tags. Null for multi-stage positions. |
| type | string|null | yes | Interview type. Null for multi-stage positions. |
| type_credit | string|null | yes | Credit bucket the interview draws from. Null for multi-stage positions. |
| updated_at | string|null | yes | – |
| visibility | string|null | yes | Who can see and access the interview/position. |
No examples provided.
get_interview_result_details Get interview result details ~411
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| get_signed_recordings | string | – | When true, includes short-lived signed recording URLs for the session, the video introduction, and each transcript answer. |
| interview_result_id | string | yes | The interview result to fetch the transcript and details for. |
| view | string | – | 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 wi… |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| ai_analysis | string|null | – | Candidate-facing AI analysis of the whole interview. |
| ai_analysis_other | – | – | Session-level AI analyses keyed by analysis name (jsonb). `strengths_concerns`: { strengths: string[], concerns: string[] } (0-4 items each, recruiter-facing; called `hiring_reasons` with `reasons_to… |
| ai_analysis_recruiter | string|null | – | Recruiter-facing AI analysis of the whole interview. |
| ai_analysis_recruiter_why_hire | – | – | Reasons to hire (list). Deprecated: a copy of ai_analysis_other.strengths_concerns.strengths, kept for existing integrations. |
| ai_analysis_recruiter_why_not_hire | – | – | Reasons not to hire (list). Deprecated: a copy of ai_analysis_other.strengths_concerns.concerns, kept for existing integrations. |
| ai_completion_reason | string|null | – | Why the interview completed (ai_completed_reason). |
| ai_interview_coverage_percentage | number|null | – | Percentage of the intended interview the AI judged to be covered. |
| duration | number|null | – | Total duration in deciseconds (duration_ds). |
| end | string|null | – | Interview end timestamp (training_end, ISO 8601). |
| recording_is_video | boolean|null | – | Whether the session recording is video. |
| recording_local_path | string|null | – | Storage path of the full session recording. |
| recording_url | string|null | – | Signed session-recording URL; present only when get_signed_recordings=true. |
| recruiter_risks | – | – | Detected recruiter risk flags (jsonb). |
| score | number|null | – | Overall interview score. |
| score_answer | number|null | – | Aggregate answer sub-score. |
| score_pronunciation | number|null | – | Pronunciation sub-score. |
| score_sentiment | number|null | – | Sentiment sub-score. |
| score_simulation | number|null | – | Overall simulated score. |
| score_text | string|null | – | Human-readable score summary. |
| score_words_per_minute | number|null | – | Speaking-pace (words per minute) sub-score. |
| start | string|null | – | Interview start timestamp (training_start, ISO 8601). |
| status | string|null | – | Coach/interview status (coach_status), e.g. started, completed. |
| transcript | array|null | – | Ordered interactions (questions + answers) of the interview. |
| user_feedback_recruiter | string|null | – | Recruiter-entered feedback note. |
| video_introduction_local_path | string|null | – | Storage path of the candidate video introduction. |
| video_introduction_url | string|null | – | Signed video-introduction URL; present only when get_signed_recordings=true. |
No examples provided.
get_merchant_analytics Get merchant analytics ~356
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| date_from | string | yes | Start of the date range (inclusive), YYYY-MM-DD. |
| date_to | string | yes | End of the date range (inclusive), YYYY-MM-DD. |
| interview_id | string | – | 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 interv… |
| limit | integer | – | Maximum number of records to return (1–1000). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| offset | integer | – | Number of records to skip from the start of the result set. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | Daily event counts for the requested range, ordered by day ascending. Only day/event combinations with a non-zero count are returned; missing combinations should be treated as 0 by the caller. |
| pagination | object | yes | – |
No examples provided.
get_merchant_credit_usage Get merchant credit usage ~331
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| interview_id | string | – | 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 th… |
| limit | integer | – | Maximum number of records to return (1–1000). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| offset | integer | – | Number of records to skip from the start of the result set. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | Credit-consuming analytics events for the merchant, most recent first. Each row is one billable event; the credits it consumed are in stats.credit_amount. |
| pagination | object | yes | – |
No examples provided.
get_merchant_status Get merchant status ~235
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| candidates | number|null | yes | Total candidates (non-archived profile_interview rows) for the merchant. |
| candidates_history | array|null | yes | Daily new-candidate counts for the last 14 days, most recent first. |
| credits_interview_extra | number|null | yes | Extra (top-up) interview credits available on top of the monthly allowance. |
| credits_interview_monthly | number|null | yes | Remaining monthly interview credits. |
| credits_interview_monthly_limit | number|null | yes | Monthly interview-credit allowance for the current plan. |
| credits_interview_single | number|null | yes | Single-position interview credits available. |
| default_merchant_id | string|null | yes | The caller's home merchant id pinned in the JWT (app_metadata.merchant_id). Null if the token carries no merchant. |
| definitions_active | number|null | yes | Count of active interview + position definitions. |
| interview_result_history | array|null | yes | Daily new-interview-result counts for the last 14 days, most recent first. |
| interview_results | number|null | yes | Total non-archived interview results for the merchant. |
| interviews_ongoing | number|null | yes | Interviews currently in progress (coach_status = started). |
| interviews_undecided | number|null | yes | Completed interviews awaiting a recruiter decision. |
| interviews_without_credits | number|null | yes | Completed interviews that have not yet consumed a credit. |
| invitations_available | number|null | yes | Remaining invitations this period. Null for unlimited (Special) plans. |
| invitations_limit | number|null | yes | Maximum invitations allowed this period (4x available credits). Null for unlimited (Special) plans. |
| invitations_sent | number|null | yes | Interview invitations sent during the current subscription period. |
| merchant_id | string|null | yes | The merchant this status is scoped to — the default_merchant_id unless an admin / sub-merchant operator overrode it via the merchant_id query param. |
| profile_id | string|null | yes | The calling user's profile id (auth user id), taken from the JWT. |
| subscription_status | string|null | yes | Subscription status (e.g. active, past_due, canceled). Null when no subscription. |
| subscription_type | string|null | yes | Subscription plan name (e.g. Free, Starter, Growth, Special). |
No examples provided.
get_portal_configuration Get portal configuration ~547
[Admin] Read the company's portal configuration as editable documents: `branding` (portal name, style, colours, logos, e-mail sender name), `interview-portal` (languages, home texts), `coaching-portal` (vertical, feature toggles, labels, languages, home blocks) and one `jobmojito.portal-site` document per portal (every page's draft content and the theme CSS). Narrow with `sections` (branding, interview-portal, coaching-portal, interview-pages, coaching-pages): the page documents are the large ones. This is the read step of every portal change: read the section(s) involved, change only what the user asked for, and send those documents back with update_portal_configuration. Field reference: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages. Reads the company's portal configuration as import documents: branding, the interview portal, the coaching portal, and the pages + theme CSS of each portal. Every returned document can be edited and sent back to portal-configuration-update unchanged in shape (preview with `dry_run: true` first). Document formats: https://developer.jobmojito.com/cookbooks/portal-branding/branding, https://developer.jobmojito.com/cookbooks/portal-branding/interview-portal, https://developer.jobmojito.com/cookbooks/portal-branding/coaching-portal, https://developer.jobmojito.com/cookbooks/portal-branding/portal-pages.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| sections | string | – | Comma-separated sections to return (default: all): branding, interview-portal, coaching-portal, interview-pages, coaching-pages. A portal the company does not use is left out of the default; name its… |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| documents | array|null | yes | One document per section, each a valid input for portal-configuration-update: `kind: "branding"`, `kind: "interview-portal"`, `kind: "coaching-portal"`, and one `format: "jobmojito.portal-site"` per… |
| merchant_id | string|null | yes | Merchant the configuration belongs to. |
No examples provided.
get_report Get custom report ~209
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| id | string | yes | Report id (from list_reports). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| access | string|null | yes | – |
| admin_url | string|null | yes | – |
| definition | – | – | The published ReportDefinition. |
| draft_definition | – | – | Unpublished edits (only for people who can edit), or null. |
| id | string|null | yes | – |
| title | string|null | yes | – |
| version | integer|null | yes | – |
| visibility | string|null | yes | – |
No examples provided.
invite_candidates Invite candidates to an interview or position ~307
[Interviews] Invite candidates to an interview or position: e-mails each one their invitation. The same invitation the admin console's Add candidates sends: creates or finds the candidate, uses the company's invitation budget, and queues the invitation e-mail (with the optional recruiter message). Each row comes back with its outcome; only 'Invited' means an e-mail was queued. To get a personal interview link WITHOUT sending an e-mail (to share it yourself, or for a test), use register_users_for_interview instead.
| Name | Type | Req | Description |
|---|---|---|---|
| candidates | array | yes | The people to invite. |
| conversation_id | string | – | 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. Kee… |
| interview_id | string | yes | The interview (interview_def_set) or position (position_def_set) id, from list_interviews. |
| language | – | – | Language code for new candidates (e.g. 'en', 'sk'); defaults to English. |
| merchant_id | – | – | Only for an account acting for a sub-merchant; omit for your own company. |
| message_from_recruiter | – | – | Optional personal note shown above the invitation in the e-mail. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
No examples provided.
jobmojito_configuration Choose a JobMojito merchant ~210
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).
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
No output schema declared.
No examples provided.
list_avatars List avatars and voice templates ~514
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| filter_text | string | – | Case-insensitive search on template name or voice language name. |
| include_archived | string | – | Include archived templates (excluded by default). |
| include_public | string | – | Also include public templates shared across merchants, in addition to this merchant's own. |
| limit | integer | – | Maximum number of records to return (1–1000). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| mojito_language_code | string | – | Filter by platform language code. Omit for all languages. |
| offset | integer | – | Number of records to skip from the start of the result set. |
| status | string | – | Filter by status. Omit for all except archived (see include_archived). |
| type | string | – | Filter by avatar template type. Omit for all. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | The merchant's avatar templates for this page, newest-updated first. |
| pagination | object | yes | – |
No examples provided.
list_candidates List candidates ~329
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| filter_emoji | string | – | Filter by the candidate emoji marker. |
| filter_text | string | – | 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. |
| limit | integer | – | Maximum number of records to return (1–1000). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| offset | integer | – | Number of records to skip from the start of the result set. |
| order_by | string | – | Sort order of the result set. |
| source | string | – | Filter by how the candidate entered: invited or self-registered. Omit for both. |
| tab | string | – | Filter candidates by recent activity. Omit (or empty) to include all. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | The merchant's candidates for this page. |
| pagination | object | yes | – |
No examples provided.
list_catalogue_directories List coaching catalogue directories ~491
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| filter_text | string | – | Case-insensitive search on the directory id, name and description. |
| include_public | string | – | Include the platform-wide `public` directories shared across merchants. |
| limit | integer | – | Maximum number of records to return (1–1000). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| mojito_language_code | string | – | Filter by language: directories whose default language or one of whose language versions is this one. Omit for all languages. |
| offset | integer | – | Number of records to skip from the start of the result set. |
| parent_tag | string | – | 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. |
| status | string | – | Filter by lifecycle status. Omit to include every status you can see (deleted directories are never returned). |
| visibility | string | – | Filter by visibility. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | The catalogue directories for this page, ordered by id. |
| pagination | object | yes | – |
No examples provided.
list_interview_results List interview results ~425
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| filter_emoji | string | – | Filter by the candidate emoji marker. |
| filter_text | string | – | Case-insensitive search on candidate name or email. |
| interview_id | string | – | Filter to a single interview definition id. |
| limit | integer | – | Maximum number of records to return (1–1000). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| offset | integer | – | Number of records to skip from the start of the result set. |
| order_by | string | – | Sort order of the result set. |
| profile_interview_id | string | – | Filter to a single candidate (profile_interview) id. |
| risks | string | – | Comma-separated list of recruiter-risk keys to filter by (matches any). |
| step | string | – | Filter by pipeline step type (pre-screening, interview or meeting). Omit for all. |
| tab | string | – | Filter by decision/completion state. Omit (or empty) to include all. |
| type | string | – | Product type of results to list. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | The merchant's interview results for this page. |
| pagination | object | yes | – |
No examples provided.
list_interviews List interviews ~303
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| filter_emoji | string | – | Filter by the interview emoji marker. |
| filter_text | string | – | Case-insensitive search on the interview name. |
| limit | integer | – | Maximum number of records to return (1–1000). |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| offset | integer | – | Number of records to skip from the start of the result set. |
| show_demo | string | – | Include demo/sample interviews. |
| show_public | string | – | Include interviews shared publicly across merchants (coaching/avatars). |
| status | string | – | Filter by lifecycle status. Omit to include all statuses. |
| type | string | – | Product type of interviews to list. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | The merchant's interview definitions for this page, newest-updated first. |
| pagination | object | yes | – |
No examples provided.
list_languages List supported languages ~184
[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.
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| languages | array|null | yes | Supported platform languages, sorted by English name. |
No examples provided.
list_my_merchants List merchants you can act as ~211
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).
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| search | string | – | Optional case-insensitive filter on sub-merchant name. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
No examples provided.
list_report_fields List report datasets and fields ~368
[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. Pass dataset to get only that dataset (the whole catalogue of a large account is long).
| Name | Type | Req | Description |
|---|---|---|---|
| conversation_id | string | – | 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. Kee… |
| dataset | string | – | Only this dataset (e.g. positions, interview_results); the other keys are returned as usual. Unknown ids return no datasets. |
| merchant_id | string | – | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| block_types | array|null | yes | – |
| can_share | boolean|null | yes | false for hiring managers (read-only role). |
| datasets | array|null | yes | Datasets you may use: id, label, description, snapshot (ignores the period), and fields: id, kind (dimension | measure), type, label, description, values (allowed values of a text dimension), grains… |
| limits | object|null | yes | – |
| period_presets | array|null | yes | – |
| schema | string|null | yes | – |
| where_ops | array|null | yes | – |
No examples provided.
How do I install the JobMojito MCP server?
JobMojito is a hosted endpoint at https://mcp.jobmojito.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.jobmojito.com
claude mcp add --transport http com-jobmojito-jobmojito 'https://mcp.jobmojito.com/mcp'
What is the JobMojito MCP server?
JobMojito is an MCP server listed in the public MCP registry as com.jobmojito/jobmojito. Run AI interviews, simulated personas and coaching sessions on JobMojito. This page covers its hosted endpoint (https://mcp.jobmojito.com/mcp).
Is the JobMojito MCP server safe to use?
JobMojito scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the JobMojito MCP server expose?
JobMojito exposes 42 tools: search_documentation, get_documentation, list_my_merchants, invite_candidates, create_interview, and 37 more. Their descriptions and schemas cost roughly 26,236 tokens of context every time the server is loaded.
Does the JobMojito MCP server require authentication?
Yes. JobMojito asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the JobMojito MCP server still maintained?
JobMojito is still listed as active in the MCP registry. We last reached this channel on 6 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the JobMojito MCP server?
VerifyMCP ran 14 checks on JobMojito, covering TLS certificate, Authorization, HTTPS, HSTS header and 10 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.