DocsTools and resources

Tools and resources

Eight tools across three subjects — your resumes, the jobs you tailor them for, and the PDF at the end. Each one names a single permission, and each result tells the assistant what to do next.

Resumes

A resume you own is the factual record of what you have done. It can be read and created over MCP, and it can never be modified or deleted — that is yours to do in FastCV.

fastcv_list_resumes

Read-onlySee your resumes

The first call in almost every conversation. Returns summaries rather than documents, so an assistant can tell a full history from an empty shell — and tell a resume you own from one it tailored — without reading anyone’s contact details.

Takes

  • limitoptionalup to 50, defaults to 20
  • cursoroptionalcontinue a previous page

Returns

  • resumesid, name, kind, version, when it changed, how many entries per section
  • count, hasMore, nextCursorpaging

fastcv_get_resume

Read-onlySee your resumes

One resume: the contact block and the sections with their entries. Nothing about how it looks — the template, colours, fonts and spacing are not readable over MCP and cannot be set from it.

Takes

  • resumeIdfrom fastcv_list_resumes
  • sectionsoptionalonly these types, e.g. ["experience","skills"] — a dense CV is long

Returns

  • resumepersonal, sections, version, editorUrl

fastcv_create_resume

WritesSave new resumes

Saves a resume from content you gave the assistant — pasted text, a file it read, or answers to its questions. The only required field is a name. Half-finished entries are stored and marked incomplete in the editor, because a conversation that dead-ends on a missing end date costs more than the missing date.

Takes

  • namewhat to call it in FastCV
  • personaloptionalcontact details, as far as they are known
  • sectionsoptionalexperience, education, skills, projects, awards, publications, custom

Returns

  • resumeid, version, editorUrl
  • emptySectionswhat arrived with nothing in it, so the assistant can say so

Anything outside that list of section types goes in a custom section with a title — a professional summary, certifications, languages. The list is bounded by what the FastCV editor can edit: a section an assistant creates that you cannot then fix would be worse than not having it.

Jobs

Tailoring writes a copy. The resume you own is never touched, so a version rewritten for one job cannot damage the history it came from.

fastcv_tailor_resume_for_job

WritesAtomicTailor for jobs

One call writes the job application, the tailored resume and the cover letter — all of them or none of them. The tailored resume inherits the design of the one it came from, and the letter takes your name, email and phone off that resume rather than from the assistant.

Takes

  • resumeIdthe resume to tailor from — never modified
  • jobcompanyName and/or jobTitle, plus jobUrl and jobDescription
  • tailoredResumethe rewritten sections, and an optional name
  • coverLetteroptionala matching letter, written in the same call
  • resumeVersionoptionalwhat the assistant last read; a stale one is reported, not refused

Returns

  • jobApplicationthe folder, at status Saved
  • tailoredResume, coverLetterids, versions and editor links
  • contentWarningsanything in the rewrite that is not in your resume
  • alreadyExistedtrue when a folder for this job was already there and was returned unchanged

Asked twice for the same resume, company and role, it returns the application that already exists rather than making a second one — it may have moved to Interviewing since, and that is not something an assistant gets to reset.

fastcv_update_tailored_resume

WritesVersion-checkedUpdate what it wrote

Revises the wording of a resume FastCV tailored, in place, so asking for one bullet to change does not mint a new document. It refuses a resume you own, and hands back the editor link for it instead.

Takes

  • tailoredResumeIda tailored resume, not one you own
  • versionthe version last read — required
  • sectionsthe complete set of sections after the revision
  • nameoptionalrename it

Returns

  • tailoredResumethe new version, and the editor link
  • contentWarningsmeasured against the original resume, not the previous revision

fastcv_update_cover_letter

WritesVersion-checkedUpdate what it wrote

The body, or just the greeting, closing, subject or recipient. Plain paragraphs separated by blank lines — FastCV supplies the typography, and you change the design in the customize panel. Your own name, email and phone come off the resume the letter belongs to and cannot be set here.

Takes

  • coverLetterIdthe letter to revise
  • versionthe version last read — required
  • bodyoptionalreplaces the whole body
  • subject, greeting, closing, recipientName, nameoptionalsend only what changes

fastcv_list_job_applications

Read-onlySee your applications

The company and role, where each one stands, the day it was filed, the day it went out if you have marked it, and which resume and letter are in it. Enough to answer “what have I applied to, and when” without opening the dashboard.

Takes

  • limitoptionalup to 50, defaults to 20

Read-only, permanently. Status and the applied date record what you did, and an assistant has no way to know either — one that wrote “applied” would stamp today’s date and, ten days later, tell you to chase a company you never contacted.

Downloading

fastcv_export_document

Read-onlySee your resumes

A link that downloads the PDF, with whatever design that document currently has. It works on anything you own, at any point — there is no need to open FastCV first, and no need to finish customizing.

Takes

  • documentIda resume or a cover letter
  • documentType"resume" or "cover_letter"

Returns

  • downloadUrlsigned, and tied to that one document
  • expiresAtfifteen minutes from now
  • editorUrlin case you would rather change the design first

