← QRStuffCONTENT HISTORY

Update to QRStuff

Snapshot Nov 4, 2026 · 12:08 UTC · version 1.1.0

WHAT CHANGED

Package or technical metadata updated

Package or technical metadata updated

Observed in package metadata. These changes alone do not establish a new customer-facing feature.

Save QRStuff and check future changes in Following.

Up to 10 plugins free · no card required.

All fields and original values.

These are saved file metadata. Open a changed file to read its text edits.

Package file

Before

Sep 30, 2026 · 23:01 UTC

Not present

After

Nov 4, 2026 · 12:08 UTC

{"sha256":"5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651","size":9213}

Package file

Before

Sep 30, 2026 · 23:01 UTC

048c25f268fa392f9c23f0a422c633d73d9b2ebfcc0b92c75ac2257d9ca359cf

After

Nov 4, 2026 · 12:08 UTC

3ebe2261fcc290cbd4e52e25894759737c74c157afc3814f690c252faac2a71d

Package file

Before

Sep 30, 2026 · 23:01 UTC

127

After

Nov 4, 2026 · 12:08 UTC

99

Package file

Before

Sep 30, 2026 · 23:01 UTC

Not present

After

Nov 4, 2026 · 12:08 UTC

{"sha256":"5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651","size":9213}

Compare saved observations

Download comparison JSON

Changed files

Choose a file to see its text changes. Binary or large files show metadata only.

.agent-plugin/plugin.json →

.app.json →

.claude-plugin/plugin.json →

.codex-plugin/plugin.json →

.mcp.json →

assets/logo.png →

mcp.json →

plugin.json →

skills/get-started/SKILL.md →

.codex-plugin/plugin.json

− removed · + added

--- before
+++ after
@@ -1,22 +1,201 @@
 {
-  "apps": "./.app.json",
+  "schema_version": "v1",
+  "name_for_model": "qrstuff",
+  "name_for_human": "QRStuff",
+  "description_for_model": "QRStuff creates, manages, tracks, and analyzes dynamic and static QR codes, short links, landing pages, digital business cards, restaurant menus, and GS1 Digital Link / Digital Product Passport codes.",
+  "description_for_human": "QR codes, short links & cards",
+  "extensions": {
+    "com.openai.interface": {
+      "displayName": "QRStuff",
+      "shortDescription": "QR codes, short links & cards",
+      "longDescription": "QRStuff makes QR codes you can print or share, and keeps them manageable afterwards. It also makes short links, landing pages, digital business cards and GS1 Digital Link codes.\n\nWhat you can do\n- Make a QR code for a web link, plain text, Wi-Fi network, email, phone number, text message or contact card, and get a download-ready image in the chat.\n- Make dynamic QR codes you can change later: edit where a printed code points, add colours, shapes, a logo or a frame, and keep codes in projects.\n- See scans by date, country and device for one code, a project or your whole account.\n- Shorten a link, track its clicks and turn it into a QR code.\n- Build a landing page or link-in-bio page, a digital business card or a restaurant menu, each with its own QR code.\n- Make a GS1 Digital Link QR code or a Digital Product Passport for a product's GTIN.\n- Create many QR codes at once from a spreadsheet, and read what a QR code says from a photo.\n\nWho it is for\nSmall businesses, marketers, event organisers, restaurants and retailers, and product and packaging teams who need QR codes that work and can be managed.\n\nGood to know\n- A basic QR code, such as a link or Wi-Fi code, can be made without an account. Codes you want to edit, track or keep need a QRStuff account, and ChatGPT asks you to sign in when that happens.\n- A static code can't be edited after it is printed. Dynamic codes can.\n- QRStuff only receives what you ask it to put in a code or manage.",
+      "category": "Productivity",
+      "keywords": [
+        "qr code",
+        "qr code generator",
+        "wifi qr code",
+        "vcard qr code",
+        "short link",
+        "url shortener",
+        "link in bio",
+        "landing page",
+        "digital business card",
+        "menu qr code",
+        "qr code scanner",
+        "gs1 digital link",
+        "digital product passport",
+        "bulk qr codes"
+      ],
+      "capabilities": [
+        "QR codes",
+        "QR code scanning",
+        "short links with click tracking",
+        "landing pages",
+        "digital business cards",
+        "restaurant menus",
+        "GS1 Digital Link and DPP",
+        "bulk creation",
+        "scan analytics"
+      ],
+      "defaultPrompts": [
+        "Make a QR code so guests can join my Wi-Fi.",
+        "Shorten this link and make a QR code for it.",
+        "Build a digital business card with a QR code."
+      ],
+      "websiteURL": "https://www.qrstuff.com/",
+      "privacyPolicyURL": "https://www.qrstuff.com/privacy-policy",
+      "termsOfServiceURL": "https://www.qrstuff.com/terms-and-conditions",
+      "supportURL": "https://www.qrstuff.com/contact",
+      "commerce": false,
+      "commerceDescription": "No purchases or subscriptions are offered or promoted in this plugin."
+    }
+  },
+  "mcp": {
+    "url": "https://mcp.qrstuff.ai/mcp"
+  },
+  "review": {
+    "test_cases": [
+      {
+        "id": "P1",
+        "type": "positive",
+        "prompt": "Make a QR code so guests can join my Wi-Fi. Network Cafe Blue, WPA, password sample123.",
+        "tools": [
+          "create_static_qr_code"
+        ],
+        "expected": "Returns QR image and download URL, no sign-in required."
+      },
+      {
+        "id": "P2",
+        "type": "positive",
+        "prompt": "Shorten https://example.com/spring and give me a QR code for it.",
+        "tools": [
+          "create_short_link",
+          "generate_short_link_qrcode",
+          "get_qr_code_by_id"
+        ],
+        "expected": "Short link and QR image."
+      },
+      {
+        "id": "P3",
+        "type": "positive",
+        "prompt": "How many times were my QR codes scanned in the last 30 days, and which country scanned most?",
+        "tools": [
+          "get_total_scans",
+          "get_top_performing_location"
+        ],
+        "expected": "Total scans and top performing country."
+      },
+      {
+        "id": "P4",
+        "type": "positive",
+        "prompt": "Make a QR code for https://example.com/flyer that I can change later.",
+        "tools": [
+          "generate_qr_code"
+        ],
+        "expected": "Dynamic QR code image, download link, and dashboard link."
+      },
+      {
+        "id": "P5",
+        "type": "positive",
+        "prompt": "What does this QR code say? (attach image)",
+        "tools": [
+          "scan_qr_code"
+        ],
+        "expected": "Decoded content and type."
+      },
+      {
+        "id": "N1",
+        "type": "negative",
+        "prompt": "Write a poem about spring.",
+        "tools": [],
+        "expected": "No tool call."
+      },
+      {
+        "id": "N2",
+        "type": "negative",
+        "prompt": "Delete all my QR codes and cancel my subscription.",
+        "tools": [],
+        "expected": "Nothing deleted without user confirming; says subscriptions cannot be cancelled from ChatGPT and points to account settings."
+      },
+      {
+        "id": "N3",
+        "type": "negative",
+        "prompt": "Explain how QR codes store data.",
+        "tools": [],
+        "expected": "Answers conceptually without invoking QRStuff tools."
+      }
+    ],
+    "reviewer_account": "engineering@qrstuff.com"
+  },
+  "name": "app-6a38d367714c8191861dfc6d970620c7",
+  "displayName": "QRStuff",
+  "version": "1.1.0",
+  "description": "QR codes, short links & cards",
+  "skills": "./skills/",
   "author": {
-    "name": "QRStuff"
+    "name": "QRStuff",
+    "email": "engineering@qrstuff.com"
   },
-  "description": "Generate, customize, and analyze dynamic and static QR codes. Create custom-styled QR codes for URLs, vCards, Wi-Fi networks, and more, and track scan analytics instantly.",
+  "homepage": "https://www.qrstuff.com",
+  "license": "MIT",
+  "logo": "assets/logo.png",
+  "capabilities": [
+    "QR codes",
+    "QR code scanning",
+    "short links with click tracking",
+    "landing pages",
+    "digital business cards",
+    "restaurant menus",
+    "GS1 Digital Link and DPP",
+    "bulk creation",
+    "scan analytics"
+  ],
   "interface": {
-    "capabilities": [],
-    "category": "Productivity",
-    "defaultPrompt": null,
-    "developerName": "QRStuff",
     "displayName": "QRStuff",
-    "longDescription": "Generate, customize, and analyze dynamic and static QR codes. Create custom-styled QR codes for URLs, vCards, Wi-Fi networks, and more, and track scan analytics instantly.",
+    "shortDescription": "QR codes, short links & cards",
+    "longDescription": "QRStuff makes QR codes you can print or share, and keeps them manageable afterwards. It also makes short links, landing pages, digital business cards and GS1 Digital Link codes.\n\nWhat you can do\n- Make a QR code for a web link, plain text, Wi-Fi network, email, phone number, text message or contact card, and get a download-ready image in the chat.\n- Make dynamic QR codes you can change later: edit where a printed code points, add colours, shapes, a logo or a frame, and keep codes in projects.\n- See scans by date, country and device for one code, a project or your whole account.\n- Shorten a link, track its clicks and turn it into a QR code.\n- Build a landing page or link-in-bio page, a digital business card or a restaurant menu, each with its own QR code.\n- Make a GS1 Digital Link QR code or a Digital Product Passport for a product's GTIN.\n- Create many QR codes at once from a spreadsheet, and read what a QR code says from a photo.\n\nWho it is for\nSmall businesses, marketers, event organisers, restaurants and retailers, and product and packaging teams who need QR codes that work and can be managed.\n\nGood to know\n- A basic QR code, such as a link or Wi-Fi code, can be made without an account. Codes you want to edit, track or keep need a QRStuff account, and ChatGPT asks you to sign in when that happens.\n- A static code can't be edited after it is printed. Dynamic codes can.\n- QRStuff only receives what you ask it to put in a code or manage.",
+    "category": "Productivity",
+    "keywords": [
+      "qr code",
+      "qr code generator",
+      "wifi qr code",
+      "vcard qr code",
+      "short link",
+      "url shortener",
+      "link in bio",
+      "landing page",
+      "digital business card",
+      "menu qr code",
+      "qr code scanner",
+      "gs1 digital link",
+      "digital product passport",
+      "bulk qr codes"
+    ],
+    "capabilities": [
+      "QR codes",
+      "QR code scanning",
+      "short links with click tracking",
+      "landing pages",
+      "digital business cards",
+      "restaurant menus",
+      "GS1 Digital Link and DPP",
+      "bulk creation",
+      "scan analytics"
+    ],
+    "defaultPrompts": [
+      "Make a QR code so guests can join my Wi-Fi.",
+      "Shorten this link and make a QR code for it.",
+      "Build a digital business card with a QR code."
+    ],
+    "websiteURL": "https://www.qrstuff.com/",
     "privacyPolicyURL": "https://www.qrstuff.com/privacy-policy",
-    "shortDescription": "Generate and track QR codes",
-    "supportURL": "https://www.qrstuff.com/contact",
     "termsOfServiceURL": "https://www.qrstuff.com/terms-and-conditions",
-    "websiteURL": "https://www.qrstuff.com"
+    "supportURL": "https://www.qrstuff.com/contact",
+    "commerce": false,
+    "commerceDescription": "No purchases or subscriptions are offered or promoted in this plugin.",
+    "developerName": "QRStuff",
+    "logo": "assets/logo.png"
   },
-  "name": "app-6a38d367714c8191861dfc6d970620c7",
-  "version": "1.0.0"
-}
\ No newline at end of file
+  "developerName": "QRStuff",
+  "apps": "./.app.json"
+}
Full technical diff · 11 changed fields

added /files/.agent-plugin~1plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651",
  "size": 9213
}

changed /files/.app.json/sha256

BEFORE
"048c25f268fa392f9c23f0a422c633d73d9b2ebfcc0b92c75ac2257d9ca359cf"
AFTER
"3ebe2261fcc290cbd4e52e25894759737c74c157afc3814f690c252faac2a71d"

changed /files/.app.json/size

BEFORE
127
AFTER
99

added /files/.claude-plugin~1plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651",
  "size": 9213
}

changed /files/.codex-plugin~1plugin.json/sha256

BEFORE
"0b709ed337de55df2cb85bb7a47b739c1705678d8dbce49ad5d84fb1a65933ad"
AFTER
"2c74441d6fed7aaef3a818f08d8b9ce78666faa832c4390ed8caee2b41f48166"

changed /files/.codex-plugin~1plugin.json/size

BEFORE
988
AFTER
9239

added /files/.mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "c88dfb7b6d5cfd79c102fafed843c9b31ccc7b454fe86984fea1daad301ece66",
  "size": 90
}

added /files/assets~1logo.png

BEFORE
Field was absent
AFTER
{
  "sha256": "317394a899864ad16ba4967664222fc4018639be8b1d149ba3ada93b7d89882c",
  "size": 5769
}

added /files/mcp.json

BEFORE
Field was absent
AFTER
{
  "sha256": "c88dfb7b6d5cfd79c102fafed843c9b31ccc7b454fe86984fea1daad301ece66",
  "size": 90
}

added /files/plugin.json

BEFORE
Field was absent
AFTER
{
  "sha256": "5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651",
  "size": 9213
}

added /files/skills~1get-started~1SKILL.md

BEFORE
Field was absent
AFTER
{
  "sha256": "0bdb5e47ccc8f49319c005481fa785bd9886eca4c99e896372f8b4e90c4d6298",
  "size": 811
}
Full snapshot data
{
  "files": {
    ".agent-plugin/plugin.json": {
      "sha256": "5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651",
      "size": 9213
    },
    ".app.json": {
      "sha256": "3ebe2261fcc290cbd4e52e25894759737c74c157afc3814f690c252faac2a71d",
      "size": 99
    },
    ".claude-plugin/plugin.json": {
      "sha256": "5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651",
      "size": 9213
    },
    ".codex-plugin/plugin.json": {
      "sha256": "2c74441d6fed7aaef3a818f08d8b9ce78666faa832c4390ed8caee2b41f48166",
      "size": 9239
    },
    ".mcp.json": {
      "sha256": "c88dfb7b6d5cfd79c102fafed843c9b31ccc7b454fe86984fea1daad301ece66",
      "size": 90
    },
    "assets/logo.png": {
      "sha256": "317394a899864ad16ba4967664222fc4018639be8b1d149ba3ada93b7d89882c",
      "size": 5769
    },
    "mcp.json": {
      "sha256": "c88dfb7b6d5cfd79c102fafed843c9b31ccc7b454fe86984fea1daad301ece66",
      "size": 90
    },
    "plugin.json": {
      "sha256": "5d946fb16e1fc53b25de8337ce8349264046ebaa55319b231cb80f85d0a36651",
      "size": 9213
    },
    "skills/get-started/SKILL.md": {
      "sha256": "0bdb5e47ccc8f49319c005481fa785bd9886eca4c99e896372f8b4e90c4d6298",
      "size": 811
    }
  }
}

SHA-256 of public snapshot: fcfcd3e632c79f6dc7b727eecb2f5dd5fa3959e3d2aa2bef9d94b2c78a6350a3