# MCP server

> Connect Claude, Cursor, and other MCP clients to the VectorFast Render remote MCP server, with setup per client, the seven tools and their annotations, and limits.

Canonical URL: https://vectorfast.ai/render/docs/mcp
Markdown URL: https://vectorfast.ai/render/docs/mcp.md
Last modified: 2026-10-30

**Short answer:** the MCP endpoint is `https://vectorfast.ai/mcp` (Streamable HTTP, JSON responses, no session). Send your API key as `Authorization: Bearer vf_live_…`. The server exposes seven tools: six read-only tools and `render`.

VectorFast Render is not listed in any connector directory yet; add it by URL as a custom server.

## Client setup [#client-setup]

| Client                   | How                                                                                                                                | Status                                                                   |
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ |
| Claude Code              | `claude mcp add --transport http vectorfast-render https://vectorfast.ai/mcp --header "Authorization: Bearer $VECTORFAST_API_KEY"` | Works with an API key                                                    |
| Claude (web and Desktop) | Customize > Connectors > Add custom connector, No sign-in, Request headers `authorization: Bearer vf_live_…`                       | Request headers are an Anthropic beta for a limited set of organizations |
| Cursor                   | `.cursor/mcp.json` entry with `url` and an `Authorization` header                                                                  | Configured per Cursor's docs; not yet tested end to end                  |
| ChatGPT                  | Plugins > Add custom MCP server                                                                                                    | Not yet: ChatGPT needs OAuth or no auth and cannot send API keys         |

Step-by-step pages with sources: [Claude](/render/agents/claude), [Cursor](/render/agents/cursor), [ChatGPT](/render/agents/chatgpt).

## Tools [#tools]

The order below is the fixed order of `tools/list`. Annotations are hints for clients: read-only tools can run without a confirmation prompt in clients that support it.

| Tool              | Title                           | Read-only | Destructive | Idempotent | Open world | Description                                                                                                     |
| ----------------- | ------------------------------- | --------- | ----------- | ---------- | ---------- | --------------------------------------------------------------------------------------------------------------- |
| `list_templates`  | List templates                  | yes       | no          | —          | no         | Lists the official templates with id, name, summary, and sizes.                                                 |
| `get_template`    | Get template details            | yes       | no          | —          | no         | One template's parameter JSON Schema, sizes, preview image, and an example agent prompt with its `render` call. |
| `list_brand_kits` | List brand kits                 | yes       | no          | —          | no         | Your brand kits with id, name, version, and whether a logo is set.                                              |
| `get_brand_kit`   | Get brand kit                   | yes       | no          | —          | no         | A brand kit's colors, fonts, and logo URLs; omit the id for your default kit.                                   |
| `preview_render`  | Preview a render (watermarked)  | yes       | no          | —          | no         | A watermarked preview returned inline; never spends credits.                                                    |
| `render`          | Render an image                 | no        | no          | yes        | no         | Renders a PNG, JPEG, or WebP and returns its signed URL; repeating the same inputs returns the cached image.    |
| `get_usage`       | Get usage and remaining credits | yes       | no          | —          | no         | Renders in the current period; remaining credits once billing is connected.                                     |

There are no tools that create, change, or delete brand kits; manage brand kits with the [REST API](/render/docs/brand-kits).

## What `render` returns [#what-render-returns]

* A short text summary with the URL.
* `structuredContent` with the same fields as the REST [`POST /v1/renders`](/render/docs/rest-api#post-v1-renders) response, plus `watermarked` and `embedded`.
* A `resource_link` to the signed image URL.
* The image itself, inline, when it is at most 1200×630 pixels and 1 MiB, so clients such as Claude can show it in the conversation. Larger images are returned as a URL only.

Parameter mistakes come back as tool results with `isError: true` and a message that names the field and the next step (for example, call `get_template`), not as protocol errors.

## Protocol details [#protocol-details]

| Item                       | Value                                                                                                                       |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Transport                  | Streamable HTTP, single `POST /mcp` endpoint, always `application/json` (no SSE stream)                                     |
| Protocol versions          | `2026-07-28` (stateless, `server/discover`) and the initialize-based `2025-11-25`, `2025-06-18`, `2025-03-26`, `2024-11-05` |
| Sessions                   | None; no `Mcp-Session-Id` is issued                                                                                         |
| Request size               | 256 KB                                                                                                                      |
| Browser requests           | A cross-origin `Origin` header is rejected with `403`                                                                       |
| `GET /mcp` / `DELETE /mcp` | `405` / `204`                                                                                                               |
| Authentication errors      | `401` with `WWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource"`                            |
| Rate limit                 | Shared with REST: 60 requests per 60 seconds per key                                                                        |

## Billing note [#billing-note]

The `render` tool description says it spends one credit per new render, because that is how billing will work. In early access billing is not connected and every result reports `credits_charged: 0`.