The link is short-lived on purpose: a chat transcript lasts forever, and a URL that opens your CV should not. It carries no session and grants nothing beyond that single document.

What a result looks like

Every tool returns structured content, and the same object serialised as text for clients that only render text. ok says whether it worked, summary is one line a client can show as it stands, and nextStep is written for the assistant rather than for you — it is what stops an empty account or a half-finished resume turning into “something went wrong”.

fastcv_tailor_resume_for_job
{
  "ok": true,
  "summary": "Tailored \"Senior Platform Engineer — Monzo\" for Senior Platform Engineer at Monzo with a cover letter. 1 item flagged for confirmation.",
  "nextStep": "Summarise what you changed, in plain language, before offering any link…",
  "jobApplication": {
    "jobApplicationId": "job-application-6f2c…",
    "label": "Senior Platform Engineer at Monzo",
    "status": "saved",
    "statusLabel": "Saved",
    "webUrl": "https://www.fastcv.co/dashboard/applications/job-application-6f2c…"
  },
  "tailoredResume": {
    "resumeId": "resume-tailored-job-application-6f2c…",
    "kind": "tailored_resume",
    "version": "1787251313820.1",
    "editorUrl": "https://www.fastcv.co/builder?id=resume-tailored-job-application-6f2c…"
  },
  "contentWarnings": [
    {
      "field": "sections.0.items.0.highlights",
      "kind": "figure",
      "value": "40%",
      "reason": "The figure \"40%\" does not appear in the source resume. Ask the user to confirm it rather than stating it as achieved."
    }
  ],
  "alreadyExisted": false,
  "staleSource": false
}

version is an opaque handle: read a document, send the version back when you change it, and a write over an edit you made in the browser comes back as a conflict instead of overwriting you.

Content warnings

Tailoring may reword, reorder, condense and leave things out. It may not introduce an employer, job title, date, degree, certification or figure that is not in the resume it started from. Anything that is not comes back in contentWarnings, with the field, the exact value, and whether it is an employer or title (entity), a date, or a figure — and the result instructs the assistant to raise it with you rather than presenting it as fact.

The write still goes through. If you are legitimately adding a job your resume never listed, you should not be stopped — but you should be told.

It compares the words, not the meaning. A rewrite from “Sr. Engineer” to “Senior Engineer” will be flagged, and that is the error worth making: a needless question costs a sentence, a missed invention goes to an employer with your name on it.

Resources and prompts

Two resources, both describing the document format rather than any document. They are generated from the same schemas the tools validate against, so they cannot drift from what is actually accepted.

fastcv://v1/schema/resume

The resume content FastCV accepts, as JSON Schema, with the writable section types and the length limits. Also at /v1/mcp/schemas/resume.json, with no sign-in required.

fastcv://v1/schema/job-application

What a job application holds, and which fields can never be written from a conversation.

Two prompts, for clients that surface them as slash commands: import_my_resume and tailor_for_this_job.

When a call fails

A failure is a normal result with ok: false, a stable code a client can branch on, a sentence it can repeat to you as it stands, and an instruction for what to do next. No error ever contains an exception message, a file path, a database reference or a token.

fastcv_update_tailored_resume · stale version
{
  "ok": false,
  "code": "VERSION_CONFLICT",
  "message": "This was edited on the website since I last read it — let me catch up.",
  "nextStep": "Re-read the document, re-apply the change on top of what is there now, and retry once with the new version. Do not involve the user."
}
AUTH_REQUIRED

No valid connection. The 401 that carries it names the discovery document, which is how your client finds the sign-in page on its own.

SCOPE_REQUIRED

The connection was approved for less than this. Connect FastCV again to grant the rest.

NOT_FOUND

No such document in your account. An id belonging to somebody else reads exactly the same way — deliberately.

FORBIDDEN

Real, yours, and not writable from here — a resume you own. The editor link comes back with it.

VALIDATION_FAILED

Something in the request needs fixing, with the fields named so the assistant can correct it in one retry.

VERSION_CONFLICT

The document changed since it was read. The assistant re-reads and re-applies, without involving you.

RATE_LIMITED

Too many calls too quickly, with the seconds to wait.

INTERNAL_ERROR

Something broke on FastCV’s side. Nothing was saved.

Rules the server enforces

  • Every call is scoped to the account that signed in. An id from another account reads as not found — including the fact that it exists.
  • Each tool asks for one permission, and you see all of them in plain English before you press Allow.
  • A resume you own cannot be modified or deleted over MCP. Only a resume FastCV tailored can be revised.
  • Nothing can be deleted over MCP — not a resume, not a letter, not an application.
  • Status and the applied date are never writable. They record what you did.
  • No tool can set a template, colour, font or spacing. FastCV owns how documents look, and a tailored copy inherits the design of the resume it came from.
  • Your name, email and phone on a cover letter come off the resume it belongs to, so a letter cannot carry a contact detail that was invented.
  • Writes to a document require the version last read, so an assistant cannot silently overwrite an edit you made in the browser.
  • Tokens and keys never appear in a URL or a response, and no document content is recorded in analytics or logs.

The reasoning behind the content rules is on the overview, and connecting is covered on the previous page.