Zovo Fair Draw
Server Details
Organize a prize draw that everyone can check.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 4 tools
Each tool maps to a distinct step in the draw lifecycle: create, add entrants, draw winners, and inspect results. The descriptions clearly separate side-effecting actions from read-only inspection and explicitly state what each tool does not do.
All tools use consistent snake_case verb_noun naming: add_draw_entries, create_prize_draw, draw_winners, show_draw_results. The pattern is predictable and readable despite slight verb variety (create/add/draw/show).
Four tools is well-scoped for a simple prize-draw workflow, with each tool earning its place. There are no redundant or filler tools.
The core workflow is covered: create a draw, add entries, draw winners, and view results. However, there are notable gaps around lifecycle management, such as removing or correcting entrants, cancelling/deleting a draw, and listing existing draws.
Available Tools
4 toolsadd_draw_entriesAdd names to prize drawAInspect
Use this when the organizer wants to add entrant names to a draw made with create_prize_draw, before the winners are drawn. Takes the private organizer link and a list of up to 100 names per call (send more in further calls). Duplicate names (ignoring case) are skipped and reported. Does not draw; does not remove names.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Entrant display names to add, up to 100 per call (send more in further calls), each up to 40 characters, one person per item, e.g. ["Ana", "Ben K.", "Chloe"]. First names or nicknames only. | |
| manage_url | Yes | The private organizer link of the draw, e.g. https://fair-draw.zovo.one/m/AbC123.../XyZ789... (contains /m/). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| seed | Yes | |
| added | No | |
| names | Yes | |
| prize | Yes | |
| title | Yes | |
| action | Yes | |
| status | Yes | |
| backups | Yes | |
| entries | Yes | |
| skipped | No | |
| winners | Yes | |
| drawn_at | Yes | |
| commitment | Yes | |
| expires_at | Yes | |
| manage_url | Yes | |
| public_url | Yes | |
| names_shown | Yes | |
| public_entry | Yes | |
| skipped_count | No | |
| backups_wanted | Yes | |
| winners_wanted | Yes | |
| entry_list_hash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, non-destructive, non-idempotent, open-world operation, and the description adds real behavior on top: duplicates are skipped case-insensitively and reported back, and input is capped at 100 names per call. It does not disclose auth expectations beyond 'private organizer link' or any error behavior for an invalid link, so it stops short of a 5.
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 sentences, front-loaded with the usage trigger, and every sentence carries a distinct fact: prerequisite, inputs, batching, dedupe, and scope exclusions. The parenthetical '(send more in further calls)' is the only mild echo of the schema.
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?
With an output schema present, return values need no explanation, and the description still covers the prerequisite draw, the private link requirement, the batch ceiling, duplicate handling, and scope boundaries. For a two-parameter mutation tool with full annotation and schema coverage, nothing an agent needs before calling is missing.
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 description coverage is 100%, so both parameters are already documented in detail, including the 100-item cap, the per-item length expectation, and the /m/ pattern of the organizer link. The description restates the batch limit and identifies manage_url as private, but adds no syntax or format meaning beyond the schema, so the baseline 3 applies.
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?
States a specific verb and resource ('add entrant names to a draw') and anchors it to the sibling that creates that resource ('a draw made with create_prize_draw'). An agent can distinguish it from draw_winners and show_draw_results without opening any schema.
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?
Gives an explicit trigger ('Use this when the organizer wants to add entrant names'), a timing condition ('before the winners are drawn'), and explicit exclusions ('Does not draw; does not remove names') that route the agent to the sibling tools for those actions. Both when-to-use and when-not-to-use are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_prize_drawCreate prize drawAInspect
Use this when the user wants a fair random pick of winners from a group: a giveaway, door prize, raffle without tickets, classroom or team pick. Publishes a draw page with a public link where entrants add their names (or only the organizer adds them), and returns a private organizer link. Optionally adds a first list of names. Up to 500 entries, 1 to 20 winners, up to 10 backups. For free draws only: set free_entry to true to confirm nobody pays to enter; it does not handle money. Does not draw yet; use draw_winners for that.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional short note shown on the page, up to 400 characters, e.g. Draw on Friday at the team call. | |
| names | No | Entrant display names, up to 500, each up to 40 characters, one person per item, e.g. ["Ana", "Ben K.", "Chloe"]. First names or nicknames only. | |
| prize | No | What the winners get, up to 200 characters, e.g. One 50-minute massage voucher. | |
| title | Yes | Short title of the draw, up to 120 characters, e.g. Team lunch voucher draw. | |
| backups | No | Number of backup winners drawn in order after the winners, 0 to 10 (default 0). Example: 2. | |
| winners | No | Number of winners, 1 to 20 (default 1). Example: 2. | |
| free_entry | Yes | Set true to confirm nobody pays to enter and no money is pooled; this tool does not handle money. | |
| public_entry | No | true (default) = people add their own name on the public page; false = only the organizer adds names. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| seed | Yes | |
| added | No | |
| names | Yes | |
| prize | Yes | |
| title | Yes | |
| action | Yes | |
| status | Yes | |
| backups | Yes | |
| entries | Yes | |
| skipped | No | |
| winners | Yes | |
| drawn_at | Yes | |
| commitment | Yes | |
| expires_at | Yes | |
| manage_url | Yes | |
| public_url | Yes | |
| names_shown | Yes | |
| public_entry | Yes | |
| skipped_count | No | |
| backups_wanted | Yes | |
| winners_wanted | Yes | |
| entry_list_hash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it explains that a public draw page and link are published, a private organizer link is returned, names may be added by the organizer or entrants, and there are entry and winner limits. It also discloses that the tool does not handle money and does not draw winners yet.
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 primary use case and then layers constraints and alternatives efficiently. It is appropriately sized and every sentence contributes actionable context.
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 the annotations, rich input schema, and presence of an output schema, the description supplies everything needed to select and invoke the tool correctly. It covers purpose, setup behavior, limits, free-entry constraint, and the handoff to draw_winners.
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 full description coverage, so the baseline is 3. The description adds useful semantics around free_entry (confirming no payment is involved) and public_entry behavior (entrants add names versus organizer-only), though the size limits it mentions are already present in 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 states a specific verb and resource: creating a prize draw for a fair random pick of winners. It clearly distinguishes the tool from draw_winners by saying "Does not draw yet; use draw_winners for that."
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 explicit when-to-use guidance (giveaway, door prize, raffle without tickets, classroom or team pick) and a when-not-to-use condition (drawing is handled by draw_winners). It also states the free-draw constraint and that free_entry must be true to confirm nobody pays to enter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_winnersDraw prize winnersADestructiveIdempotentInspect
Use this when the organizer is ready to pick the winners of a draw made with create_prize_draw. Takes the private organizer link. Closes entries, picks the winners and backups with the published method, and reveals the seed on the public page so anyone can verify. The result is final: running it again returns the same winners. Needs at least one entry. Does not add or remove names and does not redraw.
| Name | Required | Description | Default |
|---|---|---|---|
| manage_url | Yes | The private organizer link of the draw, e.g. https://fair-draw.zovo.one/m/AbC123.../XyZ789... (contains /m/). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| seed | Yes | |
| added | No | |
| names | Yes | |
| prize | Yes | |
| title | Yes | |
| action | Yes | |
| status | Yes | |
| backups | Yes | |
| entries | Yes | |
| skipped | No | |
| winners | Yes | |
| drawn_at | Yes | |
| commitment | Yes | |
| expires_at | Yes | |
| manage_url | Yes | |
| public_url | Yes | |
| names_shown | Yes | |
| public_entry | Yes | |
| skipped_count | No | |
| backups_wanted | Yes | |
| winners_wanted | Yes | |
| entry_list_hash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses that entries are closed (the concrete destructive effect behind destructiveHint), that the seed is published on the public page for verification, that a minimum of one entry is required, and that reruns are safe because results are final — matching idempotentHint with a plain-language reason.
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?
Five short sentences, front-loaded with the trigger condition, then mechanics, then the idempotency guarantee and exclusions — no filler 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?
An output schema exists so return values need not be explained; the description instead covers the preconditions, side effects, verifiability, and repeat-run behavior an agent needs before invoking a destructive, one-way operation.
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?
Only one parameter and schema coverage is 100%, so the schema already documents manage_url with an example format. The description only restates that it takes the private organizer link, adding no new syntax or constraints.
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?
States a specific verb and resource ('pick the winners of a draw'), names the sibling that creates the draw it operates on, and distinguishes itself from add_draw_entries and show_draw_results by ruling out adding names and redrawing.
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 conditions use on the organizer being ready, references the create_prize_draw prerequisite, and states exclusions ('does not add or remove names and does not redraw'), which routes the agent away from the entry and results tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_draw_resultsShow prize drawARead-onlyIdempotentInspect
Use this when the user wants the state of a draw made with create_prize_draw: number of entries, the names, the commitment, and after the draw the winners, backups and proof values. Takes the private organizer link. Does not change the draw.
| Name | Required | Description | Default |
|---|---|---|---|
| manage_url | Yes | The private organizer link of the draw, e.g. https://fair-draw.zovo.one/m/AbC123.../XyZ789... (contains /m/). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | No | |
| seed | Yes | |
| added | No | |
| names | Yes | |
| prize | Yes | |
| title | Yes | |
| action | Yes | |
| status | Yes | |
| backups | Yes | |
| entries | Yes | |
| skipped | No | |
| winners | Yes | |
| drawn_at | Yes | |
| commitment | Yes | |
| expires_at | Yes | |
| manage_url | Yes | |
| public_url | Yes | |
| names_shown | Yes | |
| public_entry | Yes | |
| skipped_count | No | |
| backups_wanted | Yes | |
| winners_wanted | Yes | |
| entry_list_hash | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the lower bar applies. The description still adds real context: access is gated by possession of the private organizer link (an authorization detail absent from annotations) and the output shape changes before versus after the draw. "Does not change the draw" does restate readOnlyHint, which is minor redundancy rather than contradiction.
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 short sentences, front-loaded with the usage trigger, then the input, then the safety note. No filler and every clause carries information the agent needs.
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 single-parameter read tool with full annotation coverage and an output schema, the description covers trigger, prerequisite, authorization model and a preview of returned content. Nothing required for correct invocation is missing, and listing return fields is mild redundancy rather than a gap.
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% and the single parameter's schema entry already explains that manage_url is the private organizer link containing /m/ and gives an example. "Takes the private organizer link" echoes the schema without adding format, validation, or failure-mode detail, so baseline 3 applies.
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 names a specific operation (retrieve the state of a draw) and enumerates exactly what is returned: entry count, names, commitment, and post-draw winners, backups and proof values. It also anchors the tool to its sibling create_prize_draw, so an agent can separate it from draw_winners and add_draw_entries without opening any schema.
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?
"Use this when the user wants the state of a draw made with create_prize_draw" gives a clear triggering condition and implies the prerequisite that the draw must already exist. It stops short of naming an explicit alternative or a when-not-to-use case (e.g. versus draw_winners for actually performing the draw), so it is strong but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
add_draw_entries - First observed
create_prize_draw - First observed
draw_winners - First observed
show_draw_results
Related MCP Connectors
Free: ed25519 hash timestamps, randomness tests, lottery data. Open falsification challenge.
Run transparent giveaways on Instagram, X, TikTok and YouTube posts. Draw in your browser.
Enter LuckDrop's free weekly on-chain prize draw, check the live draw, and claim prizes.
Draw names for Secret Santa without sign-ups or email addresses.
Related MCP Servers
AlicenseAqualityBmaintenanceEnables fair random picks, team splits and wheel spins inside chat assistants and other MCP clients, with results shown in chat. It also runs certified draws that seal the winner before the spin and publish a verifiable public proof page, so anyone can check the outcome.8MIT- AlicenseNot gradedqualityBmaintenanceEnables running verifiable raffle draws using the public drand randomness beacon: pick winners instantly, schedule a future draw sealed to a committed drand round, and later verify results by recomputing winners from the published randomness.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server enabling provably-fair random selection and winner picking using drand randomness, with tools for instant picks, scheduled draws, and verification.MIT

provably-fair-mcpofficial
AlicenseNot gradedqualityBmaintenanceMCP server for provably-fair random selection using public drand randomness, enabling verifiable winner picks for giveaways, raffles, and tie-breaks.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.