Create Cover Letter
create_cover_letterPrepare a new cover letter from a job description and candidate information. Deducts credits from the user account. Prefer list_user_job_listings → present company + position options (list has no job description) → wait for the user to pick one → pass that id as jobListingId (omit companyName/role/jobPosition). Call get_user_job_listing only if you need the full posting. Only collect full company/role/jobPosition when no saved listing applies (creates a new listing). Prefer previously uploaded files from list_user_files when any exist — pass them as files. If list_user_files returns none, draft a personBio when you already have grounded candidate data and present it for confirmation or edits; if you lack usable background, ask them for experience, skills, and education. Never invent experience, skills, or education. Wait for explicit confirm (or edited text), then call this tool with the confirmed personBio (omit files or pass []). Always note that uploading a CV at https://www.coverlttr.com/settings/files improves quality for this and future letters. Prefer get_user_profile (and optionally get_cover_letter_cost) first so you know the user can afford the generation. After success, tell the user to open the returned viewUrl on the website for a proper formatted view and easy access to templates.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "create_cover_letter"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Job role / title. Required when jobListingId is not provided. | |
| tone | No | Custom tone content (required when toneTemplate is "custom") | |
| files | No | Previously uploaded files (CV/resume) from list_user_files. Prefer these when present. Optional when personBio holds user-confirmed background from chat. | |
| language | No | ISO language code, e.g. "en" | en |
| jobMarket | No | Job market index: 0=Europe, 1=NorthAmerica, 2=SouthAndCentralAmerica, 3=MiddleEastAndAfrica, 4=AsiaPacific | |
| keyPoints | No | Up to 7 key points to highlight (max 50 chars each) | |
| personBio | No | Candidate bio / background. When list_user_files returns no CV/resume, use a bio the user confirmed in chat (they may have edited your draft). Draft from grounded data when available; never invent experience, skills, or education. Prefer uploaded files when available; personBio alone is enough to create without files. | |
| personName | No | Candidate full name | |
| companyName | No | Target company name. Required when jobListingId is not provided. | |
| jobPosition | No | Full job description. Required when jobListingId is not provided. | |
| jobListingId | No | ID from list_user_job_listings. When provided, company/role/job description are loaded from the saved listing — omit companyName, role, and jobPosition. Prefer this over manual fields whenever the user has a saved listing. | |
| toneTemplate | No | Tone template key, e.g. energetic, professional, custom | energetic |
| desiredLength | No | Length scale 0-4 (0=very short, 4=highly elaborate) | |
| personProfession | No | Candidate profession / title |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| kind | Yes | ||
| role | No | ||
| title | No | ||
| status | Yes | ||
| excerpt | No | ||
| viewUrl | Yes | ||
| keyWords | No | ||
| language | No | ||
| createdAt | No | ||
| authorName | No | ||
| companyName | No | ||
| countryCode | No | ||
| creditsUsed | No | ||
| languageLabel | No |