Zovo Sign-Up Sheet MCP
A community MCP server that allows agents to create and manage shared sign-up sheets for events, shifts, or resources. It supports creating slots with capacities, tracking claims, and providing organizer links for CSV downloads and calendar integration.
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://signup-sheet.zovo.one/mcpWhat its tools do
3 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (1)
Can change data (2)
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
- Create a potluck sign-up with specific food categories
- Volunteer sign-up for a specific date and location
- Check who has signed up so far via organizer link
- Download results as CSV or calendar files
Source and maintenance
Protocol and capabilities
- Server
- signup-sheet 1.0.0
- MCP protocol negotiated in check
- 2025-11-25
- 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
create_signup_sheet — Create sign-up sheet
Use this when the user wants people to claim slots: potluck dishes, volunteer shifts, carpool seats, snack turns. It publishes a shared page where each person enters a first name and picks slots; each slot has a capacity and a full slot cannot be taken. Returns a public link to share and a private organizer link. Slots may have dates and times (then give an IANA time_zone). Does not send emails or reminders and does not take payments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"slots"
],
"properties": {
"note": {
"type": "string",
"maxLength": 600,
"description": "Short note shown on the sheet, e.g. Please bring serving spoons."
},
"slots": {
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"end": {
"type": "string",
"maxLength": 40,
"description": "Optional end: HH:MM the same day (e.g. 12:00), or YYYY-MM-DDTHH:MM, or for a date slot the last day YYYY-MM-DD."
},
"label": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "What people sign up for, e.g. Main dish, Saturday 9-12 shift, Car seat to the game."
},
"start": {
"type": "string",
"maxLength": 40,
"description": "Optional local start YYYY-MM-DDTHH:MM, or a date YYYY-MM-DD, in time_zone, e.g. 2026-11-14T09:00."
},
"capacity": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many people this slot takes, 1-50. Default 1. Example: 3."
}
}
},
"maxItems": 60,
"minItems": 1,
"description": "1-60 slots in display order, e.g. [{\"label\": \"Salad\", \"capacity\": 2}, {\"label\": \"Dessert\", \"capacity\": 3}]."
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Sheet title, e.g. Thanksgiving potluck or Food drive volunteer shifts."
},
"host_name": {
"type": "string",
"maxLength": 60,
"description": "Organizer display name shown on the sheet, e.g. Coach Lee."
},
"time_zone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone for slot dates and times, e.g. America/Chicago. Needed when any slot has a start."
},
"show_names": {
"type": "boolean",
"description": "Show first names on each slot to everyone with the link (helps avoid duplicate dishes). Default false. Example: true."
},
"max_per_person": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "How many slots one person may take, 1-60. Default 1. Example: 2."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"status",
"page_ends",
"public_url",
"manage_url",
"settings",
"totals",
"slots",
"notes"
],
"properties": {
"notes": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"note"
],
"properties": {
"name": {
"type": "string"
},
"note": {
"type": "string"
}
},
"additionalProperties": false
}
},
"slots": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"label",
"capacity",
"taken",
"open",
"names"
],
"properties": {
"open": {
"type": "number"
},
"when": {
"type": "string"
},
"label": {
"type": "string"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"start": {
"type": "string"
},
"taken": {
"type": "number"
},
"number": {
"type": "number"
},
"capacity": {
"type": "number"
},
"calendar_url": {
"type": "string"
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"status": {
"type": "string"
},
"totals": {
"type": "object",
"required": [
"spots",
"taken",
"open",
"people",
"full_slots",
"empty_slots"
],
"properties": {
"open": {
"type": "number"
},
"spots": {
"type": "number"
},
"taken": {
"type": "number"
},
"people": {
"type": "number"
},
"full_slots": {
"type": "number"
},
"empty_slots": {
"type": "number"
}
},
"additionalProperties": false
},
"changed": {
"type": "array",
"items": {
"type": "string"
}
},
"settings": {
"type": "object",
"required": [
"time_zone",
"max_per_person",
"show_names",
"note",
"host_name"
],
"properties": {
"note": {
"type": "string"
},
"host_name": {
"type": "string"
},
"time_zone": {
"type": "string"
},
"show_names": {
"type": "boolean"
},
"max_per_person": {
"type": "number"
}
},
"additionalProperties": false
},
"page_ends": {
"type": "string"
},
"manage_url": {
"type": "string"
},
"public_url": {
"type": "string"
},
"notes_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
},
"slots_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Create sign-up sheet",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}show_signup_results — Show sign-up results
Use this when the user asks who signed up, what is still open, or how many spots are left on a sheet made with create_signup_sheet. Takes the private organizer link and returns each slot with its capacity, spots taken, open spots and names, plus people's notes. Does not work with the public link and does not change the sheet.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"manage_url"
],
"properties": {
"manage_url": {
"type": "string",
"maxLength": 300,
"minLength": 10,
"description": "The private organizer link returned when the sheet was created, e.g. https://signup-sheet.zovo.one/m/AbC.../XyZ.... The public link (/p/...) does not work here."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"status",
"page_ends",
"public_url",
"manage_url",
"settings",
"totals",
"slots",
"notes"
],
"properties": {
"notes": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"note"
],
"properties": {
"name": {
"type": "string"
},
"note": {
"type": "string"
}
},
"additionalProperties": false
}
},
"slots": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"label",
"capacity",
"taken",
"open",
"names"
],
"properties": {
"open": {
"type": "number"
},
"when": {
"type": "string"
},
"label": {
"type": "string"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"start": {
"type": "string"
},
"taken": {
"type": "number"
},
"number": {
"type": "number"
},
"capacity": {
"type": "number"
},
"calendar_url": {
"type": "string"
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"status": {
"type": "string"
},
"totals": {
"type": "object",
"required": [
"spots",
"taken",
"open",
"people",
"full_slots",
"empty_slots"
],
"properties": {
"open": {
"type": "number"
},
"spots": {
"type": "number"
},
"taken": {
"type": "number"
},
"people": {
"type": "number"
},
"full_slots": {
"type": "number"
},
"empty_slots": {
"type": "number"
}
},
"additionalProperties": false
},
"changed": {
"type": "array",
"items": {
"type": "string"
}
},
"settings": {
"type": "object",
"required": [
"time_zone",
"max_per_person",
"show_names",
"note",
"host_name"
],
"properties": {
"note": {
"type": "string"
},
"host_name": {
"type": "string"
},
"time_zone": {
"type": "string"
},
"show_names": {
"type": "boolean"
},
"max_per_person": {
"type": "number"
}
},
"additionalProperties": false
},
"page_ends": {
"type": "string"
},
"manage_url": {
"type": "string"
},
"public_url": {
"type": "string"
},
"notes_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
},
"slots_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Show sign-up results",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}update_signup_sheet — Update sign-up sheet
Use this when the organizer wants to change a sheet made with create_signup_sheet: add slots, change a slot's label or capacity, remove an empty slot, change the per-person limit, show or hide names, edit the note, or close and reopen sign-ups. Takes the organizer link and only the changes. A capacity cannot go below the people already signed up, and a slot with sign-ups cannot be removed. Does not notify participants.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"manage_url"
],
"properties": {
"note": {
"type": "string",
"maxLength": 600,
"description": "Short note shown on the sheet, e.g. Please bring serving spoons."
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Sheet title, e.g. Thanksgiving potluck or Food drive volunteer shifts."
},
"sign_ups": {
"enum": [
"close",
"reopen"
],
"type": "string",
"description": "close stops new sign-ups; reopen allows them again. Example: close."
},
"add_slots": {
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"end": {
"type": "string",
"maxLength": 40,
"description": "Optional end: HH:MM the same day (e.g. 12:00), or YYYY-MM-DDTHH:MM, or for a date slot the last day YYYY-MM-DD."
},
"label": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "What people sign up for, e.g. Main dish, Saturday 9-12 shift, Car seat to the game."
},
"start": {
"type": "string",
"maxLength": 40,
"description": "Optional local start YYYY-MM-DDTHH:MM, or a date YYYY-MM-DD, in time_zone, e.g. 2026-11-14T09:00."
},
"capacity": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many people this slot takes, 1-50. Default 1. Example: 3."
}
}
},
"maxItems": 60,
"description": "New slots added at the end, e.g. [{\"label\": \"Ice\", \"capacity\": 1}]."
},
"time_zone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone for slot dates and times, e.g. America/Chicago. Needed when any slot has a start."
},
"manage_url": {
"type": "string",
"maxLength": 300,
"minLength": 10,
"description": "The private organizer link returned when the sheet was created, e.g. https://signup-sheet.zovo.one/m/AbC.../XyZ.... The public link (/p/...) does not work here."
},
"show_names": {
"type": "boolean",
"description": "Show first names on each slot to everyone with the link (helps avoid duplicate dishes). Default false. Example: true."
},
"change_slots": {
"type": "array",
"items": {
"type": "object",
"required": [
"slot"
],
"properties": {
"slot": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "The slot to change: its label or its number in the results, e.g. Salad or 2."
},
"label": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "New label, e.g. Green salad."
},
"capacity": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "New capacity, e.g. 4."
}
}
},
"maxItems": 60,
"description": "Changes to existing slots, e.g. [{\"slot\": \"Salad\", \"capacity\": 3}]."
},
"remove_slots": {
"type": "array",
"items": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"maxItems": 60,
"description": "Labels or numbers of empty slots to remove, e.g. [\"Ice\"]."
},
"max_per_person": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "How many slots one person may take, 1-60. Default 1. Example: 2."
}
}
}{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"status",
"page_ends",
"public_url",
"manage_url",
"settings",
"totals",
"slots",
"notes"
],
"properties": {
"notes": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"note"
],
"properties": {
"name": {
"type": "string"
},
"note": {
"type": "string"
}
},
"additionalProperties": false
}
},
"slots": {
"type": "array",
"items": {
"type": "object",
"required": [
"number",
"label",
"capacity",
"taken",
"open",
"names"
],
"properties": {
"open": {
"type": "number"
},
"when": {
"type": "string"
},
"label": {
"type": "string"
},
"names": {
"type": "array",
"items": {
"type": "string"
}
},
"start": {
"type": "string"
},
"taken": {
"type": "number"
},
"number": {
"type": "number"
},
"capacity": {
"type": "number"
},
"calendar_url": {
"type": "string"
}
},
"additionalProperties": false
}
},
"title": {
"type": "string"
},
"status": {
"type": "string"
},
"totals": {
"type": "object",
"required": [
"spots",
"taken",
"open",
"people",
"full_slots",
"empty_slots"
],
"properties": {
"open": {
"type": "number"
},
"spots": {
"type": "number"
},
"taken": {
"type": "number"
},
"people": {
"type": "number"
},
"full_slots": {
"type": "number"
},
"empty_slots": {
"type": "number"
}
},
"additionalProperties": false
},
"changed": {
"type": "array",
"items": {
"type": "string"
}
},
"settings": {
"type": "object",
"required": [
"time_zone",
"max_per_person",
"show_names",
"note",
"host_name"
],
"properties": {
"note": {
"type": "string"
},
"host_name": {
"type": "string"
},
"time_zone": {
"type": "string"
},
"show_names": {
"type": "boolean"
},
"max_per_person": {
"type": "number"
}
},
"additionalProperties": false
},
"page_ends": {
"type": "string"
},
"manage_url": {
"type": "string"
},
"public_url": {
"type": "string"
},
"notes_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
},
"slots_count": {
"type": "object",
"required": [
"shown",
"total"
],
"properties": {
"shown": {
"type": "number"
},
"total": {
"type": "number"
}
},
"additionalProperties": false
}
},
"additionalProperties": false
}{
"title": "Update sign-up sheet",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
1 advertised
signup-sheet-widget — Zovo Sign-Up Sheet view
Interactive view for Zovo Sign-Up Sheet.
ui://widget/signup-sheet-v1-1.0.0-a1dfc424e2d66ec12ccc7b04511a70324aef544144710f6193e88834bc4b84ad.htmlsignup-sheet-widget-legacy — Zovo Sign-Up Sheet view (previous versions)
ui://widget/signup-sheet-{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
- 345 ms
- 95th percentile latency
- 345 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 345 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-sign-up-sheet-mcp https://signup-sheet.zovo.one/mcpCodex
codex mcp add zovo-sign-up-sheet-mcp --url https://signup-sheet.zovo.one/mcpCursor
{
"mcpServers": {
"zovo-sign-up-sheet-mcp": {
"url": "https://signup-sheet.zovo.one/mcp"
}
}
}Cline
{
"mcpServers": {
"zovo-sign-up-sheet-mcp": {
"type": "streamableHttp",
"url": "https://signup-sheet.zovo.one/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"zovo-sign-up-sheet-mcp": {
"type": "http",
"url": "https://signup-sheet.zovo.one/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http zovo-sign-up-sheet-mcp https://signup-sheet.zovo.one/mcpClaude Desktop
https://signup-sheet.zovo.one/mcpWindsurf
{
"mcpServers": {
"zovo-sign-up-sheet-mcp": {
"serverUrl": "https://signup-sheet.zovo.one/mcp"
}
}
}Let your agent find its tools
Find servers like Zovo Sign-Up Sheet MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.