qrtap-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QRTAP_API_KEY | Yes | Required. Workspace API key. Issued by the workspace owner in the QRTap cabinet at app.qrtap.kg/workspace/api. The key is shown once, carries the rights of the whole workspace, and can be revoked there at any time. Treat the key like a password: keep it in the MCP client's env block, not in a prompt, a repository or a shared document. | |
| QRTAP_API_URL | No | API base URL. Default https://app.qrtap.kg. | https://app.qrtap.kg |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| qrtap_create_codeA | Create ONE managed QR code on QRTap. Returns the code object: |
| qrtap_create_codes_bulkA | Create MANY managed codes in a single request — up to 500. Use this for any batch: stickers for a print run, one code per table or shelf, one per branch or partner. Results are per item, so one bad URL does not sink the batch: the reply is {created, reused, failed, data:[…]} where each entry is either a code (ok=true, plus |
| qrtap_list_codesA | List the organization's managed codes and short links, newest first. This is the way to find a code's |
| qrtap_get_codeA | Fetch one code by id: its current destination, label, group, external_ref, the permanent short_url and the artifact URLs. Use it to confirm where a code points right now before changing it, or to re-read a code returned earlier. |
| qrtap_change_destinationA | Point an existing code at a new destination URL. This is the core of the product: the printed QR, its slug and its short_url stay byte-for-byte the same, only the redirect target changes, so a menu or price list can be replaced without reprinting anything. The change is live for the next scan, immediately, and the previous destination is kept in the audit trail (qrtap_code_history). Because it changes what real customers see, confirm the new URL with the user before calling. |
| qrtap_code_historyA | Every destination one code has ever pointed at, newest first, with the version number, the reason and when each became active. Use it to answer 'where did this code point last week?' or to recover a previous URL after a wrong retarget. The printed code itself never changed — only its target did. |
| qrtap_code_statsA | Aggregated anonymous scan statistics for ONE code: total scans, a per-day series and the device split (mobile/tablet/desktop). Bots are excluded; QRTap stores no visitor IPs or user-agents, so no per-person data exists to return. Bound the window with |
| qrtap_group_statsA | Aggregated scan statistics for a WHOLE group of codes at once: how many codes are in the group plus the combined total, per-day series and device split. This is the report for a batch — all branches, all tables, all partner stickers — without iterating over codes one by one. |
| qrtap_create_short_linkA | Create a short link (https://app.qrtap.kg/) when the user asks for a LINK rather than a printed code. It is the same managed object as a QR code and hits the same endpoint as qrtap_create_code — the reply's short_url is permanent, the destination is retargetable, scans are counted. Pick this one only when the user wants nothing but a link; if they need a label, a group, an external_ref or a batch, use qrtap_create_code / qrtap_create_codes_bulk, which take those fields. |
| qrtap_list_design_templatesA | List the organization's branded design templates (brand colour, centre logo, default caption), newest first. Its only purpose is to get a |
| qrtap_create_pageA | Create and publish the organization's public page — a mobile business card served at https://app.qrtap.kg/a/ with the name, contacts, price list and review links. Returns |
| qrtap_update_pageA | Publish a new version of an existing public page, identified by its slug. The slug and public_url do not change, so printed QR codes stay valid. IMPORTANT: |
| qrtap_get_pageA | Read ONE public page in full, including its current |
| qrtap_list_pagesA | List the organization's public pages — slug, segment, theme, published state, version and public_url. Content is NOT included; use qrtap_get_page to read it. Use this when you only need to discover the slug or check whether a page exists yet. |
| qrtap_list_reviewsA | List guest reviews left on the organization's public pages. Nothing a guest writes appears publicly until someone publishes it, so the default status 'pending' is the moderation queue — this is the tool for 'are there new reviews?'. Pass 'published' or 'hidden' to review earlier decisions. |
| qrtap_moderate_reviewA | Publish or hide one guest review. Publishing puts it on the public page immediately, visible to everyone; hiding takes it off. This is a decision made on behalf of the business owner and it is publicly visible — always show the user the review text and ask before calling. |
| qrtap_list_bookingsA | List booking requests left by guests on the organization's public pages, newest first: service, the guest's free-form preferred time, name, phone and status. status='new' is the inbox that still needs a decision — that is the usual call. Omit status to see everything. The reply contains customers' names and phone numbers, so treat it as personal data: use it to serve the request, do not copy it elsewhere. |
| qrtap_set_booking_statusA | Confirm or decline one booking request. Two things to tell the user before calling: this is a commitment to a real person, so ask first; and QRTap sends the guest NO notification, so somebody still has to ring the phone number on the request. The status here is the business's own record of that decision. It cannot be moved back to 'new'. |
| qrtap_get_smart_rulesA | Read the conditional (Smart Links) redirect rules currently set on one code. An empty array means the code always goes to its primary destination. Call this before qrtap_set_smart_rules, which replaces the whole rule set — otherwise you will silently drop rules you did not know about. |
| qrtap_set_smart_rulesA | REPLACE the Smart Links rules of one code — conditional redirects evaluated on every scan, first match wins, falling back to the code's primary destination when nothing matches. Typical uses: send iOS and Android scans to their own app stores, serve a Russian and a Kyrgyz page, or point at the delivery menu outside opening hours. The array you pass becomes the complete rule set, so read the current one with qrtap_get_smart_rules first; passing [] clears all rules. At most 5 rules. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Most tools target clearly distinct resources and actions, and the descriptions explicitly separate close pairs like list vs get, per-code stats vs group stats, and get-before-set for smart rules. Two overlaps remain: qrtap_create_short_link is essentially a narrower qrtap_create_code, and qrtap_create_page can replace an existing page, overlapping with qrtap_update_page despite the warnings.
The set uses a consistent qrtap_ prefix and mostly follows a verb_noun snake_case convention. A few tools omit the verb, such as qrtap_code_history, qrtap_code_stats, and qrtap_group_stats, but the pattern remains predictable.
The server covers a broad QR platform surface: codes, pages, reviews, bookings, stats, smart rules, templates, and short links. Twenty tools is borderline heavy for the domain, and qrtap_create_short_link in particular feels like a redundant specialization of qrtap_create_code.
Core workflows are well covered: code creation, lookup, retargeting, history, stats, bulk creation, page read/update, review moderation, and booking status. However, there is no delete or archive operation for codes, no tool to update code metadata such as label, group, or external_ref, and page deletion is absent, leaving notable lifecycle gaps.