# write.cv: Agent Guide

write.cv is a free, browser-based CV / resume builder with real-time ATS scoring,
an AI assistant (chat, job matching, and one-click whole-CV translation into 12 languages),
7 designer templates, PDF import (drag-and-drop or upload) and export, and full Arabic & English (RTL) support.
This site welcomes AI agents. No authentication is required for read access.

## What you can do here

- **Read about the product**: https://write.cv/ (English landing), https://write.cv/en, https://write.cv/ar
- **Machine-readable overview**: https://write.cv/llms.txt (short) and https://write.cv/llms-full.txt (expanded)
- **Open the builder for a user**: link them to https://write.cv/en/app or https://write.cv/ar/app — no signup needed
- **Author a CV for a user**: generate a JSON file matching the write.cv schema
  (see the skill below); the user loads it with the in-app "Load" button. Author
  in a single language — the builder saves translations as separate switchable
  language versions, but the loadable/shareable JSON always holds one language.
- **Browse guides & articles**: https://write.cv/en/blog and https://write.cv/en/cv-guide

## How to connect (MCP)

write.cv runs a public, no-auth MCP server over streamable HTTP at
**https://write.cv/mcp** (server card: https://write.cv/.well-known/mcp/server-card.json).
CORS is open, so browser-based clients work too.

Add it to a coding agent or connector:

- **Claude Code**: `claude mcp add --transport http write-cv https://write.cv/mcp`
- **Cursor / Windsurf** (`~/.cursor/mcp.json`):
  `{ "mcpServers": { "write-cv": { "url": "https://write.cv/mcp" } } }`
- **VS Code (Copilot agent)** (`.vscode/mcp.json`):
  `{ "servers": { "write-cv": { "type": "http", "url": "https://write.cv/mcp" } } }`
- **Claude Desktop** (stdio bridge):
  `{ "mcpServers": { "write-cv": { "command": "npx", "args": ["mcp-remote", "https://write.cv/mcp"] } } }`
- **claude.ai / ChatGPT connectors**: add the remote MCP URL `https://write.cv/mcp`

Tools:

- `get_site_overview` — what write.cv is and how to point a user to it.
- `get_cv_json_schema` — the CV JSON shape + authoring rules.
- `validate_cv_json` — lint a CV JSON object; returns structural issues before loading.
- `score_cv` — 0-100 ATS score with category breakdown + prioritized fixes.
- `list_templates` — the 7 templates (id, name, category, description).
- `create_cv_share_link` — turn a CV JSON into a one-click link that opens it
  **already loaded in the builder** (fully editable) plus a read-only preview link.
  The CV is encoded in the URL fragment and never reaches a server.

Typical loop: **author → validate_cv_json → score_cv → improve → create_cv_share_link**.

- Markdown content negotiation: request /, /en, or /ar with `Accept: text/markdown`
  to get a token-efficient Markdown rendition instead of HTML.

## Rate limits & errors

- 200 requests per 60 s per IP across `/api/*` and `/mcp` (`RateLimit-Policy` header);
  over the limit → `429` with `Retry-After`. Please cache — public data changes slowly.
- REST errors are `application/problem+json` (RFC 9457); MCP uses standard JSON-RPC errors.
- Full developer docs: https://write.cv/developers

## Discovery endpoints

- Developer docs: https://write.cv/developers

- Sitemap: https://write.cv/sitemap.xml
- OpenAPI (site resources): https://write.cv/openapi.json
- API catalog (RFC 9727): https://write.cv/.well-known/api-catalog
- A2A agent card: https://write.cv/.well-known/agent-card.json
- WebMCP manifest: https://write.cv/.well-known/webmcp.json
- Agent skills index: https://write.cv/.well-known/agent-skills/index.json
- Security contact: https://write.cv/.well-known/security.txt

## Data & privacy model

write.cv is local-first: a user's CV data lives in their browser's localStorage
and is never uploaded. There is no user-data API to query — by design.

## Etiquette

- Identify your agent with a descriptive User-Agent string.
- Respect https://write.cv/robots.txt (AI crawlers are explicitly allowed).
- Content signals: search=yes, ai-input=yes, ai-train=no.

## Author

Built by Abdullah Al-Taheri — https://altaheri.me
