Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
QRTAP_API_KEYYesRequired. 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_URLNoAPI 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

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
qrtap_create_codeA

Create ONE managed QR code on QRTap. Returns the code object: id, short_url (the stable link the QR actually encodes — printing this once is safe because it never changes), png_url/svg_url for the rendered artifact, plus the label/group/external_ref you set. The destination behind the code is editable forever via qrtap_change_destination, so the printed sticker never has to be reissued. For more than a handful of codes at once use qrtap_create_codes_bulk instead — it is one request rather than N.

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 reused telling you whether it already existed) or {ok:false, external_ref, error}. On a re-run after a partial failure created counts only what was actually new and reused counts what was returned unchanged, so the two numbers tell you whether the call did any work. Give every item an external_ref — the call is then idempotent per item and safe to re-run after a partial failure, without producing duplicates. Bulk requires a paid plan: on a free workspace it answers HTTP 402 plan_required, and the fallback is a loop of qrtap_create_code within the plan's limits.

qrtap_list_codesA

List the organization's managed codes and short links, newest first. This is the way to find a code's id before retargeting it, and the way to check what already exists before creating more. Filter by group (a whole batch) or external_ref (one specific code). Set include_stats=true to get every code's all-time scan count in the same response — far cheaper than calling qrtap_code_stats per code when you only need totals.

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 from/to when the user asks about a period. For a whole batch use qrtap_group_stats; for plain totals across many codes use qrtap_list_codes with include_stats.

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 design_template_id to pass to qrtap_create_code / qrtap_create_codes_bulk. Templates are created by the owner in the cabinet, not through this server, because they carry logo image data.

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 slug and public_url; feed that public_url to qrtap_create_code to get a printable card. WARNING: a workspace has exactly ONE page, and if one already exists this REPLACES its whole content with what you send. Every field you leave out is dropped from the live page. Never reach for this tool to add or change something on a page that exists: call qrtap_get_page first, merge your change into the content it returns, and send the merged object through qrtap_update_page. Retrying with the SAME content is safe: the slug never changes, so an already printed QR keeps working, and the replaced version stays in the page's history.

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: content REPLACES the previous content wholesale — any field you omit is erased, not kept. To change one field, first read the current content with qrtap_get_page, merge your change into it, and send the whole object back.

qrtap_get_pageA

Read ONE public page in full, including its current content object. This is the read-before-write step for qrtap_update_page, which overwrites content wholesale — fetch here, change the one field, send the merged object back. qrtap_list_pages deliberately omits content, so it cannot be used for this.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4/5.0

Scored across 20 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count3/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues