protogrid

Search / io.github.syncday-app/sync-day

sync-day

R0· no sign-in

Free no-signup group scheduling; share a link and rank times by who's free.

v1.0.0 · active · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality92strong
Trust77of 100
Uptime, 30 days100%
Latency p50415 ms

Connect

8 clients · secrets stay placeholders
{
  "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

Quality 92 / 100strong

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations8 of 8 tools declare readOnlyHint or destructiveHint
  • warn
    tools.directory_hints6 of 8 tools declare all four hints; missing: parse_event_text (destructiveHint, idempotentHint); get_event (destructiveHint, idempotentHint)
  • pass
    tools.token_costabout 2,740 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

8 tools, about 2,740 tokens to load them all · tool set d78773b76579 · checked 2026-10-20 13:49 UTC

Tool changes

No 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.

Trust 77 / 100

no-repository
provenance45
liveness100
freshness85
hygiene80

+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.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://sync.day/mcp/mcp streamable-httpnoneyes100%415 ms2026-07-282026-10-20

Tools (8)

create_eventCreate 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_timeOrganiser 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-onlyRead 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-onlyTurn 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_participantdestructiveOrganiser 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_availabilitySave (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_eventOrganiser 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_timeApproval 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.

Similar MCP servers

Official server.json
{
  "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."
}