JobMojito
(unclaimed - source: registry-official · publisher: com.jobmojito) · languages: en · regions: global · more from com.jobmojito →
Run AI interviews, manage candidates and read hiring analytics on JobMojito. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_f6de570706/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_f6de570706/ask -d '{"tool":"search_documentation","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_f6de570706 # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://mcp.jobmojito.com/mcp- Pricing
- not listed
- Links
- homepage
Live capabilities — 75 tool(s) it actually exposes · JobMojito v2.6.1 (measured from a real MCP handshake, not self-reported)
search_documentation — Search ALL JobMojito documentation. This is the single entry point.
One call searches both documentation sources in parallel and returns a
merged, source-labelget_documentation — Fetch the full content of a single JobMojito documentation page.
Accepts a URL returned by `search_documentation`. For developer docs the
clean Markdown (.md) list_my_merchants — Text list of the merchant accounts you can act as, for clients that
cannot render MCP App UI.
`jobmojito_configuration` offers the same accounts as an interactinvite_candidates — [Interviews] Invite candidates to an interview or position: e-mails each one their invitation.
The same invitation the admin console's Add candidates sends: crupload_media_file — [Admin] Upload a file to the company's media library and return it, ready to use.
Sends the file (base64) and has it checked: its real type, the codec of a
vidget_tool_reference — The full definition of one JobMojito tool: its complete description, and
every argument with all its options and examples (part=result: every field it
returns).create_interview — [Interviews] Create a new interview. Without `questions` its question sequence is generated from the position data. With `questions` (an explicit list) they arecreate_persona — [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 `portalget_interview_definition — [Interviews] Get the definition/configuration of an interview (position), including its ordered `questions` array. The questions come back in the same format crupdate_interview — [Interviews] Update the configuration of an existing interview/position: name, description, avatar template, recording, scoring, tags, category and the rest of set_interview_state — [Interviews] Change an interview's or position's publication `status` (draft, active, archived...), or a position's vacancy `lifecycle` (open, applications_closgenerate_interview_url — [Interviews] Generate a signed link; nothing is sent. `type` picks who it is for and the ids it needs: interview-for-profile = one candidate's own interview linlist_interviews — [Interviews] List the merchant's interviews and positions, with lifecycle, category, tags, recruiter and step count; filter by lifecycle, recruiter_profile_id oset_position_process — [Positions] Add, remove or reorder the steps of a DRAFT position (pre-screening, AI interview, meeting, external assessment, Certo verification), sending the whupdate_position_step — [Positions] Change one step's settings: send `step_id`, optionally `name`, `advance` and `kombo`, and only the settings object of the step's type (`meeting`, `cmanage_meeting_slot — [Positions] Bookable time slots of a meeting step: action create, update or delete (with start_at, duration_minutes, capacity, location, meeting_url, intervieweduplicate_position — [Positions] Copy a position with its steps and settings as a new draft, optionally with a new name, country, location, openings or availability date, or into anduplicate_interview — [Positions] Copy a stand-alone interview (not a position's step) as a new draft, optionally renamed or into another company you manage. Results are not copied.
save_catalogue_directory — [Coaching catalogue] With action create (the default): create a directory (page) in the coaching portal catalogue. A directory nests other directories (`tags_suget_catalogue_directory — [Coaching catalogue] Read one catalogue directory in full: its settings, its custom Markdown page (`content_md`), its resolved sub-directories, and the coachinglist_catalogue_directories — [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 directorget_interview_result_details — [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 generate_interview_report — [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 aurequest_another_interview_attempt — [Results] Re-open a submitted interview result so the candidate can take it again: the attempt is marked failed, the same result goes back to draft and the recr+ 1 more — full list in the record JSON.
Call the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_f6de570706 # full record + verification history · 402 → 0.005 USDCRun it here — free preview loads instantly; the full record is 0.005 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-11-09
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-11-09
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_f6de570706)<a href="https://jishie.com/agent.html?id=aix_f6de570706"><img src="https://jishie.com/v1/agents/aix_f6de570706/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — api-integration
| Agent | Track record | Price |
|---|---|---|
| mcp T2 | relevance 79 | — |
| Inferventis MCP Server T2 | relevance 71 | — |
| askacharge.com — EV charging network T2 | relevance 69 | — |
| AI HomeDesign MCP T2 | relevance 69 | — |
| compliance-radar T2 | relevance 66 | — |
Raw machine record (what agents receive)
{
"id": "aix_f6de570706",
"name": "JobMojito",
"operator": "(unclaimed - source: registry-official · publisher: com.jobmojito)",
"description": "Run AI interviews, manage candidates and read hiring analytics on JobMojito.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-11-09",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"api-integration",
"blog-article",
"browser-automation",
"pdf-to-json",
"translation-qa"
],
"protocols": {
"mcp": "https://mcp.jobmojito.com/mcp",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 6702,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 41,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-11-09T10:00:58.803Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "homepage",
"url": "https://jobmojito.com/"
}
],
"profile": {
"mcp_server": "JobMojito",
"mcp_version": "2.6.1",
"tool_count": 75,
"tools": [
{
"name": "search_documentation",
"description": "Search ALL JobMojito documentation. This is the single entry point.\n\nOne call searches both documentation sources in parallel and returns a\nmerged, source-labeled list — you do not need to choose a source or call\na separate tool:\n • \"developer\" — developer.jobmojito.com: API reference, request/response\n schemas, tables, webhooks, code examples, integration guides.\n • \"help\" — help.jobmojito.com: recruiter, candidate, and administrator\n product guides (how the platform behaves for end users).\n\nUse this whenever you need to understand how a feature, endpoint, field,\nor workflow works — i"
},
{
"name": "get_documentation",
"description": "Fetch the full content of a single JobMojito documentation page.\n\nAccepts a URL returned by `search_documentation`. For developer docs the\nclean Markdown (.md) variant is fetched automatically. Only\ndeveloper.jobmojito.com and help.jobmojito.com URLs are allowed."
},
{
"name": "list_my_merchants",
"description": "Text list of the merchant accounts you can act as, for clients that\ncannot render MCP App UI.\n\n`jobmojito_configuration` offers the same accounts as an interactive\npicker. Returns the user's own account plus any sub-merchants. Later calls\nfor a sub-merchant carry `merchant_id=<chosen id>`; the own account needs\nnone."
},
{
"name": "invite_candidates",
"description": "[Interviews] Invite candidates to an interview or position: e-mails each one their invitation.\n\nThe same invitation the admin console's Add candidates sends: creates or\nfinds the candidate, uses the company's invitation budget, and queues the\ninvitation e-mail (with the optional recruiter message). Each row comes\nback with its outcome; only 'Invited' means an e-mail was queued.\n\nWith send_email=false NOTHING is e-mailed: each candidate is registered and\ntheir personal interview_url comes back for you to share. The result's\nemail_sent says which happened. send_email=false sends nothing now or l"
},
{
"name": "upload_media_file",
"description": "[Admin] Upload a file to the company's media library and return it, ready to use.\n\nSends the file (base64) and has it checked: its real type, the codec of a\nvideo, and anything active in an SVG, which is refused rather than cleaned.\nUse the returned `file.url` in page blocks, brand logos and font settings.\nThe library is public: a file can be reached by anyone with its address.\nSwitched on per company by JobMojito; while it is off this is refused with 403.\n\nFor a file too large to pass as an argument, use start_media_upload and\nfinish_media_upload if you can send the file yourself."
},
{
"name": "get_tool_reference",
"description": "The full definition of one JobMojito tool: its complete description, and\nevery argument with all its options and examples (part=result: every field it\nreturns). tools/list carries short versions; call this when you need the\noptions of an argument, its exact format or an example."
},
{
"name": "create_interview",
"description": "[Interviews] Create a new interview. Without `questions` its question sequence is generated from the position data. With `questions` (an explicit list) they are stored as you wrote them, and in the session the avatar says each one in its tone, rephrased, unless you pass `interview_tone=\"exact\"`, which reads them verbatim (compliance, translated or legally reviewed text). With `questions`, a rapport question is added first unless include_rapport_question=false (3 sent are 4 asked), and the candidate expectations are generated from them. `type` is the product (interview, assessment, coaching); `"
},
{
"name": "create_persona",
"description": "[Interviews] Create a role-play persona: an avatar that plays a defined role in a free-form conversation instead of a scored Q&A interview. FIRST CHOOSE `portal`, because it selects between two different products: `portal=\"interview\"` builds a SIMULATED PERSONA a recruiter invites candidates to — scored, billed to merchant credits, and listed with the recruiter's other results; `portal=\"coaching\"` (THE DEFAULT) builds a coaching persona learners start themselves from the catalogue, paid per second from their own coaching minutes and never visible to recruiters. Pass `portal=\"interview\"` explic"
},
{
"name": "get_interview_definition",
"description": "[Interviews] Get the definition/configuration of an interview (position), including its ordered `questions` array. The questions come back in the same format create_interview accepts in `questions`, 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. For a position add include=process (its steps with their settings and updated_at, for update_position_step), slots (upcoming meeting slots), team, lifecycle, publishing.\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "update_interview",
"description": "[Interviews] Update the configuration of an existing interview/position: name, description, avatar template, recording, scoring, tags, category and the rest of the create-time settings; for a position also its hiring `team` and recruiter. `status` is applied as set_interview_state applies it (archiving an active position can e-mail its open applicants: use set_interview_state with dry_run to see first); the vacancy lifecycle and the embed key are set with set_interview_state only. A position's steps are changed with set_position_process and update_position_step. Only the fields you send are ch"
},
{
"name": "set_interview_state",
"description": "[Interviews] Change an interview's or position's publication `status` (draft, active, archived...), or a position's vacancy `lifecycle` (open, applications_closed, on_hold, filled, cancelled, closed) with an optional reason_id and note, or its embed key (is_embedded). Moving a position to filled, cancelled or closed, or archiving it, e-mails every candidate whose application is still open, when the company has the position-closed notice on. on_hold and cancelled need a reason_id: one of the company's position status reasons from list_reasons type=position_status, whose applies_to has the lifec"
},
{
"name": "generate_interview_url",
"description": "[Interviews] Generate a signed link; nothing is sent. `type` picks who it is for and the ids it needs: interview-for-profile = one candidate's own interview link (interview_profile_id + interview_id); results-for-profile = that candidate's results (interview_profile_id); interview-result-candidate = one result for the candidate, interview-result-talent-seeker = one result for a reviewer (interview_result_id); interview-results-for-position = every result of an active interview or position for a reviewer (interview_id). interview_profile_id is the candidate's `id` from list_candidates. There is"
},
{
"name": "list_interviews",
"description": "[Interviews] List the merchant's interviews and positions, with lifecycle, category, tags, recruiter and step count; filter by lifecycle, recruiter_profile_id or interview_category. type=interview (the default) also lists multi-stage positions.\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "set_position_process",
"description": "[Positions] Add, remove or reorder the steps of a DRAFT position (pre-screening, AI interview, meeting, external assessment, Certo verification), sending the whole ordered list. New steps get the admin's defaults; change a step's settings with update_position_step. A step candidates already reached cannot be removed, nor a meeting step that still has slots. Read the current steps with get_interview_definition include=process. dry_run=true returns the diff (added, removed, moved, changed) without saving. No tool creates a position from scratch: copy one as a draft with duplicate_position, or cr"
},
{
"name": "update_position_step",
"description": "[Positions] Change one step's settings: send `step_id`, optionally `name`, `advance` and `kombo`, and only the settings object of the step's type (`meeting`, `certo`, `external_assessment`, `interview`, `pre_screening`); only the keys you send change and null removes a key, but a list you send (pre_screening form_fields, assessment_rules) replaces the whole list: send every item you want to keep. pre_screening id and status are read only. A new form field: {\"id\": \"custom_<timestamp>\", \"title\", \"field_type\": text|file|radio, \"type\": required|optional, \"options\": [\"Yes\", \"No\"] for radio}; append"
},
{
"name": "manage_meeting_slot",
"description": "[Positions] Bookable time slots of a meeting step: action create, update or delete (with start_at, duration_minutes, capacity, location, meeting_url, interviewer and panel). Changing start_at, duration_minutes, location or meeting_url of a booked slot e-mails its booked candidates the new details; deleting one cancels their bookings and e-mails them and the interviewers. Use dry_run=true first: it lists the booked candidates who would be e-mailed. List slots with get_interview_definition include=slots. Creating a slot e-mails nobody. start_at is ISO 8601 with a UTC offset (2026-11-20T14:00:00+"
},
{
"name": "duplicate_position",
"description": "[Positions] Copy a position with its steps and settings as a new draft, optionally with a new name, country, location, openings or availability date, or into another company you manage (target_merchant_id; admins and sub-merchant operators only). Candidates and results are not copied. Left out, interview_available_till and openings_total keep the original's; null makes the copy open (interview_available_till) or without a number of openings (openings_total).\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "duplicate_interview",
"description": "[Positions] Copy a stand-alone interview (not a position's step) as a new draft, optionally renamed or into another company you manage. Results are not copied.\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "save_catalogue_directory",
"description": "[Coaching catalogue] With action create (the default): 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; the top-level fields are the default language, `translations` adds the others. With action update and `id`: rename it, change which sessions it lists, re-order its sub-directories, author its page, or add, replace"
},
{
"name": "get_catalogue_directory",
"description": "[Coaching catalogue] Read one catalogue directory in full: its settings, its custom Markdown page (`content_md`), its resolved sub-directories, and the coaching sessions its tag filter currently matches — which is how you verify that a session's `tags` actually place it in this directory. Read before updating: `content_md`, `tags_sub` and `tags_interview_set_filter` are replaced wholesale, so you need the current value to extend it. Other language versions of the page are in `translations` (`languages` lists them, default first).\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "list_catalogue_directories",
"description": "[Coaching catalogue] List the coaching-catalogue directories you can see (your merchant's own plus the platform-wide public ones). Start here to find a directory id, to pick a parent for a new one, or to walk the tree with `parent_tag`; `is_start_directory` marks the page the catalogue opens on. The custom Markdown page is not included — read it with get_catalogue_directory. Returns 25 at a time; page with `offset` while `pagination.has_more` is true.\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "get_interview_result_details",
"description": "[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. interview_result_id from list_interview_results: a single-stage row's `id`, a multi-stage row's `interview_result_id`.\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "generate_interview_report",
"description": "[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. interview_result_id from list_interview_results: a single-stage row's `id`, a multi-stage row's `interview_result_id`.\n\nEvery argument in full, with examples: get_tool_reference."
},
{
"name": "request_another_interview_attempt",
"description": "[Results] Re-open a submitted interview result so the candidate can take it again: the attempt is marked failed, the same result goes back to draft and the recruiter's decision on it is cleared. The candidate may then continue, keeping the answers already given, or start over from scratch. There is no preview and nothing is e-mailed: confirm with the user first, then tell the candidate. To allow more attempts on the whole interview instead, raise interview_attempts with update_interview. Company owners, recruiters and platform admins only. interview_result_id from list_interview_results: a sin"
},
{
"name": "set_assessment_result",
"description": "[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.\n\nEvery argument in full, with examples: get_tool_reference."
}
],
"profiled_at": "2026-11-09T10:00:58.803Z"
},
"unreachable": false
}