Skip to main content

Overview

The Mokaru MCP server exposes 70 tools. Each one wraps a single REST API endpoint, so behaviour, rate limits, and error responses match the REST API exactly.
Tool descriptions in this reference match what the AI agent sees via tools/list. AI agents pick which tool to call based on these descriptions - they’re written for LLM consumption.

Jobs

mokaru_search_jobs

Search the Mokaru job database (refreshed daily). Returns listings with title, company, location, salary, and apply URL. Use cursor pagination to fetch more pages. Underlying endpoint: POST /v1/jobs/search.

Applications

mokaru_list_applications

List the user’s job applications. Returns id, title, company, status, and dates.

mokaru_get_application

Get full details for one application, including timeline events, interviews, and notes. After mokaru_tailor_resume, poll this tool and watch processingStatus (pending / processing / completed / failed) to know when the tailored resume is ready; processingError holds the reason on failure.

mokaru_tailor_resume

The auto-prep feature. The tool to use whenever the user wants a resume made or tailored for a specific job. Duplicates the user’s default (base) resume and AI-tailors the copy to the job (keyword optimization, rephrased experience bullets, focused summary). Do not hand-build a resume with mokaru_create_resume for this - that bypasses the real tailoring engine. Because a tailored resume is owned by a tracker application, this also adds the job to the tracker. Runs asynchronously (~30s). The response returns immediately with the new cvId and processingStatus: "pending". Poll mokaru_get_application with the returned id until processingStatus is completed, then fetch/export the resume by its cvId. Requirements: Plus plan (else PLAN_REQUIRED), a default resume (else NO_DEFAULT_RESUME), and a job description >= 500 chars (else JOB_DESCRIPTION_TOO_SHORT). Costs 1 AI credit (unlimited on Plus).

mokaru_create_application

Save a job to Mokaru’s tracker. Pass autoPrepare: true to also AI-tailor a resume in the same step (same engine as mokaru_tailor_resume). If the user’s intent is primarily to get a tailored resume rather than to track the application, prefer mokaru_tailor_resume.

mokaru_update_application

Update an application: change status, edit notes, adjust priority. Status change creates a timeline entry.

mokaru_delete_application

Soft-delete an application (recoverable via support). Confirm with the user before calling.

Resumes

mokaru_list_resumes

List the user’s resumes (id, name, template, default flag, timestamps).

mokaru_get_resume

Get full resume content for one resume - cvData, designSettings, sectionOrder, and metadata.

mokaru_create_resume

Create a new resume. Only name is required. The new resume starts as a copy of the user’s base (default) resume content - experiences, education, skills, certificates, projects, awards, publications and interests - as an independent snapshot; editing the base afterwards doesn’t change this resume. To hide some of those on this CV pass hiddenItems; to customise personal info per-CV pass personalOverrides; to reorder items within a section pass itemOrder.

mokaru_update_resume

Update a resume. Only provided fields are modified. To toggle which of this resume’s items show on the CV, set hiddenItems (replaces the existing value; pass null to clear). Same null-to-clear semantics for personalOverrides, itemOrder, selectedSummaryId, and jobTitle.

mokaru_duplicate_resume

Duplicate an existing resume. Copies every CV-level setting (template, design, hidden items, personal overrides, item order, etc.) into a new resume. The duplicate is never the default. The duplicate gets its own independent copy of the source’s content (experiences, skills, etc.) - editing one doesn’t affect the other.

mokaru_delete_resume

Delete a resume permanently. If the default is deleted, another resume is auto-promoted to default. Unlinks from any linked applications. Cannot be undone - confirm with the user.

mokaru_export_resume_pdf

Returns a deep-link that opens the resume in the Mokaru web app with the Export section already active. The user clicks the link, signs in to Mokaru if needed (usually already signed in via the same browser as Claude.ai), and downloads through the standard Export PDF button. The URL pattern is {appBaseUrl}/{locale}/resumes/builder?cvId={id}&tab=export - for example https://app.mokaru.ai/en/resumes/builder?cvId=clx...&tab=export.
Why a link instead of an inline file? The MCP web client (claude.ai) currently cannot reliably render binary content blocks (PDFs in particular) as downloads - it rejects them as un-renderable images. Returning a link works in every MCP client (Claude.ai web, Claude Desktop, Cursor, Gemini CLI, custom agents). Direct inline PDF download via MCP is on the roadmap and will ship once client support stabilises.

Profile

mokaru_get_profile

Get the user’s career profile in one call. Returns scalar fields (name, contact, summary, sector, links) PLUS the base (default) resume’s content collections (the canonical content that new resumes are copied from):
  • skills, workExperiences, educations
  • summaries (professional summary versions)
  • projects
  • certificates
  • awards
  • publications
  • interests
  • jobTitles (career-identity titles)
  • customSections (with their items inline)
