MCP server setup
Point your client at https://app.qrsalt.com/api/mcp and it can use your QR codes as tools. Nothing to install: sign in with QRSalt, or send an API key if your client can't sign in.
Connection details
| Setting | Value |
|---|---|
| Server URL | https://app.qrsalt.com/api/mcp |
| Transport | Streamable HTTP. The server keeps no session between requests. |
| Protocol revision | 2026-07-28. A client that opens with initialize gets the older revision it asks for. |
| Name in your client | Anything you like. The examples use qrsalt. |
| Sign-in | Sign in with QRSalt: OAuth 2.1 with PKCE and dynamic client registration. |
| API key header | Authorization: Bearer qr_live_YOUR_KEY |
Replace qr_live_YOUR_KEY with a key from Dashboard → API. Give the assistant a key of its own, so revoking it stops nothing else.
Claude app (web and desktop)
Add the server as a custom connector and sign in. No key needed.
- Open Customize → Connectors, choose Add, then Add custom connector.
- Give it a name and paste the server URL below.
- Keep sign-in on. Under OAuth client, choose Register automatically, then Add.
- Sign in on the QRSalt page that opens and choose the workspace.
https://app.qrsalt.com/api/mcpOn Team and Enterprise, an owner adds the connector in Organization settings → Connectors first. To use a key instead, choose No sign in and add the header under Request headers.
Checked against the Claude help centre on custom connectors, read 20 October 2026.
Claude Code
One command, run in the folder of the project you want the server in.
With sign-in
claude mcp add --transport http qrsalt https://app.qrsalt.com/api/mcp- Run the command.
- Start Claude Code, type
/mcp, chooseqrsaltand sign in.
With an API key
claude mcp add --transport http qrsalt https://app.qrsalt.com/api/mcp --header "Authorization: Bearer qr_live_YOUR_KEY"It's one line on purpose: a trailing backslash breaks the paste in PowerShell and cmd.
Checked against the Claude Code docs on MCP, read 20 October 2026.
Cursor
Add the server to .cursor/mcp.json for one project, or ~/.cursor/mcp.json for all of them.
With sign-in
{
"mcpServers": {
"qrsalt": {
"url": "https://app.qrsalt.com/api/mcp"
}
}
}- Save the file.
- Open Settings → MCP and connect. Cursor opens the QRSalt sign-in page.
With an API key
{
"mcpServers": {
"qrsalt": {
"url": "https://app.qrsalt.com/api/mcp",
"headers": {
"Authorization": "Bearer qr_live_YOUR_KEY"
}
}
}
}Keep a file that holds a key out of version control. Merge the block with any servers already listed.
Checked against the Cursor docs on MCP, read 20 October 2026.
VS Code
Add the server to .vscode/mcp.json and use it from the chat pane in Agent mode.
With sign-in
{
"servers": {
"qrsalt": {
"type": "http",
"url": "https://app.qrsalt.com/api/mcp"
}
}
}- Save the file.
- Press Start above the server entry and sign in.
With an API key
{
"inputs": [
{
"type": "promptString",
"id": "qrsalt-key",
"description": "QRSalt API key",
"password": true
}
],
"servers": {
"qrsalt": {
"type": "http",
"url": "https://app.qrsalt.com/api/mcp",
"headers": {
"Authorization": "Bearer ${input:qrsalt-key}"
}
}
}
}VS Code asks for the key when you press Start and stores it itself. The file only refers to it, so you can commit it.
Checked against the VS Code MCP configuration reference, read 20 October 2026.
Other clients
Any client that speaks MCP over Streamable HTTP works. If it supports MCP sign-in, give it the URL alone; if not, add the header.
https://app.qrsalt.com/api/mcpAuthorization: Bearer qr_live_YOUR_KEYTools
13 tools, in the order tools/list returns them. A client only sees the ones its credential's scopes and plan allow.
| Tool | Does | Scope | Changes data | Plan |
|---|---|---|---|---|
list_codes | List QR codes | read | No | Starter and up |
get_code | Get a QR code | read | No | Starter and up |
list_folders | List folders | read | No | Starter and up |
get_scan_analytics | Get scan analytics | read | No | Starter and up |
get_code_image | Get a code’s image | read | No | Starter and up |
render_qr_code | Render a QR code | render | No | Any, Free included |
read_qr_image | Read a QR image | render | No | Any, Free included |
create_code | Create a QR code | write | Yes | Starter and up |
update_code | Update where a code points | write | Yes | Starter and up |
create_short_link | Create a short link | write | Yes | Starter and up |
set_gs1_link | Give a code a GS1 Digital Link | write | Yes | Starter and up |
remove_gs1_link | Take a code’s GS1 Digital Link away | delete | Yes | Starter and up |
delete_code | Delete a QR code | delete | Yes | Starter and up |
Both delete tools also need the code's exact name or short-link ending in confirm.
Sign-in and scopes
| Question | Answer |
|---|---|
| Who can connect | A workspace owner or admin |
| Acts as | The person who signed in, in the workspace they chose |
| Ticked for you | Render images, Read, Create and change. Delete is never pre-ticked. |
| Access token | 1 hour. The client refreshes it. |
| Refresh token | 90 days, replaced on every use |
| Ends when | You revoke it in Dashboard → API → Connected apps, or the person leaves or loses admin |
| Discovery | https://app.qrsalt.com/.well-known/oauth-protected-resource/api/mcp |
Building your own client? The full flow, with endpoints and parameters, is in Sign in with QRSalt.
Limits
| Limit | Value |
|---|---|
| Requests a minute | 600 per credential, or 60 on a plan without API access |
| Monthly count | Each tool call counts as one API request. Listing the tools is free. Allowance by plan |
| Tool list cache | Clients are told to keep it for 60 seconds at most |
| Images | read_qr_image takes the file as Base64. No tool fetches a URL. |
| Out of reach | Design, routing rules, custom domains, webhooks, team and billing |
Troubleshooting
| What you see | Why | Fix |
|---|---|---|
| Connected, but no tools | The key is missing, wrong or revoked. The server lists nothing without a valid credential. | Paste the key again, or sign in again. |
Only render_qr_code and read_qr_image | The workspace is on Free, or the key only has Render images. | Move to Starter, or make a key with Read and Create and change. |
| A tool says a scope is missing | The credential doesn’t carry that scope. | Make a key with the box ticked, or reconnect and tick it. |
| New tools don’t appear | The client still holds the old list. | Wait a minute, or reconnect an older client. |
| No tools and a suspension notice | The workspace is suspended. | Email support@qrsalt.com. |
429 errors | The per-minute or monthly limit is spent. | Wait for the reset time in the error. |