Zovo Fair Draw MCP
Organize a prize draw that everyone can check. Zovo Fair Draw makes a hosted page for a giveaway, a door prize, a classroom pick or a team raffle without tickets. Entrants add their name from one link, or you paste the list. From the moment it is made, the page shows a SHA-256 commitment of a secret seed and the time it was made. At the draw, the seed is revealed and the winners follow from a published algorithm, so anyone can re-run it with a short Python script and get the same names.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://fair-draw.zovo.one/mcpWhat its tools do
4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (1)
Can change data (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Run a prize draw for a team lunch voucher
- Make a fair draw with a provided list of names
- Draw the winners for a prize draw
- Export entries and results as CSV
Source and maintenance
Protocol and capabilities
- Server
- fair-draw 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 4 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"resources": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
4 advertised
create_prize_draw — Create prize draw
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"free_entry"
],
"properties": {
"note": {
"type": "string",
"maxLength": 800,
"description": "Optional short note shown on the page, up to 400 characters, e.g. Draw on Friday at the team call."
},
"names": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"maxItems": 500,
"description": "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": {
"type": "string",
"maxLength": 400,
"description": "What the winners get, up to 200 characters, e.g. One 50-minute massage voucher."
},
"title": {
"type": "string",
"maxLength": 240,
"description": "Short title of the draw, up to 120 characters, e.g. Team lunch voucher draw."
},
"backups": {
"type": "integer",
"maximum": 10,
"minimum": 0,
"description": "Number of backup winners drawn in order after the winners, 0 to 10 (default 0). Example: 2."
},
"winners": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Number of winners, 1 to 20 (default 1). Example: 2."
},
"free_entry": {
"type": "boolean",
"description": "Set true to confirm nobody pays to enter and no money is pooled; this tool does not handle money."
},
"public_entry": {
"type": "boolean",
"description": "true (default) = people add their own name on the public page; false = only the organizer adds names."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"prize",
"winners_wanted",
"backups_wanted",
"public_entry",
"entries",
"names",
"names_shown",
"status",
"commitment",
"winners",
"backups",
"seed",
"entry_list_hash",
"drawn_at",
"expires_at",
"public_url",
"manage_url",
"action"
],
"properties": {
"note": {
"type": "string"
},
"seed": {
"type": [
"string",
"null"
]
},
"added": {
"type": "number"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"prize": {
"type": "string"
},
"title": {
"type": "string"
},
"action": {
"type": "string"
},
"status": {
"type": "string"
},
"backups": {
"type": "array",
"items": {
"type": "string"
}
},
"entries": {
"type": "number"
},
"skipped": {
"type": "array",
"items": {
"type": "string"
}
},
"winners": {
"type": "array",
"items": {
"type": "string"
}
},
"drawn_at": {
"type": [
"string",
"null"
]
},
"commitment": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"manage_url": {
"type": "string"
},
"public_url": {
"type": "string"
},
"names_shown": {
"type": "number"
},
"public_entry": {
"type": "boolean"
},
"skipped_count": {
"type": "number"
},
"backups_wanted": {
"type": "number"
},
"winners_wanted": {
"type": "number"
},
"entry_list_hash": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Create prize draw",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}add_draw_entries — Add names to prize draw
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"manage_url",
"names"
],
"properties": {
"names": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80
},
"maxItems": 100,
"description": "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": {
"type": "string",
"maxLength": 400,
"description": "The private organizer link of the draw, e.g. https://fair-draw.zovo.one/m/AbC123.../XyZ789... (contains /m/)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"prize",
"winners_wanted",
"backups_wanted",
"public_entry",
"entries",
"names",
"names_shown",
"status",
"commitment",
"winners",
"backups",
"seed",
"entry_list_hash",
"drawn_at",
"expires_at",
"public_url",
"manage_url",
"action"
],
"properties": {
"note": {
"type": "string"
},
"seed": {
"type": [
"string",
"null"
]
},
"added": {
"type": "number"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"prize": {
"type": "string"
},
"title": {
"type": "string"
},
"action": {
"type": "string"
},
"status": {
"type": "string"
},
"backups": {
"type": "array",
"items": {
"type": "string"
}
},
"entries": {
"type": "number"
},
"skipped": {
"type": "array",
"items": {
"type": "string"
}
},
"winners": {
"type": "array",
"items": {
"type": "string"
}
},
"drawn_at": {
"type": [
"string",
"null"
]
},
"commitment": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"manage_url": {
"type": "string"
},
"public_url": {
"type": "string"
},
"names_shown": {
"type": "number"
},
"public_entry": {
"type": "boolean"
},
"skipped_count": {
"type": "number"
},
"backups_wanted": {
"type": "number"
},
"winners_wanted": {
"type": "number"
},
"entry_list_hash": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Add names to prize draw",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}draw_winners — Draw prize winners
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"manage_url"
],
"properties": {
"manage_url": {
"type": "string",
"maxLength": 400,
"description": "The private organizer link of the draw, e.g. https://fair-draw.zovo.one/m/AbC123.../XyZ789... (contains /m/)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"prize",
"winners_wanted",
"backups_wanted",
"public_entry",
"entries",
"names",
"names_shown",
"status",
"commitment",
"winners",
"backups",
"seed",
"entry_list_hash",
"drawn_at",
"expires_at",
"public_url",
"manage_url",
"action"
],
"properties": {
"note": {
"type": "string"
},
"seed": {
"type": [
"string",
"null"
]
},
"added": {
"type": "number"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"prize": {
"type": "string"
},
"title": {
"type": "string"
},
"action": {
"type": "string"
},
"status": {
"type": "string"
},
"backups": {
"type": "array",
"items": {
"type": "string"
}
},
"entries": {
"type": "number"
},
"skipped": {
"type": "array",
"items": {
"type": "string"
}
},
"winners": {
"type": "array",
"items": {
"type": "string"
}
},
"drawn_at": {
"type": [
"string",
"null"
]
},
"commitment": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"manage_url": {
"type": "string"
},
"public_url": {
"type": "string"
},
"names_shown": {
"type": "number"
},
"public_entry": {
"type": "boolean"
},
"skipped_count": {
"type": "number"
},
"backups_wanted": {
"type": "number"
},
"winners_wanted": {
"type": "number"
},
"entry_list_hash": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Draw prize winners",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}show_draw_results — Show prize draw
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.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"manage_url"
],
"properties": {
"manage_url": {
"type": "string",
"maxLength": 400,
"description": "The private organizer link of the draw, e.g. https://fair-draw.zovo.one/m/AbC123.../XyZ789... (contains /m/)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"prize",
"winners_wanted",
"backups_wanted",
"public_entry",
"entries",
"names",
"names_shown",
"status",
"commitment",
"winners",
"backups",
"seed",
"entry_list_hash",
"drawn_at",
"expires_at",
"public_url",
"manage_url",
"action"
],
"properties": {
"note": {
"type": "string"
},
"seed": {
"type": [
"string",
"null"
]
},
"added": {
"type": "number"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"prize": {
"type": "string"
},
"title": {
"type": "string"
},
"action": {
"type": "string"
},
"status": {
"type": "string"
},
"backups": {
"type": "array",
"items": {
"type": "string"
}
},
"entries": {
"type": "number"
},
"skipped": {
"type": "array",
"items": {
"type": "string"
}
},
"winners": {
"type": "array",
"items": {
"type": "string"
}
},
"drawn_at": {
"type": [
"string",
"null"
]
},
"commitment": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"manage_url": {
"type": "string"
},
"public_url": {
"type": "string"
},
"names_shown": {
"type": "number"
},
"public_entry": {
"type": "boolean"
},
"skipped_count": {
"type": "number"
},
"backups_wanted": {
"type": "number"
},
"winners_wanted": {
"type": "number"
},
"entry_list_hash": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": false
}{
"title": "Show prize draw",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
fair-draw-widget — Zovo Fair Draw view
Interactive view for Zovo Fair Draw.
ui://widget/fair-draw-v1-1.0.0-e6c16df44c7ef08d9ac8f2dc5cfcf11d3d2dce48d1efcd042be02b1a2a31fbfd.htmlfair-draw-widget-legacy — Zovo Fair Draw view (previous versions)
ui://widget/fair-draw-{version}.html30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1067 ms
- 95th percentile latency
- 1067 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1067 ms · metadata changed · 4 tool(s), 1 resource(s), 1 resource template(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http zovo-fair-draw-mcp https://fair-draw.zovo.one/mcpCodex
codex mcp add zovo-fair-draw-mcp --url https://fair-draw.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-fair-draw-mcp": {
"url": "https://fair-draw.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-fair-draw-mcp": {
"type": "streamableHttp",
"url": "https://fair-draw.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-fair-draw-mcp": {
"type": "http",
"url": "https://fair-draw.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-fair-draw-mcp https://fair-draw.zovo.one/mcpClaude Desktop
https://fair-draw.zovo.one/mcpWindsurf
{
"mcpServers": {
"zovo-fair-draw-mcp": {
"serverUrl": "https://fair-draw.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo Fair Draw MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.