One call returns the entire profile - no need to fetch each section separately.
mokaru_get_profile returns content without item IDs. To get the IDs needed for mokaru_update_* / mokaru_delete_* or for a resume’s hiddenItems / itemOrder, use the per-section list_* tools - they are the canonical ID source.

mokaru_update_profile

Update profile scalars (name, contact, summary, etc.) and several of the base (default) resume’s content collections in bulk. For granular edits prefer the per-section CRUD tools described below (mokaru_create/update/delete_experience, _education, _skill, etc.) - they target one row at a time and never clobber other items. This tool still supports replace-list writes for summaries, projects, certificates, awards, publications, interests, jobTitles: passing an array REPLACES the entire collection. The pattern to add one item is fetch → append → send the full array back. workExperiences, educations and skills cannot be written here - use the dedicated per-item tools.

Profile sections (per-item CRUD)

Each profile section exposes a 4-tool shape: list_*, create_*, update_*, delete_*. These are the preferred way to mutate individual items; they avoid the replace-list footgun of mokaru_update_profile. (There is no per-item get_* - list_* already returns every item with its full fields and ID, so a single-item fetch would add nothing.)
Targeting a specific resume (cvId). Every per-section tool (and the custom-section item tools) accepts an optional cvId. Omit it and the tool reads/writes your base (default) resume’s content. Pass a resume id (from mokaru_list_resumes) to target that specific resume instead - e.g. rewrite a bullet on a tailored CV. Call list_* with the same cvId first to get that resume’s item IDs, then update_* / delete_* with the matching cvId. The resume must belong to you and be self-contained (a non-self-contained/legacy resume returns 400; an unknown or unowned id returns 404).
The tool inputs mirror the underlying v1 REST endpoint schema (see API Reference per section for the exact field list). The behaviour is identical: only provided fields change, pass null on a nullable field in update to clear it. Common idioms:
  • Add a single item without touching the rest: mokaru_create_<section>. No need to fetch the existing list first.
  • Edit one field on an existing item: mokaru_update_<section> with { id, <field>: <newValue> }. Other fields stay untouched.
  • Hide one of a resume’s items on that CV (without deleting it): use mokaru_update_resume with hiddenItems, not the delete tool.
  • Select which summary appears on a CV: mokaru_create_summary to add the variant, then mokaru_update_resume with selectedSummaryId set to that summary’s id.

mokaru_create_resume_share

Create a public share link for a resume. Snapshots the resume’s current cvData, design settings, section order and optional fields into a EmpResumeShare row so the shared page renders the state at share-creation time, independent of later edits. If a share already exists for this resume, the existing link is returned (upsert). Returns { success, shareId, shareUrl, createdAt, reused }. The public URL pattern is https://app.mokaru.ai/share/{shareId}.

mokaru_list_resume_shares

List the share links for a resume. Returns each share with its public URL.

mokaru_delete_resume_share

Revoke a public share link. The public viewer at /share/{shareId} 404s immediately after.

Cover letters

Plus plan only for create and update. Returns 403 with { requiresUpgrade: true } if the user is on the free plan. list, get and delete are available on any plan so users can still see and clean up their existing cover letters after downgrading.
A cover letter is always linked one-to-one to a resume (cvId is required and unique). To “add a cover letter to a resume” first check whether one exists via mokaru_list_cover_letters with cvId; if it does, call mokaru_update_cover_letter; if not, call mokaru_create_cover_letter. Create returns 409 if a cover letter already exists for that resume. If the user has no resume yet, you can’t create a cover letter at all - first call mokaru_list_resumes; if empty call mokaru_create_resume to make one, then use its id as cvId.

mokaru_list_cover_letters

List the user’s cover letters.

mokaru_get_cover_letter

Get the full content of one cover letter (title, body, variables, styling).

mokaru_create_cover_letter

Create a cover letter for a resume.

mokaru_update_cover_letter

Update a cover letter. Only provided fields are modified. Pass null on nullable fields to clear.

mokaru_delete_cover_letter

Permanently delete a cover letter. The parent resume is unaffected.

Contacts

mokaru_list_contacts

List professional contacts (recruiters, hiring managers, colleagues, etc.).

mokaru_create_contact

Create a new contact.

mokaru_update_contact

Update a contact. Only provided fields are modified. Pass null to clear a field.

mokaru_delete_contact

Permanently delete a contact. Cannot be undone - confirm with the user.

Error handling

Every tool returns errors as MCP error content blocks (isError: true with a text explanation). Errors map from the underlying REST API: Unexpected internal tool errors are returned as a generic failure message while detailed diagnostics stay in server logs.