Rezzy API Docs

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:

SettingValue
Server URLhttps://api.rezzy.dev/v1/mcp
TransportStreamable HTTP
Authorization headerBearer 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_letter

Save 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:

  1. Open the Command Palette and run Chat: Manage Tool Approval.
  2. Expand the Rezzy MCP server and enable without approval for the tools you want to approve.
  3. 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.

See VS Code tool approvals.

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

ToolRequired argumentsCreditsResult
use_docsNone; optional page0Documentation URL and Markdown
create_resumetitle, job_description5Job ID, stored resume_title, status, dashboard URL
get_resumeresume_id0Status, stage, PDF URL, dashboard URL
create_cover_lettertitle, job_description3Job ID, stored title, status, dashboard URL
get_cover_lettercover_letter_id0Status, 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:

  • overview
  • quickstart
  • mcp
  • authentication
  • pricing
  • rate-limiting
  • errors
  • resume/create
  • resume/get-status
  • cover-letter/create
  • cover-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

  1. Call create_resume or create_cover_letter with the job description and title. Save each returned id. When both are requested, track the jobs independently.
  2. 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.
  3. Poll the corresponding status tool after at least poll_after_seconds. Back off when status is unchanged and honor HTTP Retry-After. Report meaningful stage changes, not every poll.
  4. Stop on SUCCESS or FAILED. Deliver each successful original PDF using pdf_url, alongside dashboard_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.

FieldMeaning
poll_after_secondsMinimum delay before the next status read (currently 5 seconds); null on terminal states. Back off when unchanged.
stageStatus results only: current generation stage, or null when unavailable or complete.
pdf_urlStatus results only: original finished PDF URL, or null until available.
pdf_url_expires_atStatus results only: ISO 8601 signed-link expiration, or null when no signed PDF link is available.
dashboard_urlDashboard 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.

On this page