quality-qr — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited quality-qr (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Quality QR lets agents create, manage, and track QR codes — saved to the user's account with scan analytics and dynamic URL updates. No local installation: the MCP server runs at https://quality-qr.app/api/mcp.
One command connects Claude Code to the MCP server:
claude mcp add quality-qr --transport http https://quality-qr.app/api/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Replace YOUR_API_KEY with a key starting with qr_live_. If you don't have one yet, see Path C below.
After setup, verify it works:
quality_qr_listIf you get back a list (even an empty one), you're connected.
Use this when you are an AI agent with MCP support (Claude Desktop, Cursor, Claude Code, etc.) and need to create, update, or analyze QR codes during this session.
| Tool | What it does |
|---|---|
quality_qr_create | Create a trackable QR code (12 types). Returns an inline SVG. |
quality_qr_list | List the user's QR codes with optional type filter and pagination. |
quality_qr_get | Get full details of a specific QR code by ID. |
quality_qr_update | Change destination URL (dynamic types), rename, or enable/disable. |
quality_qr_delete | Permanently delete a QR code (frees plan quota). |
quality_qr_analytics | Scan analytics: totals, daily trends, device breakdown, top countries. |
Dynamic (destination can be changed after printing): URL, PDF, Menu, App Store, Social
Static (data encoded directly in the code): WiFi, vCard, Email, Phone, SMS, Text, Event
quality_qr_create with a type and content or data object.quality_qr_update to change the destination later.quality_qr_analytics to check scan performance.If the task becomes "build an app that generates QR codes," switch to Path B.
Use this when you're a coding agent building an application, workflow, or service that calls the Quality QR API from code.
https://quality-qr.app/api/v1Authorization: Bearer qr_live_YOUR_KEYcurl -X POST https://quality-qr.app/api/v1/qr \
-H "Authorization: Bearer qr_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "url",
"content": "https://example.com",
"name": "My Website",
"isDynamic": true
}'Response:
{
"success": true,
"type": "url",
"dataUrl": "data:image/png;base64,...",
"qrCode": {
"id": "abc123",
"name": "My Website",
"shortCode": "xY7kL9mN",
"shortUrl": "https://quality-qr.app/q/xY7kL9mN"
}
}curl https://quality-qr.app/api/v1/qr \
-H "Authorization: Bearer qr_live_YOUR_KEY"| Type | Required fields | Dynamic? |
|---|---|---|
url | content (URL) | Yes |
pdf | content (URL to PDF) | Yes |
menu | content (URL to menu) | Yes |
app-store | content (store URL) | Yes |
social | data.platforms array | Yes |
wifi | data.ssid, optional data.password, data.encryption | No |
vcard | data.firstName, data.lastName | No |
email | data.to, optional data.subject, data.body | No |
phone | data.number | No |
sms | data.number, optional data.message | No |
text | content | No |
event | data.title, data.startDate | No |
{
"type": "url",
"content": "https://example.com",
"design": {
"foregroundColor": "#1a56db",
"backgroundColor": "#ffffff"
}
}| Status | Meaning |
|---|---|
| 400 | Invalid type or missing fields |
| 401 | Missing or invalid API key |
| 403 | Plan limit reached |
| 429 | Rate limit exceeded (check Retry-After header) |
If you don't have a key yet, do Path C first.
Use this when the human doesn't have an API key yet, or needs to create an account.
If you already have a valid qr_live_ key, skip this path.
Step 1 — Ask the human to sign up or sign in:
https://quality-qr.appFree accounts require no credit card.
Step 2 — Generate an API key:
Direct the human to:
https://quality-qr.app/dashboard/api-keysThey click Create New Key, copy the value (starts with qr_live_).
Step 3 — Save the key and continue:
For MCP setup, go back to Quick Setup above. For app integration, set:
echo "QUALITY_QR_API_KEY=qr_live_..." >> .env| Plan | Tool Calls / Month | Dynamic QR Codes | Analytics History | Price |
|---|---|---|---|---|
| Free | 100 | 1 | 7 days | Free |
| Pro | 1,000 | 10 | 30 days | €10/mo |
| Business | 10,000 | 100 | 1 year | €30/mo |
MCP tool calls count against your API rate limit. Protocol messages (initialize, tools/list) are free.
Rate-limit headers are included in every response:
X-RateLimit-Remaining — calls left this billing periodX-RateLimit-Reset — when the limit resets (ISO 8601)Retry-After — seconds to wait (only on 429 responses)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.