Developers
Use your resumes from your AI assistant and your own tools
Paste a job ad into your AI assistant and say “update my resume for this”. It reads your CVEmber resume, saves a tailored version next to the original, checks it, and gives you a download link when your download access covers it. Nothing is ever bought or sent to anyone through it.
Connect
- ChatGPT and Claude: add a connector with the address
https://mcp.cvember.com/mcpand sign in to CVEmber when asked. You choose whether it may edit or only read. Disconnect any time in Settings → Connected apps. - Claude Code, Cursor, scripts: make a key in Settings → API keys and send it as
Authorization: Bearer cvm_…. Keys last 90 days by default (30, 90, 180, 365 to choose from); you can have 2 on the free plan and 5 with download access.
What it can do
get_account— The account's plan, whether download access is active, what PDF export needs, and what this connection may do. Contact details are not included.list_resumes— Base resumes and tailored versions, newest first, each with a label (company, job, made in, date, status), its CVEmber score and downloadable, plus counts. Filter by role, search or since. No contact details.get_resume— One resume's full content (contact, headline, summary, experience, education, skills, projects, certifications), template, colour and contentVersion. A saved job ad or imported text is returned under foreign.tailor_resume— Saves a version for a job ad; the master never changes. Wording the resume supports goes in; a new fact does not, nothing is dropped. Relay each questions[] item as written, never answered by you; the person's answers go back as userStatedFacts [{questionId, text}].update_resume— Applies the person's requested edit to the given sections, title, role, template or colour and saves a version. expectedVersion must match contentVersion. changes lists what changed or was removed; questions[] as in tailor_resume. Undo: restore_version.create_resume— Saves the person's resume or LinkedIn profile as a master for a role. sourceText is the attachment's text as read; details not found in it come back in checks. Refused as duplicate_resume if that master exists: offer to update it.score_resume— CVEmber score, 0-100: how complete and readable the resume is, how well it matches the job when one is given, and how much its lines show. One number, the same every time. Partial = not fully read.export_pdf— A 15-minute link that downloads the resume as a PDF on cvember.com when download access or an unlock covers it. Otherwise answers payment_required with the pricing page; nothing is bought through this tool.restore_version— Puts a resume back to how it was before a change made through this API: the latest one, or the one named by actionId.list_templates— Template ids with their format, columns, the roles each suits, and the colour ids.
What it can never do
- Tailor over your original: tailoring always saves a separate version. Edits to the original happen only through
update_resume, when the person asks. - Invent employers, degrees or dates, whether tailoring or editing: those are refused unless you ask for them; other factual changes are listed for you to check.
- Buy anything, or download a PDF without paying: download links last 15 minutes and open on cvember.com, signed in.
- Send your resume to anyone.
Every change can be undone for 30 days.
Limits
Per key or connected app:
- Free: 100 requests a minute burst, 500 a day, 3000 a month; 30 changes, 60 checks and 10 download links an hour.
- With a pass: 300 a minute burst, 2000 a day, 20000 a month; 120 changes, 240 checks and 30 download links an hour.
- Account-wide fair use also applies: Pro and Pro Lifetime allow 500 MCP requests a day and 6,000 a month (see the Terms). The lower limit wins.
- Job ads up to 15,000 characters. Up to 25 connected apps.
- Sign-in tokens last 60 minutes and renew for up to 30 days; a connection lasts 90 days unless renewed.
REST API
Base address https://cvember.com/api/v1. The full description is at cvember://openapi in the MCP server. Creates accept an Idempotency-Key header, so a retry never makes a duplicate.
GET /account— Plan, download access, what PDF export needs, and this credential's access.GET /resumes— Your resumes and tailored versions, newest first (no contact details).POST /resumes— Create a resume from structured content (dryRun validates only).GET /resumes/{resumeId}— One resume's full content, template and contentVersion.PATCH /resumes/{resumeId}— Replace sections, title, template or colour; needs expectedVersion.POST /resumes/{resumeId}/versions— Save a tailored version for a job ad; the original is never changed.POST /resumes/{resumeId}/score— CVEmber's resume checks, optionally against a job ad.POST /resumes/{resumeId}/export— A 15-minute link to download the PDF, if a pass covers it.POST /resumes/{resumeId}/restore— Undo an API change: put the resume back as it was before it.GET /templates— Template ids, formats and colours.
Errors
Every error has a stable code and a request id you can quote to support:
invalid_key(401)invalid_token(401)key_expired(401)key_suspended(401)key_owner_lost_access(401)insufficient_scope(403)resume_limit(403)credential_quarantined(403)not_found(404)method_not_allowed(405)version_conflict(409)confirm_required(409)idempotency_in_progress(409)invalid_request(400)invalid_cursor(400)idempotency_mismatch(422)facts_refused(422)removals_need_approval(422)role_needed(422)duplicate_resume(409)not_a_job_ad(422)too_large(413)payment_required(402)plan_required(403)rate_limited(429)quota_exceeded(429)too_many_drafts(429)read_only(503)plan_unavailable(503)keys_unavailable(503)unavailable(503)service_protected(503)internal(500)
Each call is recorded (who, which action, the answer, never your content) and kept for 400 days. See also our security page.
Claude is a trademark of Anthropic, PBC. ChatGPT is a trademark of OpenAI. CVEmber is not affiliated with, endorsed by, or sponsored by any of them.