QRStuff MCP Server
Server Details
Generate, update, manage, and track QR codes using the QRStuff platform.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- QRStuff
- Claude
- –
TDQS
Scored across 62 tools
Descriptions are detailed and often explicitly cross-reference alternatives, which helps distinguish tools. However, the set contains many similar QR creation tools (generate_qr_code, create_static_qr_code, create_launchpad_qrcode, create_menumaker_qrcode, etc.) and overlapping scan analytics tools (get_total_scans, get_unique_users, get_scans_by_date, get_qrcode_scans, get_project_scans). These overlaps make misselection likely despite the guidance.
Most names are readable snake_case verb_noun, but the convention is not fully consistent. The set mixes 'qrcode' and 'qr_code' (list_qrcodes, get_qrcode_scans vs get_qr_code_by_id, generate_qr_code), uses both 'create' and 'generate' for QR code creation, and varies singular/plural forms.
62 tools is far above the typical well-scoped range and feels heavy for an MCP server. Many analytics endpoints and QR creation variants could be consolidated, even though the platform is broad and most tools have a defined role.
The surface covers a broad QR platform lifecycle: QR codes, short links, landing pages, scans, batches, account data, uploads, wallet links, and image scanning. However, core gaps are notable, such as no delete_qr_code operation and no create/delete project tools alongside project listing and restore.
Publisher details
- Operator
- QRStuff
- Operator website
- https://www.qrstuff.com
- Vendor relationship
- First-party
- Documentation
- https://www.qrstuff.com/mcp
- Trust center
- Not available
- Restrictions
- Requires a QRStuff account via OAuth (free plan available). Some features require a paid plan.
Available Tools
62 toolscancel_batchCancel batchADestructiveIdempotentInspect
Use this only when the user asks to stop a bulk job. Stops further processing of a submitted or running job. Confirm first.
Inputs: batch_id (required), batch_type. Returns: object
convert_vcard_to_digital_business_cardConvert vCard to digital business cardADestructiveInspect
Use this when the user already has a vCard QR code in their account and wants it turned into a digital business card page. Changes that code's type; confirm with the user first. Needs the code ID from list_qrcodes.
Inputs: idqrcode (required). Returns: object
create_digital_business_cardCreate digital business cardADestructiveInspect
Use this when the user wants a digital business card: a shareable mobile page with their name, role, company, phone, email, address and links, opened by QR code. Creates the card and its QR code in one step and returns both. The details are shown publicly on the card, so include only what the user wants shared. Pass idqrcode to turn an existing vCard QR code into a card. Do not use it for a plain contact QR code that stores the details in the code (use generate_qr_code with type VCARD).
Inputs: contact (required), idqrcode. Returns: object
create_digital_product_passportCreate Digital Product PassportAInspect
Use this when the user wants a GS1 Digital Link QR code or a Digital Product Passport for a product: a QR code carrying the product's GTIN that opens a page with product details, traceability, certifications or links. Needs a GTIN and product details. Creates a dynamic code in the account. Do not use it for ordinary web-link QR codes.
Inputs: gtin (required), product (required), qr_name, passport, +4 more. Returns: object
create_launchpad_qrcodeCreate landing page QR codeAInspect
Use this when the user wants a new landing page and a QR code that opens it in one step. Creates and publishes the page, a short link and a dynamic QR code, so confirm the title with the user first. Do not use it to edit an existing page.
Inputs: title (required), qr_name, project_id. Returns: object
create_link_pageCreate link pageAInspect
Use this when the user wants a landing page or "link in bio" page: a simple hosted mobile page with a title and several links. Creates a draft in their account and returns an editor link. It is not public until published with update_link_page. Does not make a QR code (use create_launchpad_qrcode for page, short link and QR code in one step). Do not use it for a business card or menu.
Inputs: title (required), project_id. Returns: object
create_link_page_short_linkCreate link page short linkAIdempotentInspect
Use this when the user wants a short link for a published landing page. Creates it, or returns the existing one; optional custom ending. The page must be published first.
Inputs: page_id (required), slug. Returns: object
create_short_linkCreate short linkAInspect
Use this when the signed-in user wants a shorter, trackable web address for a link, with or without a QR code. Creates a QRStuff short link that redirects to the given URL and counts clicks. It is live and public immediately. Optional custom ending (slug); custom endings depend on the account. For a QR code of the short link, call generate_short_link_qrcode afterwards. Do not use it for a QR code that should open a URL directly (use generate_qr_code).
Inputs: url (required), slug. Returns: object
create_static_qr_codeCreate static QR codeARead-onlyIdempotentInspect
Use this when the user wants a QR code image for a web link, plain text, Wi-Fi network, email, phone number, text message or contact card and does not need to edit, track or manage it afterwards. Returns a PNG or SVG image and a download link. No account is needed. The code cannot be changed after it is made and no scan counts are kept. Do not use it when the user wants to edit the destination later, see scan numbers, add a logo, or make a code for a file, menu, landing page, business card or product (use generate_qr_code).
Inputs: type (required), url, text, format, +17 more.
delete_link_pageDelete link pageADestructiveIdempotentInspect
Use this only when the user clearly asks to delete a landing page. Deletes it and marks its QR code deleted; the public page stops working. Confirm first.
Inputs: page_id (required). Returns: object
delete_short_linkDelete short linkADestructiveIdempotentInspect
Use this only when the user clearly asks to delete a short link. Permanently deletes it and marks the QR code made from it as deleted, so the address stops working. Confirm with the user first.
Inputs: idshorturl (required). Returns: object
generate_link_page_qrcodeGenerate link page QR codeADestructiveIdempotentInspect
Use this when the user wants a QR code for a published landing page that already has a short link. Creates or updates the page's dynamic QR code and returns its ID.
Inputs: page_id (required), options. Returns: object
generate_qr_codeGenerate QR codeAInspect
Use this when the signed-in user wants a QR code saved to their QRStuff account: one they can edit later (dynamic), track scans on, style with colours, shapes, a logo or frame, or that opens a file, event, vCard, Wi-Fi, payment, app download, social links or any of 50+ other types. Creates and saves the code (output_type download shows it in the dashboard; preview saves it as a hidden draft for trying designs) and returns the image and download link. Set dynamic false for a code that never needs changing. Do not use it to change an existing code (use update_qr_code), to shorten a link (use create_short_link), or for a quick one-off code when the user is not signed in (use create_static_qr_code).
Inputs: input (required), output_type.
generate_short_link_qrcodeGenerate short link QR codeADestructiveIdempotentInspect
Use this when the user wants a QR code for one of their short links. Creates the link's dynamic QR code, or updates it if it exists, and returns its ID; fetch the image with get_qr_code_by_id. Options: name, project, format, colours.
Inputs: idshorturl (required), options. Returns: object
get_account_activityGet account activityARead-onlyIdempotentInspect
Use this when the user asks how much of their allowance they have used: dynamic codes created against the limit, and scans this month. Read-only.
Inputs: no named parameters. Returns: scans_this_month, monthly_scan_limit, dynamic_qr_code_limit, monthly_scan_limit…
get_account_entitlementsGet account entitlementsARead-onlyIdempotentInspect
Use this when the answer depends on what the user's account includes, for example "can I add a password to this code?". Returns the account's features and limits. Read-only. Use it to explain why something isn't available, never to promote a plan.
Inputs: no named parameters. Returns: object
get_account_overviewGet account overviewARead-onlyIdempotentInspect
Use this when the user wants a quick overview of their account: number of projects, QR codes, total scans and users. Read-only.
Inputs: no named parameters. Returns: scans, users, qrcodes, projects
get_account_scansGet account scansBRead-onlyIdempotentInspect
Use this when the user wants scan data for the whole account, optionally grouped by date, country, region or device. Read-only.
Inputs: page, device, region, country, +4 more. Returns: result
get_batch_sample_fileGet batch sample fileARead-onlyIdempotentInspect
Use this when the user wants to create many QR codes or short links from a spreadsheet and needs the template. Returns a download link to an XLSX template for the chosen types. Read-only.
Inputs: data_types (required), batch_type. Returns: object
get_batch_statusGet batch statusARead-onlyIdempotentInspect
Use this when the user asks whether a bulk job has finished or how far it is. Read-only.
Inputs: batch_id (required), batch_type. Returns: object
get_link_pageGet link pageARead-onlyIdempotentInspect
Use this when the user wants one landing page's status, editor link, preview link, short link and QR code. Read-only.
Inputs: page_id (required). Returns: object
get_project_scansGet project scansBRead-onlyIdempotentInspect
Use this when the user wants the scan log for a project: time, code, country and device, with a chart. One page at a time. Read-only.
Inputs: idproject (required), page, end_date, per_page, +1 more.
get_qr_code_by_idGet QR code by IDARead-onlyIdempotentInspect
Use this when the user refers to one specific QR code by ID and wants its details, preview image or download link: type, name, destination, short link and styling. Read-only. If you don't have the ID, call list_qrcodes first.
Inputs: idqrcode (required).
get_qrcode_historyGet QR code historyARead-onlyIdempotentInspect
Use this when the user asks what changed on a QR code, when it was edited or deleted, or who changed it. Returns the audit log with actions and dates. Read-only.
Inputs: idqrcode (required), action, cursor, per_page. Returns: entries, per_page, next_cursor, prev_cursor
get_qrcode_scansGet QR code scansARead-onlyIdempotentInspect
Use this when the user wants the scan log for one QR code: time, country and device, with a chart. One page at a time. For just a total use get_total_scans. Read-only.
Inputs: idqrcode (required), page, end_date, per_page, +1 more.
get_qrcode_variant_rulesGet QR code variant rulesARead-onlyIdempotentInspect
Use this before manage_qrcode_variants, when the user wants one dynamic QR code to open different destinations for different people. Returns the condition fields (such as device), their allowed values and the comparison operators. Read-only.
Inputs: no named parameters. Returns: object
get_qrcode_wallet_linkGet QR code wallet linkARead-onlyIdempotentInspect
Use this when the user wants to add a QR code, such as a business card or coupon, to Apple Wallet or Google Wallet. Returns the link or pass for the chosen provider.
Inputs: idqrcode (required), provider (required). Returns: object
get_scans_by_countryGet scans by countryBRead-onlyIdempotentInspect
Use this when the user wants scans per country. Read-only.
Inputs: page, scope, end_date, idqrcode, +3 more. Returns: total, buckets, per_page, last_page, +1 more
get_scans_by_dateGet scans by dateARead-onlyIdempotentInspect
Use this when the user wants scans per day for the account, a project or a code, for example for a chart. Read-only.
Inputs: page, scope, end_date, idqrcode, +3 more. Returns: total, buckets, per_page, last_page, +1 more
get_scans_by_deviceGet scans by deviceBRead-onlyIdempotentInspect
Use this when the user wants scans by phone platform (iOS, Android, other). Read-only.
Inputs: page, scope, end_date, idqrcode, +3 more. Returns: total, buckets, per_page, last_page, +1 more
get_scans_by_regionGet scans by regionBRead-onlyIdempotentInspect
Use this when the user wants scans per state or region within one country (country code required). Read-only.
Inputs: country (required), page, scope, region, +5 more. Returns: total, buckets, per_page, last_page, +1 more
get_short_linkGet short linkARead-onlyIdempotentInspect
Use this when the user wants the full settings of one short link: destination, on or off, password, schedule, click limit. Needs the ID from list_short_links. Read-only.
Inputs: idshorturl (required). Returns: object
get_short_link_clicksGet short link clicksARead-onlyIdempotentInspect
Use this when the user asks how many times a short link was clicked, or where, when or on what device. Group by individual click, date, country, region or device, with an optional date range. For scans of a QR code use get_qrcode_scans. Read-only.
Inputs: idshorturl (required), country, end_date, group_by, +2 more. Returns: object
get_subscription_detailGet subscription detailARead-onlyIdempotentInspect
Fetch the current user's subscription detail via the QRStuff API.
Returns id, status, billing period, term dates, items with name, quantity, unit_price, amount, period.
Inputs: no named parameters. Returns: id, status, cancelled_at, billing_period, +4 more
get_top_performing_dateGet top performing dateARead-onlyIdempotentInspect
Use this when the user asks which day had the most scans. Read-only.
Inputs: scope, end_date, idqrcode, idproject, +1 more. Returns: date, scans, total_scan, percentage_of_total
get_top_performing_locationGet top performing locationARead-onlyIdempotentInspect
Use this when the user asks which country scans come from most. For a full country list use get_scans_by_country. Read-only.
Inputs: scope, end_date, idqrcode, idproject, +1 more. Returns: scans, total_scan, country_code, country_name, +1 more
get_top_scannerGet top scannerARead-onlyIdempotentInspect
Use this when the user asks which of their QR codes was scanned most, for the account or one project (not for a single code). Read-only.
Inputs: scope, end_date, idproject, start_date. Returns: name, device, region, idqrcode, +2 more
get_total_scansGet total scansARead-onlyIdempotentInspect
Use this when the user asks how many scans they got in total, for the account, one project or one QR code, with growth against the previous period. Default period: last 30 days. For a day-by-day breakdown use get_scans_by_date; for individual scans use get_qrcode_scans. For scope qrcode send both idproject and idqrcode. Read-only.
Inputs: scope, end_date, idqrcode, idproject, +1 more. Returns: growth, total_scans
get_unique_usersGet unique usersARead-onlyIdempotentInspect
Use this when the user asks how many different people scanned, not how many scans. Same scopes and dates as get_total_scans. Read-only.
Inputs: scope, end_date, idqrcode, idproject, +1 more. Returns: growth, unique_users
get_user_profileGet user profileARead-onlyIdempotentInspect
Use this when the user asks which QRStuff account is connected or for their account name. Read-only.
Inputs: no named parameters. Returns: idclient, timezone, username, last_name, +9 more
list_batchesList batchesARead-onlyIdempotentInspect
Use this when the user asks what bulk jobs they have run, or you need a batch ID. Covers the last 30 days. Read-only.
Inputs: q, per_page, batch_type. Returns: object
list_deleted_projectsList deleted projectsARead-onlyIdempotentInspect
Use this when the user wants a deleted project back and you need to see which projects were deleted. Read-only.
Inputs: no named parameters.
list_link_pagesList link pagesARead-onlyIdempotentInspect
Use this when the user wants to see or find their landing pages, or you need a page ID. Returns ID, title, status and the account's page limits. Read-only.
Inputs: q, per_page. Returns: object
list_projectsList projectsARead-onlyIdempotentInspect
Use this when the user wants to see their QR code projects (folders) or find a project ID, optionally by name. Returns name, ID, number of codes and total scans. Read-only.
Inputs: q, page, sort_by, per_page, +1 more.
list_qrcodesList QR codesARead-onlyIdempotentInspect
Use this when the user wants to find or browse their QR codes by name or project, or you need a code's ID before editing or checking its scans. Returns a paged table of name, ID, project and short link. Read-only. Does not create anything.
Inputs: q, page, sort_by, per_page, +2 more.
list_qr_data_typesList QR data typesARead-onlyIdempotentInspect
Use this when you need the exact fields for a QR code type before calling generate_qr_code (for example a coupon, PDF, event or GS1 passport), or the user asks what kinds of QR code can be made. Returns type names, labels, required data_fields, and whether a type needs a file upload or a dynamic code. Pass data_type for one type. Read-only.
Inputs: data_type. Returns: result
list_short_linksList short linksARead-onlyIdempotentInspect
Use this when the user wants to find their short links, or you need a short link's ID before changing it or checking clicks. Returns links with ID, destination and the account's short-link limits. Read-only.
Inputs: q, sort_by, per_page, sort_order. Returns: object
manage_qrcode_variantsManage QR code variantsADestructiveIdempotentInspect
Use this when the user wants one dynamic QR code to open different destinations depending on conditions such as the scanner's device (Smart Rules). Saves up to 10 variants for that code. Call get_qrcode_variant_rules first.
Inputs: idqrcode (required), variants (required). Returns: object
move_qrcode_to_projectMove QR code to projectAIdempotentInspect
Use this when the user wants to move a QR code into another project (folder). Needs the code ID and the target project ID from list_projects.
Inputs: idqrcode (required), idproject (required). Returns: ok
restore_deleted_projectRestore deleted projectAIdempotentInspect
Use this when the user wants a deleted project restored. Needs the project ID from list_deleted_projects.
Inputs: idproject (required). Returns: ok
restore_deleted_qrcodeRestore deleted QR codeAIdempotentInspect
Use this when the user says a QR code was deleted by mistake and wants it back. Needs the code ID or short-URL key. Restores it to their account.
Inputs: idqrcode, shorturl_key. Returns: ok
scan_business_cardScan business cardARead-onlyInspect
Use this when the user shares a photo of a printed business card and wants the details pulled out, for example to build a digital business card. Reads name, phone, email, company and address from a JPEG or PNG and returns fields to pass to create_digital_business_card. Creates nothing. Not for QR codes (use scan_qr_code).
Inputs: image, mime_type, base64_image. Returns: object
scan_qr_codeScan QR codeARead-onlyIdempotentInspect
Use this when the user shares a picture of a QR code and wants to know what it contains or where it leads. Reads every QR code in a PNG, JPEG or WebP image and returns the decoded content and its type (link, Wi-Fi, contact, event, email, phone, payment, text). Read-only; creates nothing. Do not use it for counting how many times a code was scanned (use get_qrcode_scans) or for business cards (use scan_business_card).
Inputs: image, base64_image. Returns: object
search_knowledge_baseSearch knowledge baseARead-onlyIdempotentInspect
Search the official QRStuff knowledge base and help documentation for guides, tutorials, feature explanations, and FAQs about QR codes, short links, and account settings.
Inputs: query (required). Returns: matches
submit_batchSubmit batchAInspect
Use this when the user has filled in the bulk spreadsheet and wants the codes made. Starts a background job that creates one QR code or short link per row; check it with get_batch_status. Upload the XLSX with upload_file first (and a ZIP for file-based types).
Inputs: batch_name (required), batch_file_id (required), idproject, batch_type, +1 more. Returns: object
transfer_qrcodeTransfer QR codeADestructiveIdempotentInspect
Use this only when the user made a QR code without signing in and wants it moved into their account. Needs the code ID or short-URL key. Changes ownership.
Inputs: idqrcode, idproject, shorturl_key. Returns: ok
update_link_pageUpdate link pageADestructiveIdempotentInspect
Use this when the user wants to rename a landing page or publish or unpublish it (status draft or published). Publishing makes it public. It does not edit page content; for that give the user the editor link from get_link_page.
Inputs: page_id (required), title, status. Returns: object
update_qr_codeUpdate QR codeADestructiveIdempotentInspect
Use this when the user wants to change a QR code already in their account: where a dynamic code points, its text or content, or its look (colours, shapes, logo, frame, size). Call get_qr_code_by_id first and send the full merged settings; this overwrites the saved settings. A static code that is already printed cannot change what it encodes. Do not use it to make a new code (use generate_qr_code).
Inputs: input (required).
update_qrcode_variant_statusUpdate QR code variant statusADestructiveIdempotentInspect
Use this when the user wants to switch one Smart Rule variant on or off. Needs the variant ID.
Inputs: status (required), idqrcode_variant (required). Returns: object
update_short_linkUpdate short linkADestructiveIdempotentInspect
Use this when the user wants to change a short link: its destination, ending, on or off state, password, schedule, click limit or tracking options. Overwrites the previous settings, and changing the destination changes where the live link goes. Some options are rejected if the account doesn't include them. Needs the ID from list_short_links.
Inputs: settings (required), idshorturl (required). Returns: object
upload_fileUpload fileAInspect
Use this only as a step before generate_qr_code, update_qr_code or submit_batch, when the user has given a file to put behind a code (PDF, image, audio, video) or a logo or background image. Uploads it to the user's QRStuff storage and returns an idfs_file ID. Makes no QR code by itself.
Inputs: file, mime_type, base64_data. Returns: idfs_file
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Create and manage trackable QR codes with scan tracking, analytics, and dynamic URL updates.
Generate static QR codes that never expire, as PNG images or SVG. No account or API key needed.
Create styled, scannable QR codes with previews, scan checks, editable links and scan statistics.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceGenerate QR codes and create, edit and track dynamic (editable) QR codes with scan analytics, folders, style themes and branded subdomain management. Free REST API with an OpenAPI spec alongside; every tool takes a free API key.12AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceEnables generating QR codes from URLs or text without an API key, and creating trackable short links whose printed QR codes can be re-pointed after printing.56 npmMIT
- AlicenseAqualityFmaintenanceDynamic QR code platform for AI agents. Create, customize, and track QR codes without regenerating images. 37 tools covering 11 QR types (URL, vCard, WiFi, event…).373MIT
- AlicenseAqualityBmaintenanceEnables AI clients to generate QR codes for URLs, WiFi networks, contacts, text and email, and to list saved codes and read scan analytics by time range, device, OS and approximate location. Connects over a remote streamable HTTP endpoint with no installation required, though the analytics and account tools require an API key.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.