Print numbered raffle tickets with matching stubs for a fundraiser.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants to draw a raffle winner, pick random winners from ticket numbers or names, or use a raffle number generator with no repeats. Draws winners (and optional alternates) without replacement with a secure random number generator from a range such as 1-500, several sold ranges, or a list of names (a name listed twice has two entries); can exclude numbers and assign prizes in draw order. Returns the ordered winners and a draw log PDF and CSV with time, method, entry count and an entry-list fingerprint. Each call is a new draw, so do not call it again to change a result. Does not sell tickets or take payments, and is not legal advice: raffle rules vary by place.
Prizes in draw order; the first winner gets the first prize. Example: ["TV", "Gift card", "Mug"].
What is in the drum: sold ticket numbers, ranges or names, as a list or pasted lines. Ranges like 1-250 or A-0001 to A-0100 are expanded. A name listed 3 times has 3 entries. Example: "1-250, 301-420" or ["Ava Patel", "Liam Chen", "Ava Patel"].
Numbers or names to leave out before the draw, e.g. void tickets or earlier winners: "17, 42".
How many winners to draw, 1 to 100. Default 1, or the number of prizes when prizes are given.
Backup winners drawn after the winners, in order, for unclaimed prizes. Default 0.
Event name for the draw log, e.g. Spring Gala Raffle.
Instead of entries: the last ticket number of a range, e.g. 500.
Instead of entries: the first ticket number of a range, e.g. 1.
With names: skip further entries of someone who already won. Default true.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http raffle-tickets https://raffle-tickets.zovo.one/mcp
Use this when the user wants to draw a raffle winner, pick random winners from ticket numbers or names, or use a raffle number generator with no repeats. Draws winners (and optional alternates) without replacement with a secure random number generator from a range such as 1-500, several sold ranges, or a list of names (a name listed twice has two entries); can exclude numbers and assign prizes in draw order. Returns the ordered winners and a draw log PDF and CSV with time, method, entry count and an entry-list fingerprint. Each call is a new draw, so do not call it again to change a result. Does not sell tickets or take payments, and is not legal advice: raffle rules vary by place.
| Argument | Type | Description |
|---|---|---|
| prizes | any | Prizes in draw order; the first winner gets the first prize. Example: ["TV", "Gift card", "Mug"]. |
| entries | any | What is in the drum: sold ticket numbers, ranges or names, as a list or pasted lines. Ranges like 1-250 or A-0001 to A-0100 are expanded. A name listed 3 times has 3 entries. Example: "1-250, 301-420" or ["Ava Patel", "Liam Chen", "Ava Patel"]. |
| exclude | any | Numbers or names to leave out before the draw, e.g. void tickets or earlier winners: "17, 42". |
| winners | number | string | null | How many winners to draw, 1 to 100. Default 1, or the number of prizes when prizes are given. |
| alternates | number | string | null | Backup winners drawn after the winners, in order, for unclaimed prizes. Default 0. |
| event_name | string | null | Event name for the draw log, e.g. Spring Gala Raffle. |
| last_number | number | string | null | Instead of entries: the last ticket number of a range, e.g. 500. |
| first_number | number | string | null | Instead of entries: the first ticket number of a range, e.g. 1. |
| one_prize_per_person | boolean | string | null | With names: skip further entries of someone who already won. Default true. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"prizes": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
{
"type": "null"
}
],
"description": "Prizes in draw order; the first winner gets the first prize. Example: [\"TV\", \"Gift card\", \"Mug\"]."
},
"entries": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": [
"string",
"number",
"null"
]
}
}
]
},
{
"type": "null"
}
],
"description": "What is in the drum: sold ticket numbers, ranges or names, as a list or pasted lines. Ranges like 1-250 or A-0001 to A-0100 are expanded. A name listed 3 times has 3 entries. Example: \"1-250, 301-420\" or [\"Ava Patel\", \"Liam Chen\", \"Ava Patel\"]."
},
"exclude": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": [
"string",
"number",
"null"
]
}
}
]
},
{
"type": "null"
}
],
"description": "Numbers or names to leave out before the draw, e.g. void tickets or earlier winners: \"17, 42\"."
},
"winners": {
"type": [
"number",
"string",
"null"
],
"description": "How many winners to draw, 1 to 100. Default 1, or the number of prizes when prizes are given."
},
"alternates": {
"type": [
"number",
"string",
"null"
],
"description": "Backup winners drawn after the winners, in order, for unclaimed prizes. Default 0."
},
"event_name": {
"type": [
"string",
"null"
],
"description": "Event name for the draw log, e.g. Spring Gala Raffle."
},
"last_number": {
"type": [
"number",
"string",
"null"
],
"description": "Instead of entries: the last ticket number of a range, e.g. 500."
},
"first_number": {
"type": [
"number",
"string",
"null"
],
"description": "Instead of entries: the first ticket number of a range, e.g. 1."
},
"one_prize_per_person": {
"type": [
"boolean",
"string",
"null"
],
"description": "With names: skip further entries of someone who already won. Default true."
}
}
}Use this when the user wants printable raffle tickets, a raffle ticket template, or numbered tickets with stubs for a fundraiser. Returns a print-ready PDF with 10 or 8 numbered tickets per US Letter or A4 sheet, each with a stub carrying the same number, dashed cut lines, and the event name, date, prizes, price and contact line; numbers run in order across sheets with no gaps or repeats. Up to 2,000 tickets per call. Does not sell tickets, collect payments or check whether a raffle is legal where the user lives.
| Argument | Type | Description |
|---|---|---|
| date | string | null | Draw date and time as you want it printed, e.g. May 3, 2027 at 7 pm or 2027-05-03. |
| color | string | null | Accent colour as a name or hex, e.g. blue, green or #1D5FC4. Default red. |
| count | number | string | null | How many tickets, 1 to 2,000. Default 100. Example: 200. |
| paper | string | null | letter (US Letter, default) or a4. |
| price | number | string | null | Ticket price as printed, e.g. 5 (printed $5), "$5 or 5 for $20", or "€2". |
| digits | number | string | null | Minimum digits per number with leading zeros, e.g. 4 gives 0001. Default 4. |
| prefix | string | null |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
| Text before each number, e.g. A- gives A-0001. Default none. |
| prizes | any | Prize lines, up to 3 printed, e.g. ["Grand prize: 55-inch TV", "2nd: $100 gift card"] or one line. |
| contact | string | null | Organizer contact line, e.g. PTA - [email protected] - (555) 010-2000. |
| location | string | null | Where the draw happens, e.g. Lincoln High School gym. |
| per_page | number | string | null | Tickets per sheet: 10 (2 x 5, each 3.75 x 2 in) or 8 (2 x 4, each 3.75 x 2.5 in). Default 10. |
| end_number | number | string | null | Last ticket number instead of count, e.g. 500 for tickets 1 to 500. |
| event_name | string | null | Event or fundraiser name printed on each ticket, e.g. Spring Gala Raffle. Default: Raffle. |
| fine_print | string | null | Short line such as Need not be present to win. |
| stub_fields | any | Write-in lines on the stub, up to 3. Default Name and Phone. Example: Name, Phone, Email. |
| start_number | number | string | null | First ticket number. Default 1. Example: 1001. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"date": {
"type": [
"string",
"null"
],
"description": "Draw date and time as you want it printed, e.g. May 3, 2027 at 7 pm or 2027-05-03."
},
"color": {
"type": [
"string",
"null"
],
"description": "Accent colour as a name or hex, e.g. blue, green or #1D5FC4. Default red."
},
"count": {
"type": [
"number",
"string",
"null"
],
"description": "How many tickets, 1 to 2,000. Default 100. Example: 200."
},
"paper": {
"type": [
"string",
"null"
],
"description": "letter (US Letter, default) or a4."
},
"price": {
"type": [
"number",
"string",
"null"
],
"description": "Ticket price as printed, e.g. 5 (printed $5), \"$5 or 5 for $20\", or \"€2\"."
},
"digits": {
"type": [
"number",
"string",
"null"
],
"description": "Minimum digits per number with leading zeros, e.g. 4 gives 0001. Default 4."
},
"prefix": {
"type": [
"string",
"null"
],
"description": "Text before each number, e.g. A- gives A-0001. Default none."
},
"prizes": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
{
"type": "null"
}
],
"description": "Prize lines, up to 3 printed, e.g. [\"Grand prize: 55-inch TV\", \"2nd: $100 gift card\"] or one line."
},
"contact": {
"type": [
"string",
"null"
],
"description": "Organizer contact line, e.g. PTA - [email protected] - (555) 010-2000."
},
"location": {
"type": [
"string",
"null"
],
"description": "Where the draw happens, e.g. Lincoln High School gym."
},
"per_page": {
"type": [
"number",
"string",
"null"
],
"description": "Tickets per sheet: 10 (2 x 5, each 3.75 x 2 in) or 8 (2 x 4, each 3.75 x 2.5 in). Default 10."
},
"end_number": {
"type": [
"number",
"string",
"null"
],
"description": "Last ticket number instead of count, e.g. 500 for tickets 1 to 500."
},
"event_name": {
"type": [
"string",
"null"
],
"description": "Event or fundraiser name printed on each ticket, e.g. Spring Gala Raffle. Default: Raffle."
},
"fine_print": {
"type": [
"string",
"null"
],
"description": "Short line such as Need not be present to win."
},
"stub_fields": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
{
"type": "null"
}
],
"description": "Write-in lines on the stub, up to 3. Default Name and Phone. Example: Name, Phone, Email."
},
"start_number": {
"type": [
"number",
"string",
"null"
],
"description": "First ticket number. Default 1. Example: 1001."
}
}
}