Comprehensive Model Context Protocol server for managing Home Assistant through AI assistants.
JobMojito is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Run AI interviews, simulated personas and coaching sessions on JobMojito.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http jobmojito-mcp https://mcp.jobmojito.com/mcp
# 2 — ask your agent for something these tools do
# search_documentation, get_documentation, list_my_merchants and 35 more
JobMojito costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http jobmojito-mcp https://mcp.jobmojito.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
38 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
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.c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Natural-language search query or keywords. |
| source | string | no | "all" (default), "developer", or "help" to restrict the search. |
| limit | integer | no | Max results per source (1-25). |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | The documentation page URL. |
| max_chars | integer | no | Truncate content to this many characters (default 20000). |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
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=<c
| Parameter | Type | Required | Notes |
|---|---|---|---|
| search | string | no | Optional case-insensitive filter on sub-merchant name. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 pro
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string/null | yes | Interview / position name. |
| 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. |
| interview_template_id | string/null | yes | Id of the interview template to base this interview on. |
| mojito_language_code | string/null | yes | Platform language code used for the interview. Must be one of the platform-languages.json codes. |
| 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 an |
| 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 — can |
| 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: Invit |
| recording | string/null | no | Cheating/proctoring detection mode for candidate answers — this is NOT a full session recording. Video options also record the candidate. Omit/null to disable. Options — audio_first_5_answers: Audio |
| recording_full_session | string/null | no | 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 (ava |
| environment | string/null | no | 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_type | string/null | no | 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-scr |
| seniority_level | string/null | no | Target seniority level for the role; auto-detected from the job description when omitted. Options — entry-level: Early-career or graduate roles. | intermediate: Some experience required. | `senior |
| result_view | string/null | no | 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 transcri |
| interview_conversation_speed | string/null | no | 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 speakin |
| candidate_video_introduction | string/null | no | Whether a candidate video introduction is optional or required. |
| interview_tone | string/null | no | 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 co |
| interview_length | no | Number of questions to generate (1-40). Also capped by max_duration, which allows one question per 2 minutes: 20 min -> 10 questions, 30 min -> 15, 45 min -> 22, 60 min -> 30, 80 min -> 40. Asking for | |
| interview_attempts | number/null | no | Allowed candidate attempts (1-20). |
| max_duration | number/null | no | 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 | no | 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). |
[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 generat
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string/null | yes | Interview/position name. |
| 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. |
| interview_template_id | string/null | yes | Id of the interview template to use. Must reference an existing interview_templates row. |
| 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. |
| description | string/null | yes | Short interview description. |
| 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 an |
| 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 — can |
| 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: Invit |
| questions | array/null | yes | Ordered list of interview questions to create as steps. |
| recording | string/null | no | Cheating/proctoring detection mode for candidate answers — this is NOT a full session recording. Video options also record the candidate. Omit/null to disable. Options — audio_first_5_answers: Audio |
| recording_full_session | string/null | no | 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 (ava |
| environment | string/null | no | 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_type | string/null | no | 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 — |
| seniority_level | string/null | no | Target seniority level for the role; auto-detected from the job description when omitted. Options — entry-level: Early-career or graduate roles. | intermediate: Some experience required. | `senior |
| result_view | string/null | no | 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 transcri |
| interview_conversation_speed | string/null | no | 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 speakin |
| candidate_video_introduction | string/null | no | Whether a candidate video introduction is optional or required. |
| interview_tone | string/null | no | 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 — `re |
| interview_attempts | number/null | no | Allowed attempts, 1-20. |
| questions_random_subset | number/null | no | Fraction of questions to randomly ask, between 0.01 and 0.9. |
[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"
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string/null | yes | Persona / session name. |
| interview_template_id | string/null | yes | Id of the interview template (avatar) the persona uses. |
| mojito_language_code | string/null | yes | Platform language code used for the conversation. Must be one of the platform-languages.json codes. |
| 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 an |
| 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: Invit |
| description | string/null | no | Short persona description shown to the candidate on the pre-session poster. Candidate-visible — keep it to max 2 sentences. Unlike job-interview-create, personas run no AI generation, so this is never |
| 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 a |
| 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 sa |
| persona_avatar_who_is | string/null | no | 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 descr |
| persona_avatar_knowledge | string/null | no | 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_end_conditions | string/null | no | 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 wh |
| persona_avatar_progress | string/null | no | 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 (In |
| opening_line | string/null | no | 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 th |
| candidate_expectations | string/null | no | Mentee assessment goals — free-text describing what the candidate is expected to achieve (max 2100 chars). |
| recording | string/null | no | Cheating/proctoring detection mode for candidate answers — this is NOT a full session recording. Video options also record the candidate. Omit/null to disable. Options — audio_first_5_answers: Audio |
| recording_full_session | string/null | no | 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 (ava |
| environment | string/null | no | 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 |
| result_view | string/null | no | 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 transcri |
| interview_conversation_speed | string/null | no | 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 speakin |
| candidate_video_introduction | string/null | no | Whether a candidate video introduction is optional or required. |
[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 f
| Parameter | Type | Required | Notes |
|---|---|---|---|
| position_id | string | yes | Identifier of either an interview definition (single-stage) or a position definition (multi-stage). The function resolves whichever matches. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 exist
| Parameter | Type | Required | Notes |
|---|---|---|---|
| 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. |
| status | string/null | no | 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). |
| visibility | string/null | no | 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: Invit |
| environment | string/null | no | 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 |
| name | string/null | no | Interview / position name. |
| code | string/null | no | External code/reference. Blank is stored as null. |
| location | string/null | no | Interview location (column interview_location). Blank is stored as null. |
| cover_image_url | string/null | no | Cover image URL. |
| description | string/null | no | Short interview description. |
| description_long | string/null | no | 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 gu |
| interview_department | string/null | no | Department the position belongs to. Blank is stored as null. |
| interview_salary | string/null | no | Salary range shown for the position. Blank is stored as null. |
| interview_available_till | string/null | no | ISO date/time after which the interview is no longer available to candidates. null keeps it always available. |
| recruiter_profile_id | string/null | no | Profile id of the recruiter owning this interview. Must be a merchant/merchant_owner/admin profile of the same merchant. null clears it. |
| candidate_notification_channel | string/null | no | 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" = inv |
| country_availability | object/null | no | 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_al |
| tags | array/null | no | 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 pers |
| questions | array/null | no | 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 lis |
| regenerate_candidate_expectations | boolean/null | no | 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 `que |
| type | string/null | no | 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 inter |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| position_id | string/null | yes | Interview definition id or position id whose state should change. |
| status | string/null | no | New lifecycle status to apply. |
| is_embedded | boolean/null | no | 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, rem |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string/null | yes | Which kind of signed URL to generate. |
| merchant_id | string/null | no | Override merchant id (admin / sub-merchant only). |
| interview_profile_id | string/null | no | Candidate profile id. Required for interview-for-profile and results-for-profile. |
| interview_id | string/null | no | Interview or position id. Required for interview-for-profile and interview-results-for-position. |
| interview_result_id | string/null | no | Interview result id. Required for interview-result-candidate and interview-result-talent-seeker. |
| hide_menu | no | Pass the string 'false' to show the navigation menu; any other value hides it (default). | |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[Interviews] Register users/candidates for a specific interview and return their personal interview links. Registers (or updates) one or more candidate profiles for an interview and returns a one-time interview URL for each. Accepts a Supabase user JWT (merchant/admin) or the service key (merchant_id then required).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| users | array/null | yes | Candidates to register for the interview. Each gets a one-time interview URL. |
| interview_id | string/null | yes | Interview definition (interview_def_set) or position (position_def_set) id to register users for. |
| merchant_id | string/null | no | Merchant id. Required when authenticating with the service key; for user tokens it is optional and only honored for admin / sub-merchant accounts. |
| send_email | boolean/null | no | Whether to send an invitation email to each registered candidate. |
| hide_menu | no | When true (or the string "true"), the interview UI hides its menu (view_hm). | |
| hide_iframe | no | When true (or the string "true"), the interview UI hides its iframe chrome (view_hi). | |
| is_test | no | 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_reca | |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| type | string | no | Product type of interviews to list. |
| status | string | no | Filter by lifecycle status. Omit to include all statuses. |
| show_public | string | no | Include interviews shared publicly across merchants (coaching/avatars). |
| show_demo | string | no | Include demo/sample interviews. |
| filter_text | string | no | Case-insensitive search on the interview name. |
| filter_emoji | string | no | Filter by the interview emoji marker. |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 t
| Parameter | Type | Required | Notes |
|---|---|---|---|
| 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 |
| name | string/null | yes | Display name of the directory, shown as the page title and on its card. |
| description | string/null | no | Short description shown on the directory card. |
| mojito_language_code | string/null | no | Language of the directory (one of the platform-languages.json codes). The catalogue groups directories by language; defaults to en when omitted. |
| visibility | string/null | no | 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 me |
| status | string/null | no | 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: Ret |
| cover_image_url | string/null | no | Cover image URL shown on the directory card. |
| coach_plan | string/null | no | 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. | |
| tags_sub | array/null | no | 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 |
| tags_interview_set_filter | array/null | no | 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 visibi |
| content_md | string/null | no | 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 sessio |
| translations | object/null | no | 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, sess |
| parent_tag | string/null | no | 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 ano |
| merchant_id | string/null | no | Merchant that owns the directory. Admin / sub-merchant callers only; otherwise taken from your token. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 direc
| Parameter | Type | Required | Notes |
|---|---|---|---|
| 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. |
| name | string/null | no | Display name of the directory. |
| description | string/null | no | Short description shown on the directory card. |
| mojito_language_code | string/null | no | Language of the directory (one of the platform-languages.json codes). The catalogue groups directories by language. |
| visibility | string/null | no | 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 me |
| status | string/null | no | 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: Ret |
| cover_image_url | string/null | no | Cover image URL shown on the directory card. null clears it. |
| coach_plan | string/null | no | 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. | |
| tags_sub | array/null | no | 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 |
| tags_interview_set_filter | array/null | no | 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 visibi |
| content_md | string/null | no | 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-pro |
| translations | object/null | no | The directory's OTHER language versions, keyed by mojito language code. The top-level fields are the default language (mojito_language_code); each version here is a page of its own with its own name |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| 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 | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| mojito_language_code | string | no | 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. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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;
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| status | string | no | Filter by lifecycle status. Omit to include every status you can see (deleted directories are never returned). |
| visibility | string | no | Filter by visibility. |
| mojito_language_code | string | no | Filter by language: directories whose default language or one of whose language versions is this one. Omit for all languages. |
| filter_text | string | no | Case-insensitive search on the directory id, name and description. |
| parent_tag | string | no | 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. |
| include_public | string | no | Include the platform-wide public directories shared across merchants. |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| interview_result_id | string | yes | The interview result to fetch the transcript and details for. |
| get_signed_recordings | string | no | When true, includes short-lived signed recording URLs for the session, the video introduction, and each transcript answer. |
| view | string | no | 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 wit |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 rep
| Parameter | Type | Required | Notes |
|---|---|---|---|
| interview_result_id | string/null | no | — |
| interview_result_ids | array/null | no | Generate a single combined report for multiple results. |
| export_type | string/null | yes | — |
| export_features_result | object | no | — |
| template | no | — | |
| store_file | boolean/null | no | When true (pdf only), persist the file to storage and return a signed URL. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| interview_result_id | string/null | yes | The interview result to reopen for another attempt. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| type | string | no | Product type of results to list. |
| tab | string | no | Filter by decision/completion state. Omit (or empty) to include all. |
| step | string | no | Filter by pipeline step type (pre-screening, interview or meeting). Omit for all. |
| interview_id | string | no | Filter to a single interview definition id. |
| profile_interview_id | string | no | Filter to a single candidate (profile_interview) id. |
| risks | string | no | Comma-separated list of recruiter-risk keys to filter by (matches any). |
| order_by | string | no | Sort order of the result set. |
| filter_text | string | no | Case-insensitive search on candidate name or email. |
| filter_emoji | string | no | Filter by the candidate emoji marker. |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| 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 | no | 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 intervi |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 100
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| interview_id | string | no | Optional interview (interview_def_set) or position (position_def_set) id to drill the credit-usage ledger down to a single interview or position. The type is detected automatically: for a position the |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| scope | string | no | all (default), mine, shared (by colleagues) or templates. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| id | string | yes | Report id (from list_reports). |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| id | string | yes | Report id (from list_reports). |
| filters | string | no | Optional JSON ReportFilters to apply on top, e.g. {"period":{"preset":"last_month"}}. |
| block_id | string | no | Run only this block. |
| draft | string | no | Run the unpublished draft instead (only if you can edit the report). |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string/null | no | Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| 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. |
| filters | no | — | |
| block_id | string/null | no | Run only this block. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 definiti
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string/null | no | Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| 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. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string/null | no | Optional merchant to act on. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| id | string/null | yes | Report id (from list_reports). |
| version | integer/null | yes | The version you read (get_report / list_reports). A stale version is refused with 409. |
| definition | yes | — | |
| target | string/null | no | 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. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| tab | string | no | Filter candidates by recent activity. Omit (or empty) to include all. |
| source | string | no | Filter by how the candidate entered: invited or self-registered. Omit for both. |
| order_by | string | no | Sort order of the result set. |
| filter_text | string | no | 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. |
| filter_emoji | string | no | Filter by the candidate emoji marker. |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| knowledge_base_store_id | string/null | yes | The knowledge base store to add the document to. |
| name | string/null | no | Document name (with extension). Falls back to the uploaded file name for multipart. |
| merchant_id | string/null | no | Override merchant id (admin / sub-merchant only). |
| file | string/null | yes | The document file (binary). |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| order_by | string | no | Sort order of the result set. |
| filter_text | string | no | Case-insensitive search on the sub-merchant name. |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| type | string | no | Filter by avatar template type. Omit for all. |
| status | string | no | Filter by status. Omit for all except archived (see include_archived). |
| mojito_language_code | string | no | Filter by platform language code. Omit for all languages. |
| filter_text | string | no | Case-insensitive search on template name or voice language name. |
| include_archived | string | no | Include archived templates (excluded by default). |
| include_public | string | no | Also include public templates shared across merchants, in addition to this merchant's own. |
| limit | integer | no | Maximum number of records to return (1–1000). |
| offset | integer | no | Number of records to skip from the start of the result set. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 (
| Parameter | Type | Required | Notes |
|---|---|---|---|
| merchant_id | string | no | Optional merchant to scope to. Admins and sub-merchant operators only; other callers always use their token's merchant. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 th
| Parameter | Type | Required | Notes |
|---|---|---|---|
| title | string/null | yes | A short summary of the feature, shown as the post title. |
| 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 nam |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
[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 JobM
| Parameter | Type | Required | Notes |
|---|---|---|---|
| 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 | no | The interview (definition) the problem is about, if any. |
| result_id | string/null | no | The interview result the problem is about, if any. |
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
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 pas
| Parameter | Type | Required | Notes |
|---|---|---|---|
| conversation_id | string | no | Pass the exact conversation_id from the server's previous response, unchanged. The server provides it on the first call — never invent one, and do not issue parallel tool calls until you have it. Keep |
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install JobMojito or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| search_documentation | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_documentation | untrusted-input | untrusted-input: keyword "fetch", declares openWorldHint: true (interacts with entities outside the server) |
| list_my_merchants | no tags | |
| create_interview | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| create_interview_from_questions | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| create_persona | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| get_interview_definition | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| update_interview | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| set_interview_state | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| generate_interview_url | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| register_users_for_interview | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| list_interviews | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| create_catalogue_directory | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| update_catalogue_directory | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| get_catalogue_directory | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_catalogue_directories | untrusted-input | untrusted-input: keyword "fetch", declares openWorldHint: true (interacts with entities outside the server) |
| get_interview_result_details | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| generate_interview_report | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| request_another_interview_attempt | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| list_interview_results | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_merchant_analytics | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_merchant_credit_usage | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_report_fields | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_reports | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_report | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| run_report | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| preview_report | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| create_report | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| update_report | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| list_candidates | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| upload_knowledge_base_document | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| list_sub_merchants | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_avatars | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_merchant_status | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| list_languages | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| submit_feature_request | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| report_technical_issue | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| jobmojito_configuration | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 1.3.2.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish JobMojito can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.