Skip to main content
Glama

Generate Cover Letter

getmattered_generate_cover_letter
Destructive

Write a cover letter for a specific job from the user's default saved resume-builder document, or the first saved builder document if no default is set, in their own voice and free of recruiter cliches. Returns the finished letter as text and saves it to the account. Pass application_id instead to read the letter already written for that application. Add instructions only with application_id when the user asks to change that letter: the rewrite REPLACES the letter saved on the application. Writes from the user's resume on file, or a resume they paste or attach in this chat. If the user's plan does not include cover letters, it says so. Generation and revision use the user's AI credits; reading an existing letter does not run generation. Do not use it to apply to a job; use getmattered_apply. It also works without a resume-builder document. It uses the resume the user pasted or attached in this conversation (pass its text as resume_text), else the base resume uploaded to their account, else their resume-builder document.

Input Schema

NameRequiredDescriptionDefault
resume_textNoThe resume the user pasted or attached in this conversation, as plain text. Omit it to use the resume already on the user's GetMattered account.
company_nameNoName of the company you are applying to
instructionsNoWith application_id: what to change in that letter, in the user's own words.
application_idNoReturn the cover letter already written for this application (an id from getmattered_get_applications) instead of writing a new one.
job_descriptionNoFull text of the target job description. Pass with company_name, or pass application_id instead.

Output Schema

NameRequiredDescriptionDefault
urlYes
sourceYesgenerated: newly written; application: the letter already prepared for application_id; refined: that letter, changed as asked.
companyNameYes
coverLetterYes
resumeSourceNoWhich resume a new letter was written from.
applicationIdYes
resumeBuildIdYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that the rewrite REPLACES the letter saved on the application, that generation/revision consume AI credits while reading does not, that the plan may not include cover letters, and that the result is saved to the account. The replacement warning materially sharpens the destructiveHint=true flag rather than merely restating it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is valuable but the delivery is scattered: the resume-source fallback is stated twice ("Writes from the user's resume on file, or a resume they paste or attach" then again in the final sentence), and "It also works without a resume-builder document" is stranded mid-paragraph. Front-loading of the primary purpose is good, but the repetition costs it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a dual-mode, credit-consuming, destructive write tool, the description covers modes, cost implications, plan gating, replacement behavior, fallback sources, and the sibling to use for applying. An output schema exists, so return values need no further explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; however the description adds real semantic value the schema lacks, notably the resume source precedence chain (pasted resume_text → base resume on account → resume-builder document) and the constraint that instructions are meaningful only alongside application_id. It does not explain required-parameter combinations in one place, leaving the agent to assemble that from prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("write a cover letter for a specific job") and immediately distinguishes its two modes: generation vs. reading an existing letter via application_id. It also explicitly names the sibling it is not ("Do not use it to apply to a job; use getmattered_apply"), so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use (new letter from resume-builder doc, pasted resume, or base resume), when to switch modes (pass application_id to read; add instructions only with application_id to rewrite), and an explicit exclusion pointing to getmattered_apply. This is close to a complete decision tree for the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.