SignUpSheet.page
Free sign-up sheets, date polls and group cards people join from one link. No accounts, no ads.
我該用這個嗎
品質與安全性
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"signupsheet": {
"url": "https://signupsheet.page/mcp"
}
}
}遠端端點
https://signupsheet.page/mcpstreamable-http它能做什麼
工具清單
工具(4)
🟡create_signup_sheet(title, description, slots, show_names, require_email, ...)
Creates a live online sign-up sheet on SignUpSheet.page where people claim slots from one shared link without an account, and returns the share link and the private organizer link. Use it when the user wants people to sign up for things: dishes for a potluck or class party, volunteer shifts, snack or carpool days, meal train dates, appointment or conference time slots, supplies to bring, classroom helpers. Each slot has a label, an optional date and start/end time, and how many people it needs; full slots get a waitlist and people get a reminder the day before. Not for voting on dates, group cards, ticket sales or paid registration.
輸入結構描述
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "Sheet title, e.g. 'Room 12 Thanksgiving potluck – Nov 20'."
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "Optional details shown at the top: place, time, what to bring. Plain text; web links are removed."
},
"slots": {
"type": "array",
"minItems": 1,
"maxItems": 200,
"description": "What people can sign up for, in display order.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"label"
],
"properties": {
"label": {
"type": "string",
"minLength": 1,
"maxLength": 80,
"description": "e.g. 'Main dish', 'Setup crew', 'Conference 3:00'."
},
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional date, YYYY-MM-DD."
},
"start_time": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"description": "Optional start, 24-hour HH:MM."
},
"end_time": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"description": "Optional end, 24-hour HH:MM (needs start_time)."
},
"capacity": {
"type": "integer",
"minimum": 0,
"maximum": 500,
"default": 1,
"description": "How many people this slot needs; 0 = unlimited."
}
}
}
},
"show_names": {
"type": "boolean",
"default": true,
"description": "Show who signed up to everyone with the link."
},
"require_email": {
"type": "boolean",
"default": false,
"description": "Ask people for an email when signing up (enables reminders and self-cancel links)."
},
"one_per_person": {
"type": "boolean",
"default": false,
"description": "Allow only one slot per person (checked by email; turns on require_email)."
},
"organizer_name": {
"type": "string",
"maxLength": 60,
"description": "Name shown as the organizer, e.g. 'Dana'. Use the user's name if they gave it; otherwise omit."
},
"organizer_email": {
"type": "string",
"maxLength": 200,
"description": "Optional. Only an email address the user gave in this conversation. If set, both links are emailed to it so the private organizer link is not lost. Never guess an address."
},
"language": {
"type": "string",
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"nl",
"pl",
"ru",
"tr",
"he",
"ar",
"zh",
"ja",
"ko"
],
"description": "Language of the pages and emails people will see. Use the language the user is writing in; 'en' if it is not in the list."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone of the event, e.g. 'America/Chicago' or 'Europe/Madrid'. Needed when dates or times are given (reminders and calendar files use it)."
},
"chip_in": {
"type": "object",
"additionalProperties": false,
"description": "Optional money collection on the same link. People pledge an amount and pay the organizer directly in the organizer's own payment app; SignUpSheet.page does not hold or transfer money. Include at least one way to pay, using only handles the user gave you. Venmo and Zelle work in US dollars only, Cash App in US dollars and pounds.",
"properties": {
"purpose": {
"type": "string",
"maxLength": 80,
"description": "What the money is for, e.g. 'Gift for Ms. Lee'."
},
"suggested_amount": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"description": "Suggested amount per person, in whole units of the currency (default 10 US dollars or a similar round amount)."
},
"goal": {
"type": "integer",
"minimum": 0,
"maximum": 100000000,
"default": 0,
"description": "Optional total goal; 0 = no goal."
},
"currency": {
"type": "string",
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"MXN",
"BRL",
"ILS",
"PLN",
"TRY",
"CHF",
"JPY",
"KRW",
"CNY",
"INR",
"ARS",
"COP",
"CLP",
"PEN",
"ZAR",
"NZD",
"SEK",
"NOK",
"DKK",
"CZK",
"HUF",
"RON",
"AED",
"SAR",
"EGP",
"MAD",
"SGD",
"HKD",
"TWD",
"PHP",
"RUB",
"UAH",
"KZT"
],
"description": "Currency of the amounts. Default: US dollars when Venmo, Cash App or Zelle is given, otherwise the usual currency for the language."
},
"paypal_me": {
"type": "string",
"maxLength": 30,
"description": "PayPal.Me name (the part after paypal.me/)."
},
"venmo": {
"type": "string",
"maxLength": 31,
"description": "Venmo username."
},
"cashapp": {
"type": "string",
"maxLength": 21,
"description": "Cash App $cashtag."
},
"revolut": {
"type": "string",
"maxLength": 33,
"description": "Revolut username."
},
"zelle": {
"type": "string",
"maxLength": 40,
"description": "Zelle email or US phone the user gave."
},
"other": {
"type": "string",
"maxLength": 90,
"description": "Any other way to pay, as plain text (no links)."
}
}
}
},
"required": [
"title",
"slots"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"signup_sheet",
"date_poll",
"group_card"
]
},
"title": {
"type": "string"
},
"share_url": {
"type": "string",
"description": "Public link to send to participants."
},
"organizer_url": {
"type": "string",
"description": "Private management link for the person who asked. Left out only when a repeated request returns a sheet whose organizer link went to the organizer email (see organizer_url_note)."
},
"organizer_url_note": {
"type": "string"
},
"flyer_url": {
"type": "string",
"description": "Printable QR-code flyer for the sheet."
},
"emailed_links_to": {
"type": [
"string",
"null"
],
"description": "Masked address the links are being emailed to, or null."
},
"language": {
"type": "string"
},
"timezone": {
"type": "string"
},
"item_count": {
"type": "integer"
},
"chip_in": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"kind",
"title",
"share_url",
"organizer_url_note"
],
"additionalProperties": false
}🟡create_date_poll(title, description, options, organizer_name, organizer_email, ...)
Creates a group scheduling poll on SignUpSheet.page: people open one link and answer yes, maybe or no for each date or time option, and the option that works for most people is highlighted. Returns the share link and the private organizer link, where the organizer can pick the final time and notify everyone who left an email. Use it when the user wants to find a date or time that works for a group, such as a meeting, dinner, reunion, parent night or study session. Not for sign-up slots or opinion polls without dates.
輸入結構描述
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "e.g. 'Book club – November meeting'."
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "Optional details (place, length). Plain text; web links are removed."
},
"options": {
"type": "array",
"minItems": 2,
"maxItems": 60,
"description": "Date or date-and-time options to vote on. They are shown in date order.",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD."
},
"start_time": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"description": "Optional start, 24-hour HH:MM."
},
"end_time": {
"type": "string",
"pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
"description": "Optional end, 24-hour HH:MM (needs start_time)."
}
}
}
},
"organizer_name": {
"type": "string",
"maxLength": 60,
"description": "Name shown as the organizer, e.g. 'Dana'. Use the user's name if they gave it; otherwise omit."
},
"organizer_email": {
"type": "string",
"maxLength": 200,
"description": "Optional. Only an email address the user gave in this conversation. If set, both links are emailed to it so the private organizer link is not lost. Never guess an address."
},
"language": {
"type": "string",
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"nl",
"pl",
"ru",
"tr",
"he",
"ar",
"zh",
"ja",
"ko"
],
"description": "Language of the pages and emails people will see. Use the language the user is writing in; 'en' if it is not in the list."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone of the event, e.g. 'America/Chicago' or 'Europe/Madrid'. Needed when dates or times are given (reminders and calendar files use it)."
}
},
"required": [
"title",
"options"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"signup_sheet",
"date_poll",
"group_card"
]
},
"title": {
"type": "string"
},
"share_url": {
"type": "string",
"description": "Public link to send to participants."
},
"organizer_url": {
"type": "string",
"description": "Private management link for the person who asked. Left out only when a repeated request returns a sheet whose organizer link went to the organizer email (see organizer_url_note)."
},
"organizer_url_note": {
"type": "string"
},
"flyer_url": {
"type": "string",
"description": "Printable QR-code flyer for the sheet."
},
"emailed_links_to": {
"type": [
"string",
"null"
],
"description": "Masked address the links are being emailed to, or null."
},
"language": {
"type": "string"
},
"timezone": {
"type": "string"
},
"item_count": {
"type": "integer"
},
"chip_in": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"kind",
"title",
"share_url",
"organizer_url_note"
],
"additionalProperties": false
}🟡create_group_card(recipient_name, occasion, title, message_to_signers, show_messages, ...)
Creates an online group card on SignUpSheet.page for one person: everyone opens one shared link and writes a message, and the organizer delivers the finished card later by email, on screen or printed. Use it for a farewell, birthday, retirement, thank-you, new baby, get well, sympathy, welcome, wedding, graduation, work anniversary or congratulations card from a team, class or family. It can also collect money for a gift (chip_in): signers pledge an amount and pay the organizer directly. Returns the share link (for signers, not for the recipient) and the private organizer link.
輸入結構描述
{
"type": "object",
"properties": {
"recipient_name": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Who the card is for, e.g. 'Sarah'."
},
"occasion": {
"type": "string",
"enum": [
"farewell",
"birthday",
"thank_you",
"retirement",
"new_baby",
"get_well",
"congratulations",
"welcome",
"wedding",
"graduation",
"sympathy",
"work_anniversary",
"just_because"
]
},
"title": {
"type": "string",
"maxLength": 100,
"description": "Optional; defaults to e.g. 'Farewell card for Sarah' in the chosen language."
},
"message_to_signers": {
"type": "string",
"maxLength": 1000,
"description": "Optional note shown to signers, e.g. 'Sign by Friday — we give it at lunch.' Plain text."
},
"show_messages": {
"type": "boolean",
"default": true,
"description": "Let signers see each other's messages before the card is delivered."
},
"organizer_name": {
"type": "string",
"maxLength": 60,
"description": "Name shown as the organizer, e.g. 'Dana'. Use the user's name if they gave it; otherwise omit."
},
"organizer_email": {
"type": "string",
"maxLength": 200,
"description": "Optional. Only an email address the user gave in this conversation. If set, both links are emailed to it so the private organizer link is not lost. Never guess an address."
},
"language": {
"type": "string",
"enum": [
"en",
"es",
"pt",
"fr",
"de",
"it",
"nl",
"pl",
"ru",
"tr",
"he",
"ar",
"zh",
"ja",
"ko"
],
"description": "Language of the pages and emails people will see. Use the language the user is writing in; 'en' if it is not in the list."
},
"timezone": {
"type": "string",
"maxLength": 64,
"description": "IANA time zone of the event, e.g. 'America/Chicago' or 'Europe/Madrid'. Needed when dates or times are given (reminders and calendar files use it)."
},
"chip_in": {
"type": "object",
"additionalProperties": false,
"description": "Optional money collection on the same link. People pledge an amount and pay the organizer directly in the organizer's own payment app; SignUpSheet.page does not hold or transfer money. Include at least one way to pay, using only handles the user gave you. Venmo and Zelle work in US dollars only, Cash App in US dollars and pounds.",
"properties": {
"purpose": {
"type": "string",
"maxLength": 80,
"description": "What the money is for, e.g. 'Gift for Ms. Lee'."
},
"suggested_amount": {
"type": "integer",
"minimum": 1,
"maximum": 1000000,
"description": "Suggested amount per person, in whole units of the currency (default 10 US dollars or a similar round amount)."
},
"goal": {
"type": "integer",
"minimum": 0,
"maximum": 100000000,
"default": 0,
"description": "Optional total goal; 0 = no goal."
},
"currency": {
"type": "string",
"enum": [
"USD",
"EUR",
"GBP",
"CAD",
"AUD",
"MXN",
"BRL",
"ILS",
"PLN",
"TRY",
"CHF",
"JPY",
"KRW",
"CNY",
"INR",
"ARS",
"COP",
"CLP",
"PEN",
"ZAR",
"NZD",
"SEK",
"NOK",
"DKK",
"CZK",
"HUF",
"RON",
"AED",
"SAR",
"EGP",
"MAD",
"SGD",
"HKD",
"TWD",
"PHP",
"RUB",
"UAH",
"KZT"
],
"description": "Currency of the amounts. Default: US dollars when Venmo, Cash App or Zelle is given, otherwise the usual currency for the language."
},
"paypal_me": {
"type": "string",
"maxLength": 30,
"description": "PayPal.Me name (the part after paypal.me/)."
},
"venmo": {
"type": "string",
"maxLength": 31,
"description": "Venmo username."
},
"cashapp": {
"type": "string",
"maxLength": 21,
"description": "Cash App $cashtag."
},
"revolut": {
"type": "string",
"maxLength": 33,
"description": "Revolut username."
},
"zelle": {
"type": "string",
"maxLength": 40,
"description": "Zelle email or US phone the user gave."
},
"other": {
"type": "string",
"maxLength": 90,
"description": "Any other way to pay, as plain text (no links)."
}
}
}
},
"required": [
"recipient_name",
"occasion"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"signup_sheet",
"date_poll",
"group_card"
]
},
"title": {
"type": "string"
},
"share_url": {
"type": "string",
"description": "Public link to send to participants."
},
"organizer_url": {
"type": "string",
"description": "Private management link for the person who asked. Left out only when a repeated request returns a sheet whose organizer link went to the organizer email (see organizer_url_note)."
},
"organizer_url_note": {
"type": "string"
},
"flyer_url": {
"type": "string",
"description": "Printable QR-code flyer for the sheet."
},
"emailed_links_to": {
"type": [
"string",
"null"
],
"description": "Masked address the links are being emailed to, or null."
},
"language": {
"type": "string"
},
"timezone": {
"type": "string"
},
"item_count": {
"type": "integer"
},
"chip_in": {
"type": "boolean"
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"kind",
"title",
"share_url",
"organizer_url_note"
],
"additionalProperties": false
}🟢get_sheet_summary(share_url)
Reads the current public status of a SignUpSheet.page sign-up sheet, date poll or group card from its share link: which slots are open or full, poll answers per option, or how many people have signed a card. Use it when the user asks how their sheet, poll or card is going. Takes the public share link (signupsheet.page/s/…); it never returns email addresses or other private details.
輸入結構描述
{
"type": "object",
"properties": {
"share_url": {
"type": "string",
"maxLength": 200,
"description": "The public link, e.g. https://signupsheet.page/s/k3m9x2pq (an 8-character sheet id alone also works)."
}
},
"required": [
"share_url"
],
"additionalProperties": false
}輸出結構描述
{
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"signup_sheet",
"date_poll",
"group_card"
]
},
"title": {
"type": "string"
},
"closed": {
"type": "boolean"
},
"share_url": {
"type": "string"
},
"totals": {
"type": "object"
},
"slots": {
"type": "array",
"items": {
"type": "object"
}
},
"truncated": {
"type": "boolean"
},
"poll": {
"type": "object"
},
"card": {
"type": "object"
},
"chip_in": {
"type": "object"
}
},
"required": [
"kind",
"title",
"closed",
"share_url"
]
}社群
證據