Skip to main content

Overview

The Mokaru MCP server exposes 19 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.
ParameterTypeRequiredDescription
querystringyesJob search keywords
locationstringnoCity, state, or country
workArrangement”remote” | “hybrid” | “onsite”noFilter by work arrangement
employmentType”FULLTIME” | “PARTTIME” | “CONTRACTOR” | “INTERN”noFilter by employment type
datePosted”day” | “3days” | “week” | “month”noHow recent the posting should be
excludeCompaniesstring[]noCompany names to exclude
excludeKeywordsstring[]noKeywords to exclude from title/description
cursorstringnoPagination cursor from previous page’s postedAt
Underlying endpoint: POST /v1/jobs/search.

Applications

mokaru_list_applications

List the user’s job applications. Returns id, title, company, status, and dates.
ParameterTypeDescription
statusenumFilter by status (watchlist, applied, interview_scheduled, etc.)
limitnumber (1-100)Results per page (default 25)
offsetnumberPagination offset

mokaru_get_application

Get full details for one application, including timeline events, interviews, and notes.
ParameterTypeRequiredDescription
idstringyesApplication id from mokaru_list_applications

mokaru_create_application

Killer flow. Save a job to Mokaru’s tracker. When the user wants to APPLY and a job description is available, set autoPrepare: true - Mokaru’s AI tailors a resume specifically for the job.
ParameterTypeRequiredDescription
jobTitlestringyesJob title (max 200)
companystringyesCompany name (max 200)
locationstringnoJob location (max 200)
jobUrlstringnoURL to the job posting
jobDescriptionstringconditionalFull description (>= 500 chars required for autoPrepare)
jobListingIdstringnoID from mokaru_search_jobs (links salary data)
sourceenumnoLinkedIn, CompanyWebsite, JobWebsite, Referral, Agency, Other
autoPreparebooleannoWhen true, duplicates default resume and queues AI tailoring (~30s)

mokaru_update_application

Update an application: change status, edit notes, adjust priority. Status change creates a timeline entry.
ParameterTypeDescription
idstringApplication id
statusenumNew status
prioritynumber (1-5)Priority level
notesstringFree-text notes
jobTitle, company, locationstringEdit metadata

mokaru_delete_application

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

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.
ParameterTypeRequiredDescription
namestringyesResume name shown in the dashboard
jobTitlestring | nullnoCV-level job title shown in the header. Overrides the profile job title for this CV
templatestringnoTemplate slug (e.g. “classic”, “modern”)
isDefaultbooleannoMark as the default resume
cvDataobjectnoCV-level overrides for personal info / summary. Section arrays (experiences, education, skills, etc.) are silently dropped - use hiddenItems for visibility and the per-section MCP tools for data
hiddenItemsobjectnoMap of section -> array of the resume’s item IDs (from the per-section list tools / mokaru_get_profile) to hide on this CV. Keys: experiences, education, skills, certificates, projects, awards, publications, interests, or customSection:<definitionId>
personalOverridesobjectnoPer-CV personal-info overrides (firstName, lastName, email, phone, address, jobTitle, seniority, summary, website, linkedin, portfolio, birthDate, driverLicense, profilePhoto). Each key overrides the profile value for this CV only; null clears that key
itemOrderobjectnoPer-section ordering. Keys are section names (experiences, education, skills, …, skillCategories); values are arrays of the resume’s item IDs in the desired order. Items not listed fall back to the resume’s default order
selectedSummaryIdstring | nullnoID of the summary to render on this CV (from mokaru_list_summaries). Null = no summary
designSettingsobjectnoVisual styling (colors, fonts, spacing, margins)
optionalFieldsobjectnoShow/hide toggles for optional personal fields (phone, address, birthDate, photo, etc.)
sectionOrderarraynoOrder of CV sections (e.g. ["summary", "experiences", "education", "skills"])

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.
ParameterTypeRequiredDescription
idstringyesResume id
namestringnoNew name
jobTitlestring | nullnoCV-level job title (or null to clear)
templatestringnoTemplate slug
isDefaultbooleannoMark/unmark as default
cvDataobjectnoCV-level overrides (section arrays ignored, see create)
designSettingsobjectnoVisual styling
optionalFieldsobjectnoShow/hide toggles for optional personal fields
sectionOrderarraynoOrder of CV sections
hiddenItemsobject | nullnoPer-section blacklist (see create). Pass null to clear
personalOverridesobject | nullnoPer-CV personal-info overrides (see create). Pass null to clear all
itemOrderobject | nullnoPer-section ordering (see create). Pass null to clear
selectedSummaryIdstring | nullnoSummary id to use, or null

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.
ParameterTypeRequiredDescription
idstringyesSource resume id
namestringnoName for the new copy (default <source name> - copy)

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.
ParameterTypeRequiredDescription
idstringyesResume id

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.
ParameterTypeRequiredDescription
idstringyesResume id to open in the export view
locale”en” | “nl”noLocale segment used in the URL (default: en)

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_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.
ParameterTypeDescription
firstName, lastName, email, phone, address, country, province, jobTitle, summary, sector, linkedIn, website, portfoliostringScalar fields (pass null to clear)
summariesarray (max 100)Replace-list of summaries
projectsarray (max 100)Replace-list of projects
certificatesarray (max 100)Replace-list of certificates
awardsarray (max 100)Replace-list of awards
publicationsarray (max 100)Replace-list of publications
interestsarray (max 100)Replace-list of interests
jobTitlesarray (max 50)Legacy - job titles now live per-resume on EmpCV.jobTitle (set via mokaru_create_resume / mokaru_update_resume). Kept for backwards compatibility

Profile sections (per-item CRUD)

Each profile section exposes the standard 5-tool shape: list_*, get_*, create_*, update_*, delete_*. These are the preferred way to mutate individual items; they avoid the replace-list footgun of mokaru_update_profile. 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.
SectionToolsv1 endpoint
Work experiencesmokaru_list_experiences, _get_experience, _create_experience, _update_experience, _delete_experience/v1/experiences
Educationmokaru_list_education, _get_education, _create_education, _update_education, _delete_education/v1/education
Skillsmokaru_list_skills, _get_skill, _create_skill, _update_skill, _delete_skill/v1/skills
Certificatesmokaru_list_certificates, _get_certificate, _create_certificate, _update_certificate, _delete_certificate/v1/certificates
Projectsmokaru_list_projects, _get_project, _create_project, _update_project, _delete_project/v1/projects
Awardsmokaru_list_awards, _get_award, _create_award, _update_award, _delete_award/v1/awards
Publicationsmokaru_list_publications, _get_publication, _create_publication, _update_publication, _delete_publication/v1/publications
Interestsmokaru_list_interests, _get_interest, _create_interest, _update_interest, _delete_interest/v1/interests
Summariesmokaru_list_summaries, _get_summary, _create_summary, _update_summary, _delete_summary/v1/summaries
Custom sections (definition)mokaru_list_custom_sections, _get_custom_section, _create_custom_section, _update_custom_section, _delete_custom_section/v1/custom-sections
Custom section itemsmokaru_create_custom_section_item, _update_custom_section_item, _delete_custom_section_item/v1/custom-sections/{id}/items, /v1/custom-section-items/{id}
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).
ParameterTypeRequiredDescription
resumeIdstringyesResume to share
blurOptionsobjectnoPrivacy toggles: blurLinkedIn, blurWebsite, blurPortfolio, blurCompanies, blurInstitutions (each a boolean)
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.
ParameterTypeRequiredDescription
resumeIdstringyesResume id

mokaru_delete_resume_share

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

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.
ParameterTypeDescription
cvIdstringFilter to the cover letter for one resume
limit, offsetnumberPagination

mokaru_get_cover_letter

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

mokaru_create_cover_letter

Create a cover letter for a resume.
ParameterTypeRequiredDescription
cvIdstringyesResume to attach to (must be owned by the caller; unique)
titlestringyesCover letter title (max 200)
contentstringyesBody text (markdown allowed)
templateIdstring | nullnoOptional cover letter template id
isDefaultbooleannoMark as user’s default cover letter
variablesobjectnoTemplate-variable map, e.g. { company: "Acme", contactPerson: "Jane" }
showName, showEmail, showPhone, showAddressbooleannoHeader visibility toggles
headerAlignmentleft | center | rightnoHeader alignment
fontFamilystringnoFont family (default Inter)
fontSizenumbernoFont size in pt (default 11)
lineSpacingnumbernoLine spacing (default 1.6)

mokaru_update_cover_letter

Update a cover letter. Only provided fields are modified. Pass null on nullable fields to clear.
ParameterTypeDescription
idstringCover letter id
title, content, templateId, isDefault, variables, showName, showEmail, showPhone, showAddress, headerAlignment, fontFamily, fontSize, lineSpacingvariousSame shape as mokaru_create_cover_letter

mokaru_delete_cover_letter

Permanently delete a cover letter. The parent resume is unaffected.
ParameterTypeRequiredDescription
idstringyesCover letter id

Contacts

mokaru_list_contacts

List professional contacts (recruiters, hiring managers, colleagues, etc.).
ParameterTypeDescription
relationshipenumFilter by relationship type
searchstringSearch by name, company, or email
limitnumber (1-100)Results per page
offsetnumberPagination offset

mokaru_get_contact

Get full details of one contact by id.
ParameterTypeRequiredDescription
idstringyesContact id

mokaru_create_contact

Create a new contact.
ParameterTypeRequiredDescription
firstName, lastNamestringyesContact name
jobTitle, companystringnoRole and company
relationshipenumnoRECRUITER, HIRING_MANAGER, etc.
email, phone, linkedInstringnoContact details

mokaru_update_contact

Update a contact. Only provided fields are modified. Pass null to clear a field.
ParameterTypeDescription
idstringContact id
firstName, lastName, jobTitle, company, relationship, email, phone, linkedInstringEditable fields

mokaru_delete_contact

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

Error handling

Every tool returns errors as MCP error content blocks (isError: true with a text explanation). Errors map from the underlying REST API:
HTTPMCP tool message
400Invalid request.
401Your MCP session has expired. Please re-authorize Mokaru.
403Permission denied. This action requires: {scopes}
404Not found.
409Resource is currently being processed - retry in a few seconds.
429Rate limited. Retry after {seconds}s.
5xxMokaru API error ({status}). Try again later.
Unexpected internal tool errors are returned as a generic failure message while detailed diagnostics stay in server logs.