> ## Documentation Index
> Fetch the complete documentation index at: https://docs.useqrkit.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP Server

> Use QRKit from Claude, ChatGPT, Claude Code, VS Code, Codex, Cursor or opencode through the Model Context Protocol

QRKit runs a remote [MCP](https://modelcontextprotocol.io) server at
`https://api.useqrkit.com/mcp`. It exposes your workspace as 20 tools that share
one implementation with the REST API, so anything documented in the API
reference behaves the same way when an assistant calls it.

Authentication is OAuth 2.1 with PKCE against your QRKit account. There is no
API key and no client secret, and in most clients the server URL is the only
value you paste. The page at [useqrkit.com/mcp](https://useqrkit.com/mcp) has
click-by-click steps for each client.

| Value | |
| - | - |
| Server URL | `https://api.useqrkit.com/mcp` |
| OAuth Client ID | Not needed, except in Cursor: `cbr3QSYxMJQg8jRJ` |
| OAuth Client Secret | None. Leave it empty |

> [!NOTE]
>
> Claude, ChatGPT, Claude Code, VS Code, Codex and opencode identify themselves
> with a Client ID Metadata Document that their maker publishes. QRKit accepts
> only the clients it has approved, so a client that isn't listed here gets a
> sign-in error. The public client ID for Cursor is safe to share: the
> authorization code can only be delivered to that client's registered callback
> addresses, and PKCE binds each sign-in to the client that started it.

## Claude

In Claude, open **Customize → Connectors → Add custom connector** and paste
the server URL. On Team or Enterprise an owner adds it under **Organization
settings → Connectors**. If Claude asks how to identify itself, keep **Use
Claude's published identity** and leave the client ID and secret empty. Click
**Add**, then **Connect**. Custom connectors work on every Claude plan (one on
Free).

## ChatGPT

Turn on Developer mode under **Settings → Apps & Connectors → Advanced
settings**, then create an app with the server URL. Set authentication to
OAuth and leave the client ID and secret empty; if ChatGPT asks for a
registration method, choose the client metadata document (CIMD). Developer
mode is not available on the free ChatGPT plan.

## Claude Code

```bash theme={null}
claude mcp add --transport http --scope user qrkit https://api.useqrkit.com/mcp
```

Then start Claude Code, type `/mcp`, choose `qrkit` and pick **Authenticate**.
Leave out `--scope user` to add the server to the current project only.

## VS Code

Add the server to your user `mcp.json` (**MCP: Open User Configuration**), or
run **MCP: Add Server** and choose HTTP:

```json theme={null}
{
  "servers": {
    "qrkit": {
      "type": "http",
      "url": "https://api.useqrkit.com/mcp"
    }
  }
}
```

Start the server and allow the sign-in when VS Code asks. The tools are used
from Copilot Chat in agent mode.

## Codex

```bash theme={null}
codex mcp add qrkit --url https://api.useqrkit.com/mcp
codex mcp login qrkit
```

The Codex IDE extension and the ChatGPT desktop app share this configuration;
there, click **Authenticate** next to `qrkit`.

## Cursor

Cursor does not support client metadata documents yet, so it uses the public
client ID. Add this to `~/.cursor/mcp.json`, or `.cursor/mcp.json` in a
project, without a `CLIENT_SECRET`:

```json theme={null}
{
  "mcpServers": {
    "qrkit": {
      "url": "https://api.useqrkit.com/mcp",
      "auth": { "CLIENT_ID": "cbr3QSYxMJQg8jRJ" }
    }
  }
}
```

Then connect `qrkit` from Cursor's MCP settings and sign in.

## opencode

Add the server to `opencode.json`, or `~/.config/opencode/opencode.json` for
every project, then sign in:

```json theme={null}
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "qrkit": {
      "type": "remote",
      "url": "https://api.useqrkit.com/mcp"
    }
  }
}
```

```bash theme={null}
opencode mcp auth qrkit
```

If opencode asks for a client ID, update it with `opencode upgrade`.

## Scopes

| Scope | Grants |
| - | - |
| `profile` | Your name and avatar, standard sign-in |
| `email` | Your email address, standard sign-in |
| `qr:read` | View QR codes |
| `qr:write` | Create and edit QR codes |
| `analytics:read` | View scan analytics |
| `webhooks:read` | View webhook settings |

No tool can create API keys, change billing, or modify webhooks.

## Tools

| Tool | Notes |
| - | - |
| `get_account` | Organization, plan, granted scopes and active custom domains — assistants are told to call this first |
| `create_qr_code` | Same body rules as `POST /v1/qr-codes` (URL, social links, WhatsApp, Telegram, location, app stores, review page, WiFi, vCard, text, email, SMS, event); Free plan is static-only |
| `create_gs1_qr_code` | GS1 Digital Link — the `type: "gs1"` body of `POST /v1/qr-codes`. The assistant is told to confirm the identifier with you first: it can never be changed |
| `list_qr_codes`, `get_qr_code`, `update_qr_code`, `delete_qr_code` | Mirror the QR code endpoints. `list_qr_codes` with status `trashed` lists the Trash |
| `restore_qr_code` | Brings a deleted code back from the Trash with the same id, short URL and scan history; a dynamic restore needs a free plan slot |
| `download_qr_code` | SVG as text, or an inline PNG up to 1024 px |
| `get_qr_analytics` | Dynamic codes on paid plans |
| `create_batch`, `list_batches`, `get_batch`, `download_batch` | Creating a batch needs Plus and above; the read tools work on any plan. `download_batch` returns where to fetch the ZIP |
| `create_folder`, `list_folders`, `update_folder`, `delete_folder` | Folder management |
| `list_webhooks`, `get_webhook`, `list_webhook_deliveries` | Read-only; signing secrets are masked; paid plans |

## Limits and metering

Every tool call is metered exactly like a REST request — including calls
refused for a plan or validation reason — against the workspace's monthly
quota and per-minute rate limit (see [Rate Limiting](/rate-limiting)). The
server additionally throttles protocol traffic per OAuth access token at 600
requests a minute; that limit does not consume plan quota.

## Disconnecting

Remove the connector in Claude or ChatGPT, or remove the `qrkit` server from
your editor or CLI (for example `claude mcp remove qrkit` or
`codex mcp remove qrkit`). The "MCP connection" entry in your dashboard's
API keys list is bookkeeping for the connection and is not a usable key;
revoking it does not disconnect anything.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.