Skip to main content
Glama

Order printed certificates on Zazzle, once voting has closed

get_certificate_orders
Read-onlyIdempotent

Order printed certificates on Zazzle, once voting has closed Changes nothing. Contests, quizzes and hunts, after voting closes (409 not_closed before). QRvote writes the certificates as the dashboard's Print page does: one for each award's winner (top3: true for the top three), with their place and how they won, in the contest's language and colors. awards[i] says who certificate i is for. orders[i] maps each size (11x85 is letter, 14x11 is large) to a Zazzle link that opens that certificate filled in; give the person the links, and they order and pay on Zazzle. It's null when the print font can't draw the award or the name (print that one from the dashboard instead). certificates[i] holds the print images. No winners yet means empty lists. Needs the organizer key.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "slug": "<slug>"
    },
    "name": "get_certificate_orders"
  }
}

Input Schema

NameRequiredDescriptionDefault
slugYesThe id in the public link, e.g. `scarecrow-contest-2026-ab12` from https://qrvote.org/c/scarecrow-contest-2026-ab12
top3NoThe top three of each award, not only the winners
accentNoThe color as 6 hex digits, no #. Leave it out for the contest theme's color, as on the Print page.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / accent / description
      Previous value: -"The color as 6 hex digits, no #"New value: +"The color as 6 hex digits, no #. Leave it out for the contest theme's color, as on the Print page."
    • removedInput schema / properties / certificates
      Removed value: -{
      -  "items": {
      -    "properties": {
      -      "award": {
      -        "description": "The award, e.g. Scariest, Winner, Quiz champion",
      -        "maxLength": 100,
      -        "type": "string"
      -      },
      -      "badge": {
      -        "description": "On the rosette: 1st, 2nd, 3rd or Tie",
      -        "maxLength": 8,
      -        "type": "string"
      -      },
      -      "date": {
      -        "maxLength": 40,
      -        "type": "string"
      -      },
      -      "detail": {
      -        "description": "e.g. 42 votes",
      -        "maxLength": 100,
      -        "type": "string"
      -      },
      -      "name": {
      -        "description": "The winner",
      -        "maxLength": 100,
      -        "type": "string"
      -      },
      -      "num": {
      -        "description": "e.g. Entry #7; empty if none",
      -        "maxLength": 30,
      -        "type": "string"
      -      },
      -      "place": {
      -        "description": "Under the award for 2nd and 3rd, e.g. 2nd place; else empty",
      -        "maxLength": 40,
      -        "type": "string"
      -      },
      -      "signer": {
      -        "description": "Over the signature line, e.g. Organizer",
      -        "maxLength": 40,
      -        "type": "string"
      -      },
      -      "to": {
      -        "description": "e.g. Awarded to",
      -        "maxLength": 40,
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "award",
      -      "name"
      -    ],
      -    "type": "object"
      -  },
      -  "maxItems": 90,
      -  "type": "array"
      -}
    • addedInput schema / properties / top3
      Added value: +{
      +  "description": "The top three of each award, not only the winners",
      +  "type": "boolean"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "slug",
      -  "certificates"
      -]New value: +[
      +  "slug"
      +]
  2. Added

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive, and the description reinforces this with 'Changes nothing', resolving any ambiguity from the 'Order' wording in the title. It adds real behavioral context beyond annotations: the 409 precondition, the organizer-key requirement, null links when the print font cannot render an award or name, and empty lists when there are no winners. It does not discuss rate limits or cost, but those are not evidently relevant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key constraint (when voting has closed, changes nothing) is front-loaded, and the return-shape sentences are dense but purposeful. The telegraphic phrasing is slightly run-on and a few index-mapping sentences repeat what the array names already imply.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return contract itself and does so thoroughly: the three parallel arrays, what each contains, and the null case. Authentication, the error precondition and the empty-result case are all covered, so an agent can call it and interpret the result without further help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already documented, and the description largely mirrors them ('top3: true for the top three'). It adds some value by tying top3 to per-award winners and by explaining the awards[i]/orders[i]/certificates[i] index correspondence, but it never explains the accent parameter's override behavior, leaving that entirely to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the specific resource (printed certificates per award winner) and the outcome (Zazzle pre-filled order links plus print images), so an agent knows exactly what it returns. It never mentions the analogous sibling get_poster_orders, so sibling differentiation is left to inference from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the trigger condition (use only after voting has closed, otherwise 409 not_closed) and the follow-up action (hand the links to the person, who orders and pays on Zazzle). It also gives an explicit alternative when a link is null: print that one from the dashboard instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources