Search / io.github.syncday-app/sync-day
sync-day
R0· no sign-inFree no-signup group scheduling; share a link and rank times by who's free.
v1.0.0 · active · website · descriptor JSON · versions
Search / io.github.syncday-app/sync-day
R0· no sign-inFree no-signup group scheduling; share a link and rank times by who's free.
v1.0.0 · active · website · descriptor JSON · versions
{
"mcpServers": {
"sync-day": {
"type": "http",
"url": "https://sync.day/mcp/mcp"
}
}
}claude mcp add --transport http sync-day https://sync.day/mcp/mcp[mcp_servers.sync-day]
url = "https://sync.day/mcp/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sync-day": {
"type": "remote",
"url": "https://sync.day/mcp/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"sync-day": {
"type": "http",
"url": "https://sync.day/mcp/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=sync-day&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc3luYy5kYXkvbWNwL21jcCJ9"
}{
"servers": {
"sync-day": {
"type": "http",
"url": "https://sync.day/mcp/mcp"
}
}
}{
"mcpServers": {
"sync-day": {
"httpUrl": "https://sync.day/mcp/mcp"
}
}
}extensions:
"sync-day":
enabled: true
name: "sync-day"
type: streamable_http
uri: "https://sync.day/mcp/mcp"
timeout: 300
protocol.modernsupports 2026-07-28 (server/discover)protocol.statelessanswers without a sessionprotocol.transportstreamable HTTPprotocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every useauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptionsevery tool has a descriptiontools.description_lengthdescriptions are concisetools.schemasevery tool has an object input schematools.annotations8 of 8 tools declare readOnlyHint or destructiveHinttools.directory_hints6 of 8 tools declare all four hints; missing: parse_event_text (destructiveHint, idempotentHint); get_event (destructiveHint, idempotentHint)tools.token_costabout 2,740 tokens to load every tooltools.api_dumptools are not a one-to-one API dumpstability.changesno tool changes in 30 daysstability.rug_pullno tool changed its meaning under the same namedeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+website +reachable +uptime-100% ~updated-45d-ago -no-repository
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://sync.day/mcp/mcp streamable-http | none | yes | 100% | 415 ms | 2026-07-28 | 2026-10-20 |
create_event | Create a sync.day availability poll and get its share link. Candidate days run from startDate to endDate (inclusive; or give days instead). Each day offers candidate START times from hourFrom, every startStepMinutes, as long as start + durationMinutes <= hourTo. Returns slug, public url (share this), adminUrl and adminKey (keep private; needed for update_event / remove_participant). Example: 周六周日下午聚餐 3 小时 -> {title:'周末聚餐', startDate:'2026-09-05', endDate:'2026-09-06', hourFrom:13, hourTo:18, durationMinutes:180, startStepMinutes:60}. |
decide_time | Organiser only: settle on a start time (locks availability picking and voting; the page shows 已定). Pass start=null to reopen. Requires the adminKey from create_event. |
get_eventread-only | Read an event: settings, every candidate start key per day (startOptions), who has answered (participants with their start keys; names may repeat), the top 10 start times by head-count (ranked), the starts EVERYONE with picks can make with their votes (voteOptions), each person's vote (votes) and decidedStart. No key needed. |
parse_event_textread-only | Turn a natural-language sentence (Chinese works best) into create_event input using sync.day's AI parser. Does NOT create anything; review the result, then call create_event. Example: '下周六或周日下午聚餐,大概 3 小时'. |
remove_participantdestructive | Organiser only: remove one participant by name (the oldest row with that name when it repeats), together with their vote. Requires the adminKey from create_event. |
submit_availability | Save (or replace) one person's availability: the candidate start keys they can make, from get_event.startOptions. The person is identified by `identity`, not by name: the same identity later overwrites the same row (and can rename it), a different identity with the same name is a second participant. Keys outside the event's start options are rejected. Returns the updated ranking. |
update_event | Organiser only: change any event settings (same fields and rules as create_event; omitted fields keep their current value; endDate wins over days). Existing picks are kept; those no longer valid starts are just hidden. |
vote_time | Approval voting: set every start one person accepts (replaces their earlier approvals; an empty list clears them). The voter is the `identity` used in submit_availability and must have at least one start saved. Only keys listed in get_event.voteOptions are accepted; the error lists the current options otherwise. Rejected once the organiser decided. Example: {slug:'calm-otter-4821', identity:'3f9a1c77b2e04d5e8a61f0c9d2b7e415', starts:['2026-09-05T15:00','2026-09-06T10:00']}. `start` is shorthand for a single-item `starts`. |
Schemas: list_tools.
{
"name": "io.github.syncday-app/sync-day",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://sync.day/mcp/mcp",
"type": "streamable-http"
}
],
"version": "1.0.0",
"websiteUrl": "https://sync.day",
"description": "Free no-signup group scheduling; share a link and rank times by who's free."
}