Leafwright
Official Leafwright MCP.
What it can do
- Leafwright Login: Start a browser login flow for Leafwright MCP. Open the returned URL, choose an organization and project, then call leafwright_auth_status.
- Leafwright Auth Status: Check whether Leafwright MCP is authenticated. Completes a pending browser login if approved.
- Leafwright Logout: Revoke the stored Leafwright MCP token and clear local auth state.
What data it sees
Do you need an account
No: the server works without sign-in
Official Leafwright MCP. Generate PDFs, build templates, debug failed renders. HTML/URL/Handlebars to PDF. Not DOCX/ICE. Not Leaf agriculture (withleaf.io). npm: @leafwright/mcp 0.2.2 (npx -y @leafwright/mcp). Remote: https://leafwright.co/mcp (OAuth 2.1, Streamable HTTP). Docs: https://leafwright.co/docs/mcp
How to connect
How to connect Leafwright to Claude
The server address to paste into Claude settings:
https://leafwright--alejandro-3cog.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect Leafwright to ChatGPT
The server address to paste into ChatGPT settings:
https://leafwright--alejandro-3cog.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect Leafwright to Cursor
The server address to paste into Cursor settings:
https://leafwright--alejandro-3cog.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (21)
Raw names from tools/list. Only developers need these.
| leafwright_login | Start a browser login flow for Leafwright MCP. Open the returned URL, choose an organization and project, then call leafwright_auth_status. |
| leafwright_auth_status | Check whether Leafwright MCP is authenticated. Completes a pending browser login if approved. |
| leafwright_logout | Revoke the stored Leafwright MCP token and clear local auth state. |
| leafwright_list_organizations | List organizations available to the authenticated Leafwright MCP token. |
| leafwright_list_projects | List projects available to the authenticated Leafwright MCP token. |
| leafwright_select_project | Set the local default project for future project-scoped MCP tool calls. |
| leafwright_list_templates | List templates available to the active Leafwright project. |
| leafwright_get_template | Fetch a single template, including its draft HTML/CSS, sample data, and published versions. |
| leafwright_validate_template | Validate a template (optionally with draft HTML/CSS/sample-data overrides) before rendering. Validation errors state which tag, attribute, or URL was rejected and what to use instead; the leafwright://docs resource lists the full HTML rules. |
| leafwright_get_job | Fetch render job status and metadata (pages, credits used, file size, duration). |
| leafwright_get_job_logs | Fetch render logs for a job. Use this to debug a failed or wrong-looking render. |
| leafwright_get_usage | Get current billing-period usage for the active project. |
| leafwright_estimate_usage_cost | Estimate credit usage and overage cost for a planned batch of renders against the active project's plan and current billing period. |
| leafwright_render_html | Render raw HTML into a PDF. Returns job metadata and a signed download URL for sync renders. Full HTML documents are supported: doctype, html, head, meta, title, body, style, plus text, layout, table, and img tags. Rejected: <script>, <iframe>, <object>, <embed>, <form>, <link>, inline <svg> markup, inline event handlers, and external http(s) asset URLs. Embed images — including SVGs — as base64 data URIs in <img> src (data:image/png, jpeg, gif, webp, or svg+xml;base64,...), relative paths, or cid: references. CSS must not use @import or external url(). |
| leafwright_render_url | Render a public HTTP(S) URL into a PDF. Leafwright applies SSRF protections before rendering. |
| leafwright_render_template | Render a published Leafwright template with JSON data. |
| leafwright_create_template | Create a new draft template. Drafts are not published; publishing requires a human in the dashboard. |
| leafwright_update_template_draft | Update a template's draft HTML, CSS, name, or sample data. |
| leafwright_ai_generate_template | Create an AI-assisted template draft from a prompt. |
| leafwright_ai_revise_template | Revise a template's draft from a natural-language instruction. |
| leafwright_ai_fix_from_logs | Repair a template's draft using the render logs of a failed or wrong-looking job. |