Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

qart.uk QR studio

REMOTE · QART.UK · SCANNED AUG 20

qart.uk MCP server: resolve scanned codes, browse the free pool, and buy QR artwork.

Available components

+5 this week 62 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security49
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 8 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
  • HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability64
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2925 tokens (~365/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management33
  • Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · qart.uk

# add to Claude Code
claude mcp add --transport http uk-qart-qart https://qart.uk/api/mcp
# ~/.codex/config.toml
[mcp_servers.uk-qart-qart]
url = "https://qart.uk/api/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "uk-qart-qart": {
      "type": "remote",
      "url": "https://qart.uk/api/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add uk-qart-qart --url https://qart.uk/api/mcp --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  uk-qart-qart:
    url: "https://qart.uk/api/mcp"
// mcp.json
{
  "mcpServers": {
    "uk-qart-qart": {
      "type": "http",
      "url": "https://qart.uk/api/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Aug 26 0
    • Schema quality: 319 → 365 functional
    • “get_qr_matrix” added an optional parameter “allDay” cosmetic
    • “get_qr_matrix” added an optional parameter “amount” cosmetic
    • “get_qr_matrix” added an optional parameter “description” cosmetic
    • “get_qr_matrix” added an optional parameter “end” cosmetic
    • “get_qr_matrix” added an optional parameter “handle” cosmetic
    • “get_qr_matrix” added an optional parameter “location” cosmetic
    • “get_qr_matrix” added an optional parameter “start” cosmetic
    • “get_qr_matrix” added an optional parameter “username” cosmetic
    • “preview_qr_encoding” added an optional parameter “allDay” cosmetic
    • “preview_qr_encoding” added an optional parameter “amount” cosmetic
    • “preview_qr_encoding” added an optional parameter “description” cosmetic
    • “preview_qr_encoding” added an optional parameter “end” cosmetic
    • “preview_qr_encoding” added an optional parameter “fields” cosmetic
    • “preview_qr_encoding” added an optional parameter “handle” cosmetic
    • “preview_qr_encoding” added an optional parameter “location” cosmetic
    • “preview_qr_encoding” added an optional parameter “message” cosmetic
    • “preview_qr_encoding” added an optional parameter “start” cosmetic
    • “preview_qr_encoding” added an optional parameter “title” cosmetic
    • “preview_qr_encoding” added an optional parameter “username” cosmetic
    • “get_qr_matrix” reworded the description of “message” cosmetic
    • “get_qr_matrix” reworded the description of “phone” cosmetic
    • “get_qr_matrix” reworded the description of “title” cosmetic
    • “preview_qr_encoding” reworded the description of “payloadKind” cosmetic
    • “preview_qr_encoding” reworded the description of “phone” cosmetic
  • 15 Aug 26 +2
    • MCP protocol: fail → pass functional
    • MCP protocol version: 2025-06-18 → 2026-07-28 functional
  • 14 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Aug 26 +2
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 10 Aug 26 54

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Aug 2026 · Probed https://qart.uk/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=qart.uk CN=WE1,O=Google Trust Services,C=US 14 Jul 2026 12 Oct 2026 ECDSA 256 ECDSA-SHA256 a0f59b2f2cd6ff370e1e0002ce28d273
SANs: qart.uk, *.qart.uk
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC secure

Validation of qart.uk. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
uk. present 43876 8 Verified
qart.uk. present 2371 13 Verified
qart.uk. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://qart.uk/api/mcp Verified 200
http (plaintext) http://qart.uk/api/mcp Inconclusive 405
MCP tools · 8 exposed · ~2,388 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
browse_free_pool ~121

List the QR artwork currently claimable for free on qart.uk, one per style, with a preview image URL for each. This is the ANONYMOUS shelf — the same selection every signed-out visitor sees, and these codes are what a guest can claim. Use it to show someone what is available or to describe the styles on offer. If you are acting for a signed-in account and want codes THAT account can actually claim, use browse_my_pool instead — the two storefronts differ, and a code from here may 403 on a claim.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

buy_qr_outright ~277

How to buy ONE finished QR artwork with no account at all, paying from your own wallet over x402. Returns the live price and the exact request to make. This is the right tool when you have a wallet but no qart.uk account: get_credit_packs buys CREDITS, which still need an account to spend, and the Studio tools all require an OAuth token. This path requires neither — you GET https://qart.uk/api/v1/qr?url=..., it answers 402, you retry with a PAYMENT-SIGNATURE header, and the PNG comes back in the response body. You are charged ONLY if a real QR detector decodes the image: settlement runs after the scan verdict, so a request that produces nothing scannable is never settled and costs you nothing. Pay in USDC on Base — you do not need ETH, because the facilitator submits the transaction. Cannot be performed through MCP itself: a payment rides in an HTTP header and there is nowhere to put one here. This tool tells you the call; you make it.

NameTypeReqDescription
sizeintegerPixel size. 1024 costs more. Defaults to 768.
urlstringThe https destination you want the QR to encode. Optional — without it you get the price and the call shape.

No output schema declared.

No examples provided.

explain_qart ~85

Explain how qart.uk works: scan verification, retargeting a printed code, the free claim pool and its daily allowances, Studio pricing, and what happens to credits when a run is stopped or fails. Use this before guessing at product details — pricing and allowances change and this returns the current text.

NameTypeReqDescription
topicstringWhich aspect to explain. Defaults to overview.

No output schema declared.

No examples provided.

get_credit_packs ~133

What Studio credits cost: the packs on sale, their price in USD, and roughly how many images each buys. Anonymous — this is a price list. Read it rather than quoting a price from memory; packs change. An agent that runs out mid-task can top up WITHOUT a human, paying from its OWN wallet: POST /api/qart/x402/credits?pack=... with a qart:purchase bearer token. The money comes from the application's wallet, never the user's card. Stripe checkout (POST /api/qart/checkout) remains human-only; hand the user the purchase URL for that.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_dither_qr_parameters ~210

The complete parameter contract for qart.uk's dithered photo QR recipe — an error-diffused technique (after andrew-t) that dithers a photograph into the space around each QR module, so the finished 1-bit image reads as a picture and still scans. THIS TOOL GENERATES NOTHING. There is no API for the technique and no endpoint that will run it for you: it is a browser-side generator, and this tool returns the parameters, ranges, defaults and algorithm order so that YOU can implement it or instruct someone who will. Pair it with get_qr_matrix, which supplies the module grid and the function-pattern map the algorithm needs. It also returns the honest limits, which matter before anyone prints anything: no scan verdict is computed anywhere in this path, error correction wants to stay at H, and stricter detectors (zbar) reject output that phone-grade detectors accept. Treat a dithered code as untested until someone scans the actual printed sheet.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_qr_matrix ~823

Return the actual QR MODULE GRID for a payload — the black/white matrix, plus a per-module map of which modules are function patterns (finder, separator, timing, alignment, format info, version info, dark module) and which carry data. Both come back as one row string per row. Costs nothing, mints nothing, stores nothing. Use this when you are going to RENDER or transform a QR yourself: dithering a photo into it, drawing it as an SVG, laying it out for print, or reasoning about which modules are safe to alter. The function-pattern map is the point — any technique that paints over a QR has to know which modules a scanner uses to FIND the code (finder, timing, alignment) versus which merely carry bits. Do NOT use it to check whether a payload fits — preview_qr_encoding is smaller and answers that. Do NOT use it to get a qart.uk product: this is a plain standards QR, with no artwork, no scan verdict and no alias behind it. The matrix is canonical and untransformed: invert, rotation, mirror and any subpixel scaling are yours to apply afterwards.

NameTypeReqDescription
addressstringFor 'vcard': postal address.
allDaybooleanFor 'event': all-day (DATE values).
amountstringFor 'paypal': optional amount.
authstringFor 'wifi': security type. Defaults to WPA.
bodystringFor 'mailto': message body.
descriptionstringFor 'event': description.
eccstringError correction level. Defaults to H, which is what any paint-over-the-code technique needs.
emailstringEmail address, for 'vcard'/'mecard'/'mailto'.
endstringFor 'event': end datetime.
handlestringFor social kinds (instagram, twitter, youtube, facebook, tiktok, linkedin, paypal): handle or profile URL.
hiddenbooleanFor 'wifi': hidden network.
latnumberFor 'geo': latitude.
lngnumberFor 'geo': longitude.
locationstringFor 'event': location.
maskstringWhich of the 8 standard mask patterns to apply. 'auto' (default) picks the lowest-penalty one, exactly as the encoder in the browser does. All 8 are legal and scan identically; they differ only in ho…
messagestringFor 'sms'/'whatsapp': message text.
namestringFor 'vcard'/'mecard': full name.
orgstringFor 'vcard': organization.
passwordstringFor 'wifi': network password.
payloadKindstringWhat the code should contain. Defaults to url.
phonestringPhone number, for 'vcard'/'mecard'/'tel'/'sms'/'whatsapp'.
ssidstringFor 'wifi': network name.
startstringFor 'event': start datetime (YYYY-MM-DDTHH:MM).
subjectstringFor 'mailto': subject line.
textstringFor 'text': the literal text.
titlestringFor 'vcard': job title. For 'event': event title.
urlstringFor 'url': the destination. For 'vcard'/'mecard': the website.
usernamestringFor 'telegram': username or t.me URL.
versionintegerForce a QR version (1-40, size 21-177 modules). Omit for the smallest that fits. Pinning BELOW the fit is impossible and is raised to the fit, matching the Studio.

No output schema declared.

No examples provided.

preview_qr_encoding ~604

Work out how a payload will encode as a QR code, without creating anything. Returns the exact string the pixels would carry, its byte length, the QR version and module count required, the capacity remaining at that version, and any warnings. Costs nothing and mints nothing. Use this to answer questions like "will this URL fit at error correction level H" or "how much does a long Wi-Fi password cost me in QR density". Higher ECC survives damage better but needs more modules for the same data; more modules print smaller and get harder to scan. payloadKind 'qart_code' sizes the RETARGETABLE variant instead: the pixels carry a 16-byte qart.uk/_ link rather than your data, which is usually several versions smaller. Compare the two before committing to a print. This returns metadata only, never the module grid. For the actual black/white matrix, call get_qr_matrix.

NameTypeReqDescription
allDaybooleanFor 'event': all-day (DATE values).
amountstringFor 'paypal': optional amount.
descriptionstringFor 'event': description.
eccstringError correction level, lowest to highest. Defaults to the Studio default if omitted.
emailstringFor payloadKind 'vcard': email address.
endstringFor 'event': end datetime.
fieldsobjectPayload fields for the kind. Flat sibling properties (url, phone, handle, …) are also accepted, matching get_qr_matrix.
handlestringFor social kinds: handle or profile URL.
locationstringFor 'event': location.
messagestringFor 'sms'/'whatsapp': message text.
namestringFor payloadKind 'vcard': full name.
passwordstringFor payloadKind 'wifi': network password.
payloadKindstringyesWhat the code should contain. 'qart_code' sizes the retargetable variant — a 16-byte qart.uk/_ link instead of your data. whatsapp/telegram/event/social kinds assemble a standard URL or VCALENDAR; th…
phonestringPhone, for vcard/mecard/tel/sms/whatsapp.
ssidstringFor payloadKind 'wifi': network name.
startstringFor 'event': start datetime (YYYY-MM-DDTHH:MM).
textstringFor payloadKind 'text': the literal text.
titlestringFor 'event': title. For 'vcard': job title.
urlstringFor payloadKind 'url': the destination.
usernamestringFor 'telegram': username or t.me URL.
versionintegerForce a QR version (size). Omit to use the smallest that fits.

No output schema declared.

No examples provided.

resolve_qart_code ~135

Resolve a scanned qart.uk code to the URL it currently points at. Accepts the alias ('_ab12cde'), or a full qart.uk URL to pull it out of. Returns targetUrl, or disabledReason if the owner retired it. This does not count as a scan and will not affect the owner's statistics. Only the '_' code class resolves here; older qart.uk links of other shapes are not in this pool.

NameTypeReqDescription
codestringyesThe code to resolve — '_ab12cde', '/_ab12cde', or 'https://qart.uk/_ab12cde'.

No output schema declared.

No examples provided.