Zovo Bingo Card Maker MCP
Generates printable bingo cards from custom words or classic number sets, providing PDFs, caller sheets, and CSVs. It supports big-screen calling and claim checking, allowing agents to create party, classroom, or goal bingo sets without sign-in.
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://bingo-cards.zovo.one/mcpWhat you can do with it
- Generate printable bingo cards from custom word lists
- Create classic 1-75 or UK 1-90 bingo sets
- Produce caller sheets with shuffled call orders
- Check claimed bingo wins by card number
Source and maintenance
Protocol and capabilities
- Server
- bingo-cards 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 3 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
3 advertised
generate_bingo_cards — Generate bingo cards
Use this when the user wants printable bingo cards: a bingo card generator or bingo card maker for a holiday party, classroom, baby shower, team meeting, or any game with their own words or phrases, or classic number bingo (1-75) or UK 90-ball tickets. Makes 1-200 different cards (3x3, 4x4 or 5x5, free centre on or off) with each item spread evenly, optionally so that no two cards share a winning line. Returns card 1, balance and uniqueness numbers, and links to a cards PDF (1, 2, 4 or 6 per page, cut lines), a caller sheet PDF and a CSV. Does not add pictures, and does not draw items or check claims (use show_bingo_caller). Not for a single personal goals card (use generate_goal_bingo) or for prize or money games.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"mode": {
"enum": [
"words",
"numbers_75",
"numbers_90"
],
"type": "string",
"description": "words (default): your own words or phrases. numbers_75: classic US bingo, 5x5 with B 1-15, I 16-30, N 31-45, G 46-60, O 61-75. numbers_90: UK-style 3x9 tickets with 15 numbers from 1-90, printed in strips of 6. Example: words."
},
"seed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Card set number from an earlier result, e.g. 4242. The same items, options and seed always rebuild the same cards. Leave out for a new random set."
},
"items": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "number"
}
]
},
"maxItems": 400,
"description": "For mode words: the words or phrases to put on the cards, one per entry, e.g. [\"Ugly sweater\", \"Mistletoe\", \"Hot cocoa\"]. Need at least 24 for 5x5 with a free centre, 25 without, 16 for 4x4, 8 or 9 for 3x3. Up to 300, each up to 100 characters."
},
"paper": {
"enum": [
"letter",
"a4"
],
"type": "string",
"description": "Paper size for the PDFs, e.g. letter (default) or a4."
},
"title": {
"type": "string",
"maxLength": 120,
"description": "Heading printed on every card, e.g. Holiday Party Bingo. Default Bingo."
},
"grid_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Card size for mode words: 3, 4 or 5 (default 5), e.g. 5. Classic numbers_75 is always 5x5; numbers_90 tickets are always 3x9."
},
"card_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "How many different cards (or tickets) to make, 1-200, e.g. 30. Default 30."
},
"free_label": {
"type": "string",
"maxLength": 40,
"description": "Text in the free centre square, e.g. FREE (default), Santa, or Baby."
},
"free_space": {
"type": "boolean",
"description": "Free centre square on 3x3 and 5x5 cards, e.g. true. Default true for 5x5 and false for 3x3; 4x4 cards have no centre."
},
"accent_color": {
"type": "string",
"maxLength": 30,
"description": "Theme colour as hex or a name, e.g. #2B8A3E, red, green, gold, pink, purple, teal, christmas. Default raspberry #C2255C."
},
"unique_lines": {
"type": "boolean",
"description": "true = no two cards share an identical winning line (row, column or diagonal), so two players never complete the very same line. Needs enough items; the tool explains if the request is not possible. Default false (cards are always all different)."
},
"cards_per_page": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Cards per printed page: 1, 2, 4 or 6, e.g. 2. Default 2 (6 for 90-ball tickets). Pages get dashed cut lines."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"view",
"title",
"mode",
"grid",
"free_space",
"free_label",
"card_count",
"item_count",
"cells_per_card",
"balance",
"uniqueness",
"seed",
"card_1",
"caller_args",
"pdf_pages",
"warnings",
"downloads"
],
"properties": {
"grid": {
"type": "string"
},
"mode": {
"type": "string"
},
"seed": {
"type": "number"
},
"view": {
"type": "string"
},
"title": {
"type": "string"
},
"card_1": {
"type": "array",
"items": {
"type": "array",
"items": {
"type": "string"
}
}
},
"balance": {
"type": "object",
"required": [
"min_cards_per_item",
"max_cards_per_item",
"spread",
"note"
],
"properties": {
"note": {
"type": "string"
},
"spread": {
"type": "number"
},
"max_cards_per_item": {
"type": "number"
},
"min_cards_per_item": {
"type": "number"
}
},
"additionalProperties": false
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"cards_pdf",
"caller_pdf",
"csv"
],
"properties": {
"csv": {
"type": "string"
},
"cards_pdf": {
"type": "string"
},
"caller_pdf": {
"type": "string"
}
},
"additionalProperties": false
},
"pdf_pages": {
"type": "number"
},
"card_count": {
"type": "number"
},
"free_label": {
"type": "string"
},
"free_space": {
"type": "boolean"
},
"item_count": {
"type": "number"
},
"uniqueness": {
"type": "object",
"required": [
"all_cards_different",
"distinct_item_sets",
"unique_lines",
"cards_sharing_a_line"
],
"properties": {
"unique_lines": {
"type": "boolean"
},
"distinct_item_sets": {
"type": "number"
},
"all_cards_different": {
"type": "boolean"
},
"cards_sharing_a_line": {
"type": "number"
}
},
"additionalProperties": false
},
"caller_args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"cells_per_card": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Generate bingo cards",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}show_bingo_caller — Show bingo caller
Use this when the user is running a bingo game: call or draw the next word or number at random, show what has been called on a big screen, check whether a claimed bingo on card number N is real (which line, at which call, and who won first), or list all cards that have bingo now. Pass the same items and the caller_args (mode, grid_size, free_space, card_count, seed, unique_lines) from generate_bingo_cards, plus everything called so far in order. Draws use secure randomness. Does not make or print cards and does not keep game state between calls: always send the full called list. Not for prize, betting or money games.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"mode": {
"enum": [
"words",
"numbers_75",
"numbers_90"
],
"type": "string",
"description": "words (default): your own words or phrases. numbers_75: classic US bingo, 5x5 with B 1-15, I 16-30, N 31-45, G 46-60, O 61-75. numbers_90: UK-style 3x9 tickets with 15 numbers from 1-90, printed in strips of 6. Example: words."
},
"seed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Card set number from an earlier result, e.g. 4242. The same items, options and seed always rebuild the same cards. Leave out for a new random set."
},
"items": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "number"
}
]
},
"maxItems": 400,
"description": "For mode words: the words or phrases to put on the cards, one per entry, e.g. [\"Ugly sweater\", \"Mistletoe\", \"Hot cocoa\"]. Need at least 24 for 5x5 with a free centre, 25 without, 16 for 4x4, 8 or 9 for 3x3. Up to 300, each up to 100 characters."
},
"title": {
"type": "string",
"maxLength": 120,
"description": "Game title shown on the caller screen, e.g. Holiday Party Bingo."
},
"action": {
"enum": [
"draw",
"check",
"winners",
"board"
],
"type": "string",
"description": "draw (default): call the next item at random. check: verify a claimed bingo on card_number. winners: list every card that has the pattern now. board: show what has been called. Example: check."
},
"called": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "number"
}
]
},
"maxItems": 400,
"description": "Everything already called, in call order, exactly as shown on the cards, e.g. [\"Mistletoe\", \"Hot cocoa\"] or [\"B-12\", \"N-40\", \"O-71\"]. Empty for a new game."
},
"pattern": {
"enum": [
"line",
"two_lines",
"four_corners",
"full_card"
],
"type": "string",
"description": "Winning pattern to check, e.g. line. line: any row, column or diagonal (90-ball: any row). two_lines: two complete lines. four_corners: the 4 corner squares (not for 90-ball). full_card: every square (full house). Default line."
},
"grid_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Card size for mode words: 3, 4 or 5 (default 5), e.g. 5. Classic numbers_75 is always 5x5; numbers_90 tickets are always 3x9."
},
"list_code": {
"type": "string",
"maxLength": 16,
"description": "For word games: list_code from caller_args of generate_bingo_cards, e.g. 0k3x9qa. Confirms the items were sent in the same order as when the cards were made, so card numbers match."
},
"card_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "How many different cards (or tickets) to make, 1-200, e.g. 30. Default 30."
},
"free_space": {
"type": "boolean",
"description": "Free centre square on 3x3 and 5x5 cards, e.g. true. Default true for 5x5 and false for 3x3; 4x4 cards have no centre."
},
"card_number": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "For action check: the card number printed on the claimed card, e.g. 17."
},
"unique_lines": {
"type": "boolean",
"description": "true = no two cards share an identical winning line (row, column or diagonal), so two players never complete the very same line. Needs enough items; the tool explains if the request is not possible. Default false (cards are always all different)."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"view",
"title",
"mode",
"action",
"total_items",
"called_count",
"remaining",
"current",
"called",
"pattern",
"check",
"winners",
"caller_args"
],
"properties": {
"mode": {
"type": "string"
},
"view": {
"type": "string"
},
"check": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
]
},
"title": {
"type": "string"
},
"action": {
"type": "string"
},
"called": {
"type": "array",
"items": {
"type": "string"
}
},
"current": {
"type": [
"string",
"null"
]
},
"pattern": {
"type": "string"
},
"winners": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"card",
"at_call"
],
"properties": {
"card": {
"type": "number"
},
"at_call": {
"type": "number"
}
},
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"remaining": {
"type": "number"
},
"caller_args": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"total_items": {
"type": "number"
},
"called_count": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Show bingo caller",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}generate_goal_bingo — Generate goal bingo card
Use this when the user wants a goal bingo card (new year goal bingo, 2027 bingo card, resolutions bingo, bucket-list bingo): one personal 5x5 card (or 4x4, 3x3) of their own goals with a free centre, title, year and theme colour, as a PNG, SVG and printable PDF. Goals marked completed print with a check mark and the tool counts bingo lines. Needs one goal per square (24 for 5x5 with a free centre). Does not invent goals for the user and does not make sets of party cards (use generate_bingo_cards).
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"goals"
],
"properties": {
"seed": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Shuffle number from an earlier result to repeat the same order, e.g. 77."
},
"year": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Year for the title, e.g. 2027 gives \"2027 Bingo\"."
},
"goals": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "number"
}
]
},
"maxItems": 40,
"description": "The goals, one per square, e.g. [\"Run a 10K\", \"Read 12 books\", \"Learn to make sourdough\"]. Exactly 24 for a 5x5 card with a free centre (25 without), 16 for 4x4, 8 for 3x3 with a free centre (9 without). Up to 80 characters each."
},
"paper": {
"enum": [
"letter",
"a4"
],
"type": "string",
"description": "Paper size for the PDF, e.g. letter (default) or a4."
},
"title": {
"type": "string",
"maxLength": 120,
"description": "Card heading, e.g. Maya's 2027 Bingo. Overrides the year title."
},
"shuffle": {
"type": "boolean",
"description": "true to mix the goals into a random order, e.g. false (default keeps your order, filled row by row)."
},
"subtitle": {
"type": "string",
"maxLength": 120,
"description": "Small line under the title, e.g. One square at a time."
},
"completed": {
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"maxLength": 4000
},
{
"type": "number"
}
]
},
"maxItems": 40,
"description": "Goals already done, written as in goals, e.g. [\"Read 12 books\"]. They print with a check mark and count toward bingo lines."
},
"grid_size": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "3, 4 or 5 (default 5), e.g. 5."
},
"free_space": {
"type": "boolean",
"description": "Free centre square on 3x3 and 5x5 cards, e.g. true (default)."
},
"accent_color": {
"type": "string",
"maxLength": 30,
"description": "Theme colour as hex or a name, e.g. #0B7285, teal, gold, purple. Default raspberry #C2255C."
},
"center_label": {
"type": "string",
"maxLength": 40,
"description": "Text in the centre square, e.g. FREE (default), Be kind to myself, or 2027."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"view",
"title",
"subtitle",
"grid_size",
"cells",
"center_index",
"done",
"done_count",
"goal_count",
"bingo_lines",
"seed",
"accent",
"warnings",
"downloads"
],
"properties": {
"done": {
"type": "array",
"items": {
"type": "number"
}
},
"seed": {
"type": [
"number",
"null"
]
},
"view": {
"type": "string"
},
"cells": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string"
},
"accent": {
"type": "string"
},
"subtitle": {
"type": "string"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"downloads": {
"type": "object",
"required": [
"png",
"svg",
"pdf"
],
"properties": {
"pdf": {
"type": "string"
},
"png": {
"type": "string"
},
"svg": {
"type": "string"
}
},
"additionalProperties": false
},
"grid_size": {
"type": "number"
},
"done_count": {
"type": "number"
},
"goal_count": {
"type": "number"
},
"bingo_lines": {
"type": "array",
"items": {
"type": "string"
}
},
"center_index": {
"type": "number"
}
},
"additionalProperties": false
}{
"title": "Generate goal bingo card",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
bingo-cards-widget — Zovo Bingo Card Maker view
Interactive view for Zovo Bingo Card Maker.
ui://widget/bingo-cards-v6-1.0.0-558f3a2650b1a2ce7ffc6972584d5db00a42c561542674c799d8396ce4eafcf6.htmlbingo-cards-widget-legacy — Zovo Bingo Card Maker view (previous versions)
ui://widget/bingo-cards-{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
- 740 ms
- 95th percentile latency
- 740 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 740 ms · metadata changed · 3 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-bingo-card-maker-mcp https://bingo-cards.zovo.one/mcpCodex
codex mcp add zovo-bingo-card-maker-mcp --url https://bingo-cards.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-bingo-card-maker-mcp": {
"url": "https://bingo-cards.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-bingo-card-maker-mcp": {
"type": "streamableHttp",
"url": "https://bingo-cards.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-bingo-card-maker-mcp": {
"type": "http",
"url": "https://bingo-cards.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-bingo-card-maker-mcp https://bingo-cards.zovo.one/mcpClaude Desktop
{
"mcpServers": {
"zovo-bingo-card-maker-mcp": {
"url": "https://bingo-cards.zovo.one/mcp"
}
}
}Windsurf
{
"mcpServers": {
"zovo-bingo-card-maker-mcp": {
"serverUrl": "https://bingo-cards.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo Bingo Card Maker MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.