JobMojito
REMOTE · MCP.JOBMOJITO.COM
Run AI interviews, simulated personas and coaching sessions on JobMojito.
Available components
Last scanned (13 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 →
list_reports List custom reports ~213
[Reports] List custom reports you can open (yours, shared with you) and the JobMojito templates, with id, title, visibility, your access and version. Custom reports you can open on this account (yours, the ones shared with you) and the JobMojito templates. Pinned first, then most recently updated.
| 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. |
| scope | string | – | all (default), mine, shared (by colleagues) or templates. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | – |
No examples provided.
list_sub_merchants List sub-merchants ~244
[Admin] List sub-merchants under the merchant account. Paginated list of the sub-merchants the caller administers (the admin-portal sub-merchants list). Visibility is enforced by row-level security. Capped at 1000 records per page.
| 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 sub-merchant 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. |
| order_by | string | – | Sort order of the result set. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| data | array|null | yes | The sub-merchants the caller administers for this page. |
| pagination | object | yes | – |
No examples provided.
preview_report Check and preview a report definition ~334
[Reports] Validate a report definition against the catalogue and run it without saving anything. Use it before create_report / update_report: a block that is wrong comes back with ok=false and an error naming the field and the valid ids. Validates a report definition against the catalogue and runs it, without storing anything. Use it to check a definition before create_report or update_report. A 422 names the block and field that is wrong and lists the valid ids. Format: https://developer.jobmojito.com/api-reference/reports/check-and-run-an-unsaved-report.md
| Name | Type | Req | Description |
|---|---|---|---|
| block_id | string|null | – | Run only this block. |
| 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… |
| filters | – | – | – |
| 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. |
| blocks | array|null | yes | – |
| filters | object|null | yes | The filters the blocks ran with (report defaults, then your saved filters, then the ones you passed). |
| report_id | string|null | – | – |
| title | string|null | – | – |
| version | integer|null | – | – |
No examples provided.
register_users_for_interview Register candidates for interview ~410
[Interviews] Register candidates for an interview and return their personal interview links. Sends NO e-mail: to invite candidates by e-mail use invite_candidates. Registers (or updates) one or more candidate profiles for an interview and returns a one-time interview URL for each. Sends no e-mail: share the links yourself, or invite candidates with invite-users (type candidate), which e-mails the invitation. Accepts a Supabase user JWT (merchant/admin) or the service key (merchant_id then required).
| 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_iframe | – | – | When true (or the string "true"), the interview UI hides its iframe chrome (view_hi). |
| hide_menu | – | – | When true (or the string "true"), the interview UI hides its menu (view_hm). |
| interview_id | string|null | yes | Interview definition (interview_def_set) or position (position_def_set) id to register users for. |
| is_test | – | – | When true (or the string "true"), mints a test token that can take a draft/unpublished interview and flags the result as a test. For a DRAFT interview it also recompiles the definition (interview_rec… |
| merchant_id | string|null | – | Merchant id. Required when authenticating with the service key; for user tokens it is optional and only honored for admin / sub-merchant accounts. |
| users | array|null | yes | Candidates to register for the interview. Each gets a one-time interview URL. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| result | array | yes | The input users, each annotated with its registration result and (on success) interview URL. |
No examples provided.
report_technical_issue Report technical issue ~328
[Feedback] Report a technical problem to JobMojito support. It opens a support conversation from the signed-in user's account (their e-mail), with their company and the interview or result ids given; support answers there. Describe what was done, what was expected and what happened (error text as shown). Confirm the wording with the user first; at most 5 a day. Reports a technical problem to JobMojito support. It opens a support conversation from your account (your e-mail), with your company and the ids you give; support answers there. At most 5 reports per user in 24 hours. Requires a user token (admin console session or MCP sign-in) of a merchant, merchant owner or admin.
| 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… |
| description | string|null | yes | What went wrong: what you did, what you expected, what happened instead (error messages as shown), and since when. Plain text; blank lines separate paragraphs. Do not include passwords or API keys. |
| interview_id | string|null | – | The interview (definition) the problem is about, if any. |
| result_id | string|null | – | The interview result the problem is about, if any. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| id | string|null | yes | Id of the stored report. |
| reference | string|null | yes | The support conversation number, once sent (e.g. `#592`). |
| status | string|null | yes | `sent`: the support team has it. `queued`: stored, it is sent shortly (support could not be reached right now). |
No examples provided.
request_another_interview_attempt Re-open interview for another attempt ~159
[Results] Re-open a submitted interview result so the candidate can retry. Marks a submitted (active + completed) interview result as unsuccessful so the candidate can retake it. Resets the result to draft and clears the recruiter decision.
| 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_result_id | string|null | yes | The interview result to reopen for another attempt. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
No examples provided.
run_report Run custom report ~320
[Reports] Run a saved custom report and return each block's rows (aggregated numbers, at most 500 rows per block). Optional `filters` JSON overrides the period / positions / interviews for this run only. Report numbers are decision-support material for a human reviewer. Runs every block of a saved report and returns its rows. Filters start from the report's defaults, then your own saved filters, then `filters` if you pass it. Each block runs on its own: a block that fails returns ok=false with an error while the others still return data. Numbers are aggregated; no block returns more than 500 rows.
| Name | Type | Req | Description |
|---|---|---|---|
| block_id | string | – | Run only this block. |
| 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… |
| draft | string | – | Run the unpublished draft instead (only if you can edit the report). |
| filters | string | – | Optional JSON ReportFilters to apply on top, e.g. {"period":{"preset":"last_month"}}. |
| 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. |
| blocks | array|null | yes | – |
| filters | object|null | yes | The filters the blocks ran with (report defaults, then your saved filters, then the ones you passed). |
| report_id | string|null | – | – |
| title | string|null | – | – |
| version | integer|null | – | – |
No examples provided.
search_documentation Search JobMojito documentation ~307
Search ALL JobMojito documentation. This is the single entry point. One call searches both documentation sources in parallel and returns a merged, source-labeled list — you do not need to choose a source or call a separate tool: • "developer" — developer.jobmojito.com: API reference, request/response schemas, tables, webhooks, code examples, integration guides. • "help" — help.jobmojito.com: recruiter, candidate, and administrator product guides (how the platform behaves for end users). Use this whenever you need to understand how a feature, endpoint, field, or workflow works — including before calling an action tool you're unsure about. Then call `get_documentation(url)` with a returned URL to read the full page.
| 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… |
| limit | integer | – | Max results per source (1-25). |
| query | string | yes | Natural-language search query or keywords. |
| source | string | – | "all" (default), "developer", or "help" to restrict the search. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
No examples provided.
set_assessment_result Record an external assessment result ~337
[Results] Record the result of a candidate's external assessment step (status, score, pass / fail, report link). The step then waits for the recruiter's decision. Records the result of an external assessment step of an application (status, score, pass / fail, report link). A result never decides on its own: the step then waits for the recruiter to pass or fail it. Requires the token of a merchant or merchant owner of the company; available when external assessments are enabled for the company.
| 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… |
| note | string|null | – | Note for the recruiter. |
| passed | boolean|null | – | Pass / fail as the assessment reports it. Without it the step's pass mark decides it from the score. |
| position_result_step_id | string|null | yes | The external assessment step of the application (position_result_step id). |
| report_url | string|null | – | Link to the full report (https). |
| result_label | string|null | – | Result label, for example a language level. |
| score | number|null | – | Score (completed). |
| score_max | number|null | – | Maximum score. |
| status | string|null | yes | started, completed (a result), expired (not taken in time) or cancelled. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| outcome | string|null | yes | applied, or ignored_final for a cancelled assessment. |
| passed | boolean|null | – | – |
| score | number|null | – | – |
| score_max | number|null | – | – |
| status | string|null | – | Status of the assessment after the call. |
No examples provided.
set_interview_state Change interview state ~376
[Interviews] Change the state of an interview/position (e.g. open, closed). Changes the lifecycle status of an interview or position (draft, active, archived, preparing, completed, deleted) and/or manages its embed key. Provide at least one of `status` or `is_embedded`.
| 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… |
| is_embedded | boolean|null | – | Controls iframe embedding of the interview on an external page. When true, ensures an embed key exists (returns embed_id/embed_signing_key, used to authenticate/sign the iframe embed). When false, re… |
| position_id | string|null | yes | Interview definition id or position id whose state should change. |
| status | string|null | – | New lifecycle status to apply. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| result | – | yes | Returns `{ embed_id, embed_signing_key }` when an embed key was created/returned (is_embedded=true), otherwise `{ success: true }`. |
No examples provided.
submit_feature_request Submit feature request ~331
[Feedback] Send a feature request to the JobMojito product team. It is posted on the public feature request board under the signed-in user's name, where they get status updates; the company is not named. Write a short title and a description of the need and why (no candidate data or company names). Confirm the wording with the user before submitting; at most 5 a day. Sends a feature request to the JobMojito product team. It is posted on the public feature request board under your name (from your account e-mail), where you get status updates and others can vote on it; your company is not named. At most 5 requests per user in 24 hours. Requires a user token (admin console session or MCP sign-in) of a merchant, merchant owner or admin.
| 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… |
| description | string|null | yes | What the user needs and why: the problem, how they work around it today, who it would help. Plain text; blank lines separate paragraphs. The board is public: do not include candidate data, company na… |
| title | string|null | yes | A short summary of the feature, shown as the post title. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| id | string|null | yes | Id of the stored request. |
| status | string|null | yes | `posted`: it is on the feature request board. `queued`: stored, it is posted shortly (the board could not be reached right now). |
No examples provided.
update_catalogue_directory Update coaching catalogue directory ~1,035
[Coaching catalogue] Update a coaching catalogue directory: rename it, change which sessions it lists (`tags_interview_set_filter`), re-order its sub-directories (`tags_sub`), author its custom Markdown page (`content_md`), or add, replace or remove a language version (`translations`, per language; null removes one). Only the fields you send are changed. Coaching-platform feature. Updates a directory (page) of the coaching portal catalogue. Only the fields present in the request body are written — everything else keeps its current value, and sending null clears a nullable field. Use it to rename a directory, re-point which sessions it lists (`tags_interview_set_filter`), re-order or replace its sub-directories (`tags_sub`), author its custom Markdown page (`content_md`), or add, replace and remove its other language versions (`translations`).
| 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 the custom directory page. Sending null removes the custom page and restores the default grid; sending a string replaces the whole page. Directives, each ALONE on its own line: `[plan-pr… |
| 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. null clears it. |
| description | string|null | – | Short description shown on the directory card. |
| id | string|null | yes | Id of the directory to update (the catalogue URL segment). The id itself is not changed here — rename a directory in the admin catalogue editor, which moves every link to it. |
| mojito_language_code | string|null | – | Language of the directory (one of the platform-languages.json codes). The catalogue groups directories by language. |
| name | string|null | – | Display name of the directory. |
| 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 | – | 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… |
| 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 updated directory. |
| updated_fields | array|null | yes | Names of the fields that were written. |
No examples provided.
update_interview Update interview or position ~3,731
[Interviews] Update the configuration of an existing interview/position: name, description, avatar template, recording, scoring, tags and the rest of the create-time settings. Only the fields you send are changed. To change the questions, send `questions` — the WHOLE list you want the interview to end up with, in order, in the format get_interview_definition returns. OMIT `questions` and the existing questions are left completely alone; there is no way to change one question on its own, so read the interview first, edit that array, and send it back. Resending an unchanged array does nothing. Not updated by this tool at all: the welcome and thank-you messages and the instructional-video screen (stored as steps, not questions), and the language, which the existing questions are already written in. Use `tags` to place a coaching session into a catalogue directory. MULTI-STAGE POSITIONS: some per-interview settings do not exist at position level and are rejected with a 422 naming the field — `candidate_expectations_json` is the one seen in practice. Read the position with get_interview_definition, then update the individual stage you mean instead of sending that field to the position. Updates the configuration of an existing interview (single-stage) or position (multi-stage). Only the fields present in the request body are written — everything else keeps its current value, and sending null clears a nullable field. The question list is only touched when you send `questions`; omit that field and the questions are left exactly as they are. When sent, it must be the complete list and is applied as a diff against what is stored (matched on external_id, then id, then identical content), so unchanged questions keep their existing records, edited ones are unlinked and re-created, and dropped ones are unlinked — and re-sending the array job-interview-get returned changes nothing. See the field description, and `questions_diff` in the response for what was decided. Questions of…
| Name | Type | Req | Description |
|---|---|---|---|
| candidate_expectations | string|null | – | Free-text candidate expectations. |
| candidate_expectations_json | object|null | – | Structured candidate expectations (the scoring rubric), bucketed by requirement level (weak/moderate/strong). null clears the rubric. Extra keys are preserved. |
| candidate_notification_channel | string|null | – | SMS / WhatsApp notifications to the candidate, sent alongside the e-mails: "reminders" = with both e-mail reminders (day 1 and day 3); "last_reminder" = only with the final day-3 reminder; "all" = in… |
| candidate_video_introduction | string|null | – | Whether a candidate video introduction is hidden, optional or required. null is treated like hidden. |
| 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.… |
| code | string|null | – | External code/reference. Blank is stored as null. |
| 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… |
| country_availability | object|null | – | Which countries the interview / position is open to on the candidate portal, judged by the IP address the candidate opens it from (an unknown location only passes when countries_allowed / countries_a… |
| cover_image_url | string|null | – | Cover image URL. |
| custom_fields | object|null | – | Company-defined position fields to set, {key: value}; a null value clears that field and keys you omit keep their value. Values are checked against the field definitions (option values, YYYY-MM-DD da… |
| custom_scoring | object|null | – | Result-scoring overrides (max_score, early_stop, speech_cadence, ai_pronunciation, sentiment_analysis, ai_assessment_answer, ai_assessment_resume, ai_assessment_session). Merged onto the stored confi… |
| description | string|null | – | Short interview description. |
| description_long | string|null | – | Long-form interview description (column `interview_description_long`). Rendered as Markdown on the candidate-facing position page, including chips, callouts, cards, columns and buttons — formatting g… |
| 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. null (or an object with name null/blank) means hiring for yourself; { name: 'undisclosed' } for an unnamed external client; or { name: '<company>' } plus optional desc… |
| interview_attempts | number|null | – | Allowed candidate attempts (1-20). Stored as result_scoring.max_retries. |
| 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. Blank is stored as null. |
| interview_salary | string|null | – | Salary range shown for the position. Blank is stored as null. |
| interview_template_id | string|null | – | Id of the interview template (avatar/voice) to use. Must reference an existing interview_templates row. Also decides the modality — see list_avatars / merchant-avatar-list. |
| interview_tone | string|null | – | Tone — configures the AI avatar's speaking style and the follow-up questions it generates. Stored in creation_parameters; existing questions are NOT regenerated. Case-insensitive; omit to default to… |
| interview_type | string|null | – | Interview style — configures the AI avatar and the follow-up questions it generates during the interview. Stored in creation_parameters; existing questions are NOT regenerated. Options — `pre-screeni… |
| knowledge_base_store_id | string|null | – | Knowledge base store id the interview draws context from; validated for existence. null unlinks it. |
| location | string|null | – | Interview location (column `interview_location`). Blank is stored as null. |
| max_duration | number|null | – | Live session limit in seconds. Also 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). |
| name | string|null | – | 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. |
| position_id | string|null | yes | Id of the interview definition (single-stage) or position definition (multi-stage) to update. The same id you pass to job-interview-get. |
| questions | array|null | – | OPTIONAL. Omit this field entirely and the interview's questions are left exactly as they are — this endpoint only touches questions when you send the array. When you do send it, send the COMPLETE li… |
| questions_random_subset | number|null | – | Ask only a random subset of the questions, as a fraction between 0.01 and 0.9. 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. null clears it. |
| regenerate_candidate_expectations | boolean|null | – | Re-derive the interview-level `candidate_expectations_json` scoring rubric from the resulting question list, the way job-interview-create-from-array derives it at creation time. Only applies when `qu… |
| required_pronunciation | boolean|null | – | Require pronunciation assessment (restricts to pronunciation-capable languages). |
| result_enable_edit_transcript | boolean|null | – | Allow editing the transcript on the result view. |
| 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 | – | New lifecycle status. Applied through the same interview_set_status routine as job-interview-set-state (which is also where you manage the iframe embed key). |
| 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… |
| type | string|null | – | Product type of the interview. Changing it also re-derives `type_credit` (null for interview/assessment, otherwise interview_coach_manager) unless you send `type_credit` explicitly. Single-stage inte… |
| type_credit | string|null | – | Credit bucket the session draws from. Only meaningful for candidate-paid coaching/persona sessions; hiring interviews and assessments are merchant-billed and carry null. Options — `resume_check`: Res… |
| visibility | string|null | – | 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| is_multistage | boolean|null | yes | True when the id resolved to a multi-stage position (position_def_set) rather than a single interview. |
| position_id | string|null | yes | The id that was updated. |
| questions_diff | object | – | What the question diff decided, question by question. Absent when `questions` was not sent. |
| updated_fields | array|null | yes | Names of the stored columns that were written, plus `status` when the lifecycle status was changed and `questions` when the question list was diffed. |
No examples provided.
update_portal_configuration Update portal configuration ~967
[Admin] Import portal configuration documents, the same ones get_portal_configuration returns: branding, interview portal, coaching portal, and portal sites (pages, menu, footer, theme CSS). Read first, edit only the fields the user asked about, then send the documents with `dry_run: true` and show the user the returned summary, warnings and changes; repeat without `dry_run` to apply. Fields a document omits keep their value, and languages are only ever added. Validation is all-or-nothing: a 422 lists every error and nothing is written. Pages land as drafts the company reviews in the admin; set `publish: true` only when the user asked to publish the pages or theme, because it puts them live at once. 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. Imports portal configuration documents in one call: **branding** (portal name, style, colours, logos, e-mail sender name, speech term boosting), the **interview portal** (languages, home texts, support / application-tracking / interview-completed texts), the **coaching portal** (vertical, feature toggles, labels, coaching plan, catalogue start directory, languages, home blocks) and **portal sites** (pages in every language with their blocks, menu, footer and the theme CSS). 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. Read the current configuration with portal-configuration-get first: it returns these same documents, so you can edit them and send them back. Fields a document omits keep their value. Run with…
| 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… |
| documents | array|null | yes | 1 to 20 documents, applied in order (a later document wins where two set the same thing). Every field a document omits keeps its current value; languages are only ever added, never removed. |
| dry_run | boolean|null | – | Validate and report what would change (summary, warnings, changes) without writing anything. Use it to preview an import before applying it. |
| kind | string|null | – | Optional: lock the call to one document type, as one admin import tab does. Every document must then be that type (`portal-site` accepts both portal-site and portal-page formats), and a document that… |
| merchant_id | string|null | – | Optional merchant to configure. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| portal | string|null | – | Where portal-site pages and theme CSS go: `interview` (candidate-facing interview / careers portal) or `consumer` (coaching portal). Default: the portal-site document's own `portal`, else `interview`… |
| publish | boolean|null | – | Also publish the imported pages and theme CSS (live at once, as the admin's "Publish after import"). Default false: pages land as drafts the company reviews in the admin. Built-in page drafts produce… |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| changes | object | yes | What changed (for a dry run: what would change). |
| documents | array|null | yes | – |
| dry_run | boolean|null | yes | True when nothing was written. |
| merchant_id | string|null | yes | Merchant that was configured. |
No examples provided.
update_report Update custom report ~346
[Reports] Replace a custom report's definition (send the whole definition and the version from get_report). On a report shared with other people the change is saved as a draft that the owner publishes in the admin; a private report updates at once. Replaces the definition of a report you own or may edit. Send the version you read; if someone changed the report since, you get 409 and should get it again. A report shared with others keeps your change as a draft until it is published in the admin, so viewers never see a half-finished report. Format, rules and examples: https://developer.jobmojito.com/api-reference/reports/update-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 | – | yes | – |
| id | string|null | yes | Report id (from list_reports). |
| merchant_id | string|null | – | Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| target | string|null | – | published (default) or draft. A private report always publishes. Through the MCP server a shared report always gets a draft that its owner publishes in the admin. |
| version | integer|null | yes | The version you read (get_report / list_reports). A stale version is refused with 409. |
| 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.
upload_knowledge_base_document Upload knowledge base document ~223
[Knowledge base] Upload and process a knowledge base document (multipart form-data). Uploads a document to a knowledge base store and queues it for processing. Accepts the file either as multipart/form-data (binary `file`) or as application/json (base64 `file`).
| 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… |
| file | string|null | yes | The document file (binary). |
| knowledge_base_store_id | string|null | yes | The knowledge base store to add the document to. |
| merchant_id | string|null | – | Override merchant id (admin / sub-merchant only). |
| name | string|null | – | Document name (with extension). Falls back to the uploaded file name for multipart. |
| Name | Type | Req | Description |
|---|---|---|---|
| _mcp_instructions | object | – | Server-issued metadata for this conversation. |
| knowledge_base_id | string|null | yes | Id of the created knowledge_base record. |
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.