accueil / serveurs / Dev & Code / io.github.syncday-app/sync-day
io.github.syncday-app/sync-day
serveur MCP (Model Context Protocol) · sync.day 1.0.0
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que io.github.syncday-app/sync-day est sûr ?
Au dernier audit MCP Hub, le serveur MCP « io.github.syncday-app/sync-day » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 8 outils
- create_event≈ 628 tokens
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}.
Paramètres, retour & exemple (9)
Paramètresdays· integer · optionnel
Number of consecutive days from startDate (1-21); alternative to endDate.title· string · requis
Event name, max 60 chars. e.g. 周末聚餐, Team synchourTo· integer · requis
End of each day's window, exclusive (1-24), must be > hourFrom. e.g. 22endDate· string · optionnel
Last candidate day, inclusive, YYYY-MM-DD (same as startDate for a single day; at most 21 days). Give this or days; endDate wins when both are set.hourFrom· integer · requis
Earliest hour of each day (0-23). e.g. 9question· string · optionnel
Optional prompt shown to participants, max 200 chars. e.g. 哪天晚上有空?startDate· string · requis
First candidate day, YYYY-MM-DD. e.g. 2026-09-05durationMinutes· ? · requis
Event length in minutes. One of 30, 60, 90, 120, 180, 240, 480.startStepMinutes· ? · optionnel
Gap between candidate start times in minutes: 30 or 60 (default 60).
Exemple d'appel{"name": "create_event", "arguments": {"title": "texte", "hourTo": 1, "hourFrom": 1, "startDate": "texte", "durationMinutes": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - decide_time≈ 273 tokens
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.
Paramètres, retour & exemple (3)
Paramètresslug· string · requis
Event slug from the URL, e.g. calm-otter-4821 (sync.day/calm-otter-4821)start· ? · requis
A candidate start key of the event (normally one of voteOptions), or null to reopen.adminKey· string · requis
Organiser key returned by create_event (the ?key= part of adminUrl).
Exemple d'appel{"name": "decide_time", "arguments": {"slug": "texte", "start": "texte", "adminKey": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - get_event≈ 196 tokens
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.
Paramètres, retour & exemple (1)
Paramètresslug· string · requis
Event slug from the URL, e.g. calm-otter-4821 (sync.day/calm-otter-4821)
Exemple d'appel{"name": "get_event", "arguments": {"slug": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - parse_event_text≈ 196 tokens
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 小时'.
Paramètres, retour & exemple (2)
Paramètrestext· string · requis
One sentence describing the event, max 300 chars.today· string · optionnel
Reference date for relative words like 明天/下周, YYYY-MM-DD. Defaults to today in Asia/Shanghai.
Exemple d'appel{"name": "parse_event_text", "arguments": {"text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - remove_participant≈ 248 tokens
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.
Paramètres, retour & exemple (3)
Paramètresname· string · requis
Exact participant name to remove.slug· string · requis
Event slug from the URL, e.g. calm-otter-4821 (sync.day/calm-otter-4821)adminKey· string · requis
Organiser key returned by create_event (the ?key= part of adminUrl).
Exemple d'appel{"name": "remove_participant", "arguments": {"name": "texte", "slug": "texte", "adminKey": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - submit_availability≈ 413 tokens
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.
Paramètres, retour & exemple (4)
Paramètresname· string · requis
Display name, 1-20 chars, may repeat. e.g. 小明slug· string · requis
Event slug from the URL, e.g. calm-otter-4821 (sync.day/calm-otter-4821)starts· array · requis
Start keys like 2026-09-05T14:00. Empty array clears this person's picks.identity· string · requis
Random secret for this person that you generate and keep per person, 16-256 chars (e.g. 32 hex chars; NOT a plain user id or name, since anyone who guesses it can act as them). Same identity = same participant; the server stores only a hash. Example: 3f9a1c77b2e04d5e8a61f0c9d2b7e415
Exemple d'appel{"name": "submit_availability", "arguments": {"name": "texte", "slug": "texte", "starts": [], "identity": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - update_event≈ 630 tokens
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.
Paramètres, retour & exemple (11)
Paramètresdays· integer · optionnel
Number of consecutive days from startDate (1-21); alternative to endDate.slug· string · requis
Event slug from the URL, e.g. calm-otter-4821 (sync.day/calm-otter-4821)title· string · optionnel
Event name, max 60 chars. e.g. 周末聚餐, Team synchourTo· integer · optionnel
End of each day's window, exclusive (1-24), must be > hourFrom. e.g. 22endDate· string · optionnel
Last candidate day, inclusive, YYYY-MM-DD (same as startDate for a single day; at most 21 days). Give this or days; endDate wins when both are set.adminKey· string · requis
Organiser key returned by create_event (the ?key= part of adminUrl).hourFrom· integer · optionnel
Earliest hour of each day (0-23). e.g. 9question· string · optionnel
Optional prompt shown to participants, max 200 chars. e.g. 哪天晚上有空?startDate· string · optionnel
First candidate day, YYYY-MM-DD. e.g. 2026-09-05durationMinutes· ? · optionnel
Event length in minutes. One of 30, 60, 90, 120, 180, 240, 480.startStepMinutes· ? · optionnel
Gap between candidate start times in minutes: 30 or 60 (default 60).
Exemple d'appel{"name": "update_event", "arguments": {"slug": "texte", "adminKey": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - vote_time≈ 460 tokens
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`.
Paramètres, retour & exemple (4)
Paramètresslug· string · requis
Event slug from the URL, e.g. calm-otter-4821 (sync.day/calm-otter-4821)start· string · optionnel
Shorthand for starts: [start]starts· array · optionnel
All start keys this person accepts (from get_event.voteOptions); [] clears their approvalsidentity· string · requis
Random secret for this person that you generate and keep per person, 16-256 chars (e.g. 32 hex chars; NOT a plain user id or name, since anyone who guesses it can act as them). Same identity = same participant; the server stores only a hash. Example: 3f9a1c77b2e04d5e8a61f0c9d2b7e415
Exemple d'appel{"name": "vote_time", "arguments": {"slug": "texte", "identity": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».