Connect your AI to QrVerloz
Create, update, and inspect QR codes from any MCP-compatible AI client — Claude, Cursor, VS Code, Continue, and more. No browser required. No account needed to start.
Server URL
https://qrverloz.com/api/mcp
Quick Start
Up and running in 3 steps — no signup required.
Want ready-made config files for Claude Desktop, Claude Code, Cursor, VS Code, and more? Clone the qrverloz-mcp repo ↗
https://qrverloz.com/api/mcp
request_api_key — no signup, no email. Returns a 90-day token. Save it; it is shown only once.request_api_key()
create_qr_code."Authorization": "Bearer qrv_..."
Authentication
Two modes — anonymous for quick tests, authenticated for production.
- Anonymous, ephemeral data-URI images only
- QR codes are not stored and cannot be updated
- Rate limited: 5/min · 10/hr · 30/day
- Good for testing before committing
- Persistent QR codes with permanent short URLs
- Retarget any time without reprinting
- Limits set by account plan (5 codes on Free, same for guest tokens)
- Token from
request_api_keyor the Settings dashboard
Authorization: Bearer <token>
Tools Reference
8 tools available. Provide either qr_code_id or short_code where both are listed as optional.
No parameters required.
Example Response
{
"success": true,
"token": "qrv_abc123...",
"important": "Save this token — it is shown only once.",
"plan": "guest (Free)",
"max_qr_codes": 5,
"expires": "2026-07-08",
"next_steps": [
"1. Add to MCP client headers: Authorization: Bearer qrv_abc123...",
"2. Restart your AI client.",
"3. Call create_qr_code — codes will be permanent and updateable.",
"4. To keep codes after 90 days, visit /claim"
]
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| title | string | Yes | A human-readable label for the QR code (1–200 characters) |
| target_url | string (URL) | Yes | Destination URL — must start with https:// or http:// |
Example Response
{
"success": true,
"id": "clxyz...",
"title": "Summer Sale",
"short_code": "abc123",
"short_url": "https://qrverloz.com/r/abc123",
"target_url": "https://example.com/sale",
"tip": "Use update_qr_target to change the destination at any time."
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| qr_code_id | string | No | Internal UUID from create_qr_code or list_qr_codes |
| short_code | string | No | Short code from the redirect URL (e.g. "abc123") |
Example Response
{
"id": "clxyz...",
"title": "My QR Code",
"short_code": "abc123",
"short_url": "https://app.example.com/r/abc123",
"target_url": "https://example.com",
"is_active": true,
"created_at": "2026-01-15T10:30:00.000Z"
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| page | integer | No | Page number (default: 1) |
| limit | integer | No | Items per page, max 50 (default: 20) |
Example Response
{
"total": 12,
"page": 1,
"limit": 20,
"items": [
{
"id": "clxyz...",
"title": "My QR Code",
"short_code": "abc123",
"target_url": "https://example.com",
"is_active": true
}
]
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| qr_code_id | string | Yes | Internal UUID of the QR code |
Example Response
{
"id": "clxyz...",
"title": "My QR Code",
"short_url": "https://app.example.com/r/abc123",
"total_scans": 247
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| qr_code_id | string | No | Internal UUID from create_qr_code or list_qr_codes |
| short_code | string | No | Short code from the redirect URL (e.g. "abc123") |
| target_url | string (URL) | Yes | New destination URL — must start with https:// or http:// |
Example Response
{
"success": true,
"id": "clxyz...",
"title": "My QR Code",
"short_url": "https://app.example.com/r/abc123",
"target_url": "https://new-destination.com"
}Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| qr_code_id | string | No | Internal UUID from create_qr_code or list_qr_codes |
| short_code | string | No | Short code from the redirect URL (e.g. "abc123") |
| confirm_title | string | Yes | The exact title of the QR code — must match character-for-character to prevent blind deletions |
Example Response
{
"success": true,
"deleted_id": "clxyz...",
"deleted_short_code": "abc123",
"deleted_title": "My QR Code",
"note": "The QR code and its scan history have been removed."
}No parameters required.
Example Response
{
"tier": "free",
"plan_name": "Free",
"is_guest": true,
"qr_codes": {
"used": 1,
"limit": 5,
"remaining": 4
},
"features": {
"custom_colors": false,
"logo_overlay": false,
"scheduled_redirects": false,
"password_protection": false,
"bulk_upload": false,
"csv_export": false,
"svg_export": false,
"analytics": false
},
"limits": {
"max_scans_per_code_per_day": 50,
"bulk_upload_max_rows": 0
}
}Rate Limits
All limits are per IP address.
| Tier | Per minute | Per hour | Per day | QR code limit |
|---|---|---|---|---|
| Unauthenticated | 5 creates | 10 creates | 30 creates | Ephemeral only |
| Guest / Free token | 60 req | — | — | 5 permanent codes |
| Starter plan | 60 req | — | — | 50 permanent codes |
| Pro plan | 60 req | — | — | 200 permanent codes |
All tiers share a global cap of 60 requests/min per IP across all tools. The anonymous per-minute/hour/day limits apply only to the create_qr_code tool.
Visit /claim, link your email address, and your guest token is converted to a full account. All your QR codes are preserved, the token never expires, and you unlock analytics, custom branding, and more depending on your plan.