Koskamo

Zovo Raffle Tickets MCP

Prints numbered raffle tickets with matching stubs for fundraisers and performs fair random draws from sold numbers or name lists, providing a draw log with SHA-256 fingerprint.

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.

Zovo Raffle Tickets MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-08Published by Zovo
MCP endpoint (Streamable HTTP)
https://raffle-tickets.zovo.one/mcp
Vendor documentation

What its tools do

2 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

2 of 2 have a description · 2 of 2 declare behavior hints · 2 of 2 with parameters document them all

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

  • Make 200 raffle tickets for the Spring Gala Raffle on May 3, $5 each, grand prize a 55-inch TV
  • Draw 3 winners from tickets 1-250 and 301-420, excluding 17 and 42
  • Pick a raffle winner from: Ava, Liam, Noah, Ava, Mia

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
raffle-tickets 1.0.0
MCP protocol negotiated in check
2025-11-25
Tools
2 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "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.

Zovo Raffle Tickets prints numbered raffle tickets with matching stubs (generate_raffle_tickets) and draws winners fairly from ticket numbers or names (draw_raffle_winners), with a draw log. It does not sell tickets or give legal advice about raffles.

Tools

2 advertised

generate_raffle_tickets — Generate raffle tickets
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

generate_raffle_tickets input schema
{
  "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 - pta@example.org - (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."
    }
  }
}
generate_raffle_tickets output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "event_name",
    "ticket_count",
    "first_number",
    "last_number",
    "per_page",
    "sheets",
    "paper",
    "ticket_size",
    "price",
    "prizes",
    "stub_fields",
    "assumptions",
    "warnings",
    "downloads"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "tickets"
    },
    "paper": {
      "type": "string"
    },
    "price": {
      "type": "string"
    },
    "prizes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "sheets": {
      "type": "number"
    },
    "per_page": {
      "type": "number"
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "pdf"
      ],
      "properties": {
        "pdf": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "event_name": {
      "type": "string"
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "last_number": {
      "type": "string"
    },
    "stub_fields": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "ticket_size": {
      "type": "string"
    },
    "first_number": {
      "type": "string"
    },
    "ticket_count": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
generate_raffle_tickets annotations
{
  "title": "Generate raffle tickets",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
draw_raffle_winners — Draw raffle winners
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

draw_raffle_winners input schema
{
  "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."
    }
  }
}
draw_raffle_winners output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "event_name",
    "entry_count",
    "eligible_count",
    "excluded_count",
    "entry_type",
    "winners",
    "alternates",
    "drawn_at_utc",
    "drawn_at_new_york",
    "method",
    "entry_fingerprint_sha256",
    "assumptions",
    "warnings",
    "downloads"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "draw"
    },
    "method": {
      "type": "string"
    },
    "winners": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "order",
          "entry",
          "prize"
        ],
        "properties": {
          "entry": {
            "type": "string"
          },
          "order": {
            "type": "number"
          },
          "prize": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "downloads": {
      "type": "object",
      "required": [
        "log_pdf",
        "log_csv"
      ],
      "properties": {
        "log_csv": {
          "type": "string"
        },
        "log_pdf": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "alternates": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "order",
          "entry"
        ],
        "properties": {
          "entry": {
            "type": "string"
          },
          "order": {
            "type": "number"
          }
        },
        "additionalProperties": false
      }
    },
    "entry_type": {
      "type": "string"
    },
    "event_name": {
      "type": "string"
    },
    "assumptions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "entry_count": {
      "type": "number"
    },
    "drawn_at_utc": {
      "type": "string"
    },
    "eligible_count": {
      "type": "number"
    },
    "excluded_count": {
      "type": "number"
    },
    "drawn_at_new_york": {
      "type": "string"
    },
    "entry_fingerprint_sha256": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
draw_raffle_winners annotations
{
  "title": "Draw raffle winners",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

raffle-tickets-widget — Zovo Raffle Tickets view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Raffle Tickets.

raffle-tickets-widget URI
ui://widget/raffle-tickets-v2-1.0.0-2084a1b23e8008cd6fcbe954307412c68b75737656b2f45be52a0e44d2f57c1c.html

MIME type: text/html;profile=mcp-app

raffle-tickets-widget-legacy — Zovo Raffle Tickets view (previous versions)

Advertised by the server during the last successful anonymous check.

raffle-tickets-widget-legacy URI template
ui://widget/raffle-tickets-{version}.html

MIME type: text/html;profile=mcp-app

30-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
782 ms
95th percentile latency
782 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 782 ms · metadata changed · 2 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-raffle-tickets-mcp https://raffle-tickets.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-raffle-tickets-mcp --url https://raffle-tickets.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-raffle-tickets-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-raffle-tickets-mcp": {
      "url": "https://raffle-tickets.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-raffle-tickets-mcp": {
      "type": "streamableHttp",
      "url": "https://raffle-tickets.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-raffle-tickets-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-raffle-tickets-mcp": {
      "type": "http",
      "url": "https://raffle-tickets.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-raffle-tickets-mcp https://raffle-tickets.zovo.one/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://raffle-tickets.zovo.one/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-raffle-tickets-mcp": {
      "serverUrl": "https://raffle-tickets.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Raffle Tickets MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.