MCP
Connect an AI agent to Rezzy, read documentation, and generate resumes and cover letters
The Rezzy MCP server exposes the public generation API as tools for AI agents. It uses the same API keys, profile, document ownership, and generation credits as REST.
Connect
Configure a client that supports remote Streamable HTTP servers and custom authorization headers:
| Setting | Value |
|---|---|
| Server URL | https://api.rezzy.dev/v1/mcp |
| Transport | Streamable HTTP |
| Authorization header | Bearer YOUR_API_KEY |
Create your API key in the dashboard. Keep it private and configure it in your client's credentials or headers rather than putting it in prompts. This endpoint uses API key authentication, not OAuth.
The server is stateless and returns JSON responses. Clients should handle MCP initialization and protocol headers. Requests use POST; browser preflight uses OPTIONS. There is no separate GET event stream or persistent session ID.
Generation requires a completed profile import and enough credits. Reading documentation does not require a completed profile, but every tool call requires a valid API key.
Save tool approvals
After connecting through the MCP dashboard, you can save permissions in your client to reduce repeated approval prompts. The instructions below cover the four clients offered in the dashboard and assume the server is named rezzy.
Approving generation tools lets the client use your profile already stored in Rezzy and spend 5 credits per resume or 3 credits per cover letter. These permissions do not set a spending limit. Documentation and status reads cost no generation credits. Repeating a creation call can charge again.
Choose which tools to approve. To keep confirmation for spending credits, approve only use_docs, get_resume, and get_cover_letter. To allow generation too, include create_resume and create_cover_letter.
Claude Code
Run /permissions and add Allow rules for the tools you want to approve:
mcp__rezzy__use_docs
mcp__rezzy__get_resume
mcp__rezzy__get_cover_letter
mcp__rezzy__create_resume
mcp__rezzy__create_cover_letterSave them at the user scope to apply across projects, or at the project scope for the current project. The dialog shows the settings file each rule comes from. Matching Ask or Deny rules take precedence over Allow rules; review those if prompts persist.
See Claude Code permissions and MCP rule syntax.
Cursor
In Cursor Settings > Agents > Approvals & Execution, use the MCP allowlist for tools you want to run without confirmation. In Cursor 3.6 and later, Auto-review runs allowlisted calls immediately and reviews other calls; selecting Auto-review alone does not approve every call.
You can also merge these entries into ~/.cursor/permissions.json for all projects, or .cursor/permissions.json for one workspace:
{
"mcpAllowlist": [
"rezzy:use_docs",
"rezzy:get_resume",
"rezzy:get_cover_letter",
"rezzy:create_resume",
"rezzy:create_cover_letter"
]
}This file's MCP allowlist replaces the one configured in Cursor's UI. Preserve any existing entries you still need. Cursor reloads the file when it changes; team-admin controls take precedence.
See Cursor's permissions reference and Auto-review behavior.
Codex
For the direct MCP connection configured by the dashboard, add these tool settings to ~/.codex/config.toml, alongside your existing [mcp_servers.rezzy] connection. Merge with any existing tables instead of declaring the same table twice:
[mcp_servers.rezzy.tools.use_docs]
approval_mode = "approve"
[mcp_servers.rezzy.tools.get_resume]
approval_mode = "approve"
[mcp_servers.rezzy.tools.get_cover_letter]
approval_mode = "approve"
[mcp_servers.rezzy.tools.create_resume]
approval_mode = "approve"
[mcp_servers.rezzy.tools.create_cover_letter]
approval_mode = "approve"These settings apply to the named tools on this connection. Plugin-installed servers use a separate plugins.<plugin>.mcp_servers.<server>.tools.<tool>.approval_mode configuration path.
Approve for me routes eligible approval requests to an automatic reviewer, which can still deny them. It is not a saved approval for Rezzy. Organization policies still apply.
See Codex configuration, plugin server policy, and automatic review.
VS Code
For GitHub Copilot in VS Code:
- Open the Command Palette and run Chat: Manage Tool Approval.
- Expand the Rezzy MCP server and enable without approval for the tools you want to approve.
- When granting permission from a tool confirmation, choose the session, workspace, or future-invocations scope that fits your use.
Pre-approval controls whether a tool runs. Without reviewing result is a separate permission for adding its response to chat. Tools disabled for auto-approval by your settings or organization still require manual approval. Other agents running inside VS Code may use their own client's permission settings.
If the client still asks
Check that the saved permission matches the server name and tool being called, and that no organization policy overrides it. A tool permission controls execution; the assistant may still ask a question if your requested action or spending authorization is unclear. Rezzy cannot override the client's decision.
For a single request, make the authorization explicit: “Use my saved Rezzy profile to generate one resume and one cover letter for this role. I authorize the 8-credit total.” This clarifies your intent without changing future tool permissions.
Client settings were checked against the linked official documentation on October 11, 2026. Available controls can vary by version and organization policy.
Tools
| Tool | Required arguments | Credits | Result |
|---|---|---|---|
use_docs | None; optional page | 0 | Documentation URL and Markdown |
create_resume | title, job_description | 5 | Job ID, stored resume_title, status, dashboard URL |
get_resume | resume_id | 0 | Status, stage, PDF URL, dashboard URL |
create_cover_letter | title, job_description | 3 | Job ID, stored title, status, dashboard URL |
get_cover_letter | cover_letter_id | 0 | Status, stage, PDF URL, dashboard URL |
create_resume accepts optional company_url. create_cover_letter also accepts hiring_manager_name, company_street_address, company_city, company_state, company_zip, hiring_manager_email, date, and additional_context. See Create resume and Create cover letter for field constraints.
Status tools only return documents belonging to the account that owns your key. Creation is not idempotent: repeating a call can queue another job and deduct credits again. Duplicate titles receive suffixes such as _1.
Read docs with use_docs
The tool descriptions contain the standard generation workflow. Call use_docs when additional API details are needed. It reads the selected page from the official docs site and returns its Markdown, so the agent can check required fields and behavior.
Example tool call (your MCP client handles the protocol):
{
"name": "use_docs",
"arguments": { "page": "resume/create" }
}The optional page defaults to mcp. Supported values are:
overviewquickstartmcpauthenticationpricingrate-limitingerrorsresume/createresume/get-statuscover-letter/createcover-letter/get-status
Successful tool results contain structuredContent, plus a text content block containing the same data as JSON. For use_docs, the data has this shape:
{
"url": "https://docs.rezzy.dev/resume/create",
"markdown": "# Create resume\n..."
}Documentation reads consume no generation credits and count toward MCP request limits. If the docs site is unavailable, the tool returns an error.
Generation workflow
- Call
create_resumeorcreate_cover_letterwith the job description and title. Save each returnedid. When both are requested, track the jobs independently. - Tell the user generation has started: a resume normally takes about a minute, and a cover letter about 30 seconds. Announce this estimate once. These are typical times, not guarantees or countdowns; generation may take longer.
- Poll the corresponding status tool after at least
poll_after_seconds. Back off when status is unchanged and honor HTTPRetry-After. Report meaningful stage changes, not every poll. - Stop on
SUCCESSorFAILED. Deliver each successful original PDF usingpdf_url, alongsidedashboard_url. Explain any failure without automatically creating another document.
Generation uses the authenticated account's completed profile already stored in Rezzy, together with the supplied job description. The client does not retrieve or upload a profile from ChatGPT, Codex, or another service. Rezzy requires no separate confirmation for using this saved profile when the user requests generation. Client approval policies still apply. A resume costs 5 credits and a cover letter costs 3 credits.
Example request: “Use Rezzy to generate a resume and cover letter for this role.”
Rezzy handles writing, formatting, and PDF generation. The returned PDF is the finished deliverable. Do not rewrite, reformat, convert, or run a local PDF review unless the user requests it. Download an unchanged copy only when requested or needed for delivery.
Progress and delivery fields
These fields supplement the existing MCP creation and status results; the REST response format is unchanged.
| Field | Meaning |
|---|---|
poll_after_seconds | Minimum delay before the next status read (currently 5 seconds); null on terminal states. Back off when unchanged. |
stage | Status results only: current generation stage, or null when unavailable or complete. |
pdf_url | Status results only: original finished PDF URL, or null until available. |
pdf_url_expires_at | Status results only: ISO 8601 signed-link expiration, or null when no signed PDF link is available. |
dashboard_url | Dashboard link for accessing saved documents. |
Signed PDF links expire after one hour. The saved document does not expire with the link. Another status read returns a fresh link without consuming generation credits; expiry does not require downloading, rebuilding, or regenerating the document.
If a create call times out or loses its response, check the dashboard before creating again. The first call may already have queued and charged for a document.
Errors
MCP tool results do not use the REST success, message, data envelope. Failed tool execution returns isError: true, with a text content block containing a JSON error object:
{
"isError": true,
"content": [
{
"type": "text",
"text": "{\"error_code\":\"VALIDATION_ERROR\",\"message\":\"Profile import is not complete\"}"
}
]
}The message above is illustrative. Invalid tool arguments are rejected by MCP schema validation. Missing or invalid credentials return HTTP 401 with a JSON-RPC error and a WWW-Authenticate: Bearer header. HTTP 429 comes from the rate limiter before tool execution and uses the rate limit envelope.
Handle errors before reading structuredContent. Status reads and documentation reads can be retried with backoff; avoid automatically retrying generation after ambiguous failures.