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,educationssummaries(professional summary versions)projectscertificatesawardspublicationsinterestsjobTitles(career-identity titles)customSections(with their items inline)
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).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_resumewithhiddenItems, not the delete tool. - Select which summary appears on a CV:
mokaru_create_summaryto add the variant, thenmokaru_update_resumewithselectedSummaryIdset to that summary’s id.
Resume sharing (public links)
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.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.
