qart.uk QR studio
Server Details
qart.uk MCP server: resolve scanned codes, browse the free pool, and buy QR artwork.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.6/5 across 8 of 8 tools scored. Lowest: 4/5.
Each tool targets a unique function: browsing free pool, outright purchase, explanation, credit pricing, dither parameters, QR matrix, encoding preview, and code resolution. Descriptions explicitly contrast similar tools (e.g., preview_qr_encoding vs get_qr_matrix), eliminating boundary ambiguity.
All tool names follow the snake_case verb_noun pattern consistently: browse_, buy_, explain_, get_*, preview_, resolve_. Even longer names like get_dither_qr_parameters adhere to the convention, making the set predictable.
With 8 tools, the set is well-scoped for its stated purpose, covering browsing, purchasing, explanation, pricing, technical parameters, matrix generation, encoding preview, and resolution without feeling bloated or sparse.
The tools cover informational and preparatory aspects thoroughly, but lack actual transactional capabilities: no tool to claim a free code, purchase credits, or execute an outright buy (only instructions). This leaves dead ends for users wanting to complete actions, representing notable gaps in the domain.
Available Tools
8 toolsbrowse_free_poolAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral traits: it is the anonymous shelf, identical to what a signed-out visitor sees, and codes may 403 on claim. This goes beyond a bare purpose statement, though it doesn't cover aspects like pagination or response structure (not critical for a 0-param list).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three focused sentences, with the core function stated first. Every clause earns its place: the anonymous-shelf clarification, the usage suggestion, and the cross-reference to the sibling tool. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 0-parameter tool with no output schema, the description covers what it does, who it's for, when to use it, and a critical limitation (403 on claim). It also points to the correct alternative, making it self-sufficient for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameters, so there is nothing to explain. The description adds relevant context about the selection scope ('one per style') and preview image URLs, which is more than enough given the parameter-free interface.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb and resource: 'List the QR artwork currently claimable for free on qart.uk, one per style, with a preview image URL for each.' It fully differentiates from sibling tools by explicitly naming browse_my_pool as the signed-in alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear usage context is provided: 'Use it to show someone what is available or to describe the styles on offer.' It also gives explicit when-not guidance, warning that signed-in accounts should use browse_my_pool instead to avoid 403 errors, and explains why.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_qr_outrightAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | The https destination you want the QR to encode. Optional — without it you get the price and the call shape. | |
| size | No | Pixel size. 1024 costs more. Defaults to 768. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full behavioral disclosure. It reveals the exact HTTP flow (GET → 402 → retry with PAYMENT-SIGNATURE header), explains settlement logic (charged only if a QR detector decodes), specifies payment method (USDC on Base, no ETH needed), and clearly states the tool does not execute the purchase but only returns the request. This is thorough and non-misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized into clear paragraphs with front-loaded purpose in the first sentence. Every sentence contributes: how to use, when to use, payment mechanics, and critical limitation. It is appropriately sized for the tool's complexity and contains no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having no output schema, the description explains exactly what the tool returns (live price and exact request). It covers the full context: prerequisites (wallet, no account), process (HTTP flow), settlement, payment network, and the MCP limitation. For a tool of this complexity, the description is complete and leaves no major operational ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides 100% coverage with descriptions for both `url` and `size`, so the baseline is 3. The description adds minimal semantic value beyond the schema: it shows how `url` is used in the HTTP request ('GET https://qart.uk/api/v1/qr?url=...') but does not elaborate on `size` beyond what the schema already states. No additional parameter details are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: 'buy ONE finished QR artwork' and immediately clarifies that it 'Returns the live price and the exact request to make,' which is distinct from merely purchasing. It also explicitly differentiates from siblings by noting that get_credit_packs and Studio tools require an account or OAuth token, while this tool does not.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'the right tool when you have a wallet but no qart.uk account.' It names alternatives (get_credit_packs, Studio tools) and explains why they are unsuitable. It also clearly states a limitation: 'Cannot be performed through MCP itself' and instructs the user to make the HTTP call externally, providing a complete when/when-not guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_qartAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Which aspect to explain. Defaults to overview. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool returns 'current text' and that pricing/allowances change, implying dynamic content and read-only behavior. However, it does not explicitly state side-effect-free nature or any prerequisites, limiting transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the tool's purpose and includes usage guidance without fluff. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers purpose, usage, and key behavioral context (current text, changing data). It lacks explicit mapping to all enum values and return formatting, but is adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single 'topic' parameter with enum values and a description. The description adds color by listing example topics like scan verification and Studio pricing, but does not map them explicitly to the enum values. Thus it adds marginal meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Explain' with the resource 'how qart.uk works' and lists concrete aspects (scan verification, retargeting, free claim pool, Studio pricing, credits). This clearly distinguishes it from sibling tools like buy_qr_outright or resolve_qart_code, which perform actions rather than explanations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to 'Use this before guessing at product details' and notes that 'pricing and allowances change and this returns the current text.' This gives clear when-to-use context, though it does not name specific sibling tools as alternatives for different tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_packsAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the tool is anonymous, acts as a price list, and that pack prices can change. However, it doesn't detail response shape or error behavior, though that's less critical for a simple list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then appends operational guidance about purchasing. While slightly longer than strictly necessary, the extra context is valuable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description provides complete context: what it returns, that it's anonymous, and even next-step actions for purchasing. It fully equips an agent to use the tool and act on its results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so description is not required to explain parameters. It adds meaning by describing the content of the returned list.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists Studio credit packs, their USD prices, and approximate image yields. This explicitly distinguishes it from sibling tools like buy_qr_outright by establishing it as a price list resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs agents to consult this list rather than recalling prices from memory, and distinguishes between self-service top-up (POST /api/qart/x402/credits) and human-only Stripe checkout. This provides clear when/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dither_qr_parametersAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description takes full responsibility for disclosure. It states the tool has no API, is browser-side, returns no scan verdict, error correction should stay at H, and stricter detectors like zbar reject phone-grade output. It even cautions to treat output as untested until physically scanned. This is thorough and honest about limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being long, the description is front-loaded with the core purpose, then uses short paragraphs for non-generation, usage pairing, and limitations. Every sentence adds essential information; no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description is remarkably complete. It explains what the tool returns, what it does not do, what to pair it with, and practical caveats about scan reliability. An agent would have enough context to invoke it correctly and interpret its role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero input parameters, so the schema is trivial and the baseline is 4. The description adds context about the nature of the parameters it returns (ranges, defaults, algorithm order), which helps understand the output but does not need to explain input semantics since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as an information-returning tool that provides 'the parameters, ranges, defaults and algorithm order' for qart.uk's dithered photo QR recipe. It distinguishes itself from siblings by explicitly stating it generates nothing and pointing to get_qr_matrix for the module grid.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: the tool is for implementing the technique yourself ('so that YOU can implement it or instruct someone who will') and it should be paired with get_qr_matrix. However, it does not explicitly enumerate alternative tools or state when not to use this tool, relying on the pairing note and the 'generates nothing' caveat to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qr_matrixAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ecc | No | Error correction level. Defaults to H, which is what any paint-over-the-code technique needs. | |
| end | No | For 'event': end datetime. | |
| lat | No | For 'geo': latitude. | |
| lng | No | For 'geo': longitude. | |
| org | No | For 'vcard': organization. | |
| url | No | For 'url': the destination. For 'vcard'/'mecard': the website. | |
| auth | No | For 'wifi': security type. Defaults to WPA. | |
| body | No | For 'mailto': message body. | |
| mask | No | Which 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 how the light and dark modules are laid out, which is worth pinning when you are fitting a picture to the grid. | |
| name | No | For 'vcard'/'mecard': full name. | |
| ssid | No | For 'wifi': network name. | |
| text | No | For 'text': the literal text. | |
| No | Email address, for 'vcard'/'mecard'/'mailto'. | ||
| phone | No | Phone number, for 'vcard'/'mecard'/'tel'/'sms'/'whatsapp'. | |
| start | No | For 'event': start datetime (YYYY-MM-DDTHH:MM). | |
| title | No | For 'vcard': job title. For 'event': event title. | |
| allDay | No | For 'event': all-day (DATE values). | |
| amount | No | For 'paypal': optional amount. | |
| handle | No | For social kinds (instagram, twitter, youtube, facebook, tiktok, linkedin, paypal): handle or profile URL. | |
| hidden | No | For 'wifi': hidden network. | |
| address | No | For 'vcard': postal address. | |
| message | No | For 'sms'/'whatsapp': message text. | |
| subject | No | For 'mailto': subject line. | |
| version | No | Force 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. | |
| location | No | For 'event': location. | |
| password | No | For 'wifi': network password. | |
| username | No | For 'telegram': username or t.me URL. | |
| description | No | For 'event': description. | |
| payloadKind | No | What the code should contain. Defaults to url. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and exceeds it: 'Costs nothing, mints nothing, stores nothing' discloses side effects; 'Both come back as one row string per row' describes return format; 'canonical and untransformed' explains transformations are left to the caller. This goes far beyond a minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The three-paragraph structure front-loads the purpose, then provides usage context and exclusions. Every sentence earns its place: the function-pattern explanation, the two 'Do NOT' exclusions, and the canonical/untransformed note are all essential and non-redundant. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 29 parameters, no output schema, and no annotations, the description is remarkably complete. It explains the output format (row strings), the semantic distinction between function patterns and data modules, when to use, when not to use, and the untransformed nature of the matrix. An agent has enough context to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with per-parameter descriptions, so the baseline is 3. The description does not add parameter-specific meaning beyond the schema; it focuses on output and usage. It does not compensate for any gaps because there are none, but it also doesn't elevate understanding of parameter semantics beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Return the actual QR MODULE GRID for a payload — the black/white matrix, plus a per-module map...'. It clearly distinguishes from siblings by contrasting with preview_qr_encoding and qart.uk products, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when you are going to RENDER or transform a QR yourself') and when not to use ('Do NOT use it to check whether a payload fits — preview_qr_encoding... Do NOT use it to get a qart.uk product'). This is textbook-level usage guidance with named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_qr_encodingAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ecc | No | Error correction level, lowest to highest. Defaults to the Studio default if omitted. | |
| end | No | For 'event': end datetime. | |
| url | No | For payloadKind 'url': the destination. | |
| name | No | For payloadKind 'vcard': full name. | |
| ssid | No | For payloadKind 'wifi': network name. | |
| text | No | For payloadKind 'text': the literal text. | |
| No | For payloadKind 'vcard': email address. | ||
| phone | No | Phone, for vcard/mecard/tel/sms/whatsapp. | |
| start | No | For 'event': start datetime (YYYY-MM-DDTHH:MM). | |
| title | No | For 'event': title. For 'vcard': job title. | |
| allDay | No | For 'event': all-day (DATE values). | |
| amount | No | For 'paypal': optional amount. | |
| fields | No | Payload fields for the kind. Flat sibling properties (url, phone, handle, …) are also accepted, matching get_qr_matrix. | |
| handle | No | For social kinds: handle or profile URL. | |
| message | No | For 'sms'/'whatsapp': message text. | |
| version | No | Force a QR version (size). Omit to use the smallest that fits. | |
| location | No | For 'event': location. | |
| password | No | For payloadKind 'wifi': network password. | |
| username | No | For 'telegram': username or t.me URL. | |
| description | No | For 'event': description. | |
| payloadKind | Yes | What 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; they are verbatim, not retargetable. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: costs nothing, mints nothing, returns metadata only, never module grid. It also explains qart_code behavior (16-byte link) and ECC/module trade-offs, far beyond minimal expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short paragraphs, front-loaded with purpose, no filler. Each sentence carries distinct info (purpose, usage, qart_code note, clarity on outputs).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 21 params and no output schema, the description enumerates the return fields (string, byte length, version, module count, capacity, warnings) and explains the tool's scope (metadata only). It also points to the sibling for the actual matrix, making it self-sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description reinforces qart_code semantics already present in schema and mentions flat sibling properties for fields, but adds little new param-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Work out how a payload will encode as a QR code, without creating anything', a specific verb and resource. It lists concrete outputs and explicitly contrasts with get_qr_matrix, making it distinct from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides direct usage examples ('Use this to answer questions like...') and names the alternative for actual matrix generation ('call get_qr_matrix'). It also advises comparing qart_code vs normal before printing, giving clear when-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_qart_codeAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code to resolve — '_ab12cde', '/_ab12cde', or 'https://qart.uk/_ab12cde'. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It reveals that the tool returns either targetUrl or disabledReason, that it does not count as a scan, and that it only handles the '_' class codes. This gives the agent a clear picture of side effects and outcomes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, dense and free of fluff. Every sentence adds relevant detail: purpose, accepted input forms, return behavior, scan-count caveat, and code-class restriction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no annotations and no output schema, the description is fully sufficient. It explains the operation, input normalization, output possibilities, and exclusions, leaving no significant gaps for the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single 'code' parameter, so the baseline is 3. The description adds value by showing accepted input variants (alias, with slash, or full URL) and reinforces the '_' class restriction, which helps clarify normalization beyond the schema's examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb and resource: 'Resolve a scanned qart.uk code to the URL it currently points at.' It distinguishes itself from sibling tools by explicitly scoping to the '_' code class and excluding older link shapes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when-to-use and when-not-to-use guidance: it applies to '_' codes only, not older qart.uk links. It also notes that resolution does not count as a scan, which is useful context, though it does not explicitly name an alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
AlicenseNot gradedqualityAmaintenanceQR Code AI - MCP server providing AI-powered tools and automation by MEOK AI Labs10MIT- AlicenseNot gradedqualityDmaintenanceAn MCP server that provides tools for scanning and extracting data from QR codes using single or multiple image URLs. It supports both individual and batch processing to retrieve encoded information from images hosted online.19MIT
- FlicenseNot gradedqualityDmaintenanceAn advanced MCP server for generating styled QR codes with logos, batch processing, and specialized formats like WiFi or vCards. It also provides tools to decode existing QR code images and analyze their quality or content.

qr-cow MCP serverofficial
AlicenseAqualityCmaintenanceMCP server that exposes the qr-cow.com API, enabling AI clients to create, style, manage, and analyze QR codes through natural language.8MIT