
Security News
Happy Birthday, Shai-Hulud
It has been one year since Shai-Hulud made its first appearance on npm.
@kekwanulabs/syncline-mcp-server-go
Advanced tools
Syncline MCP Server (Go) - Fast, standalone binaries for AI-powered meeting scheduling
Official Model Context Protocol (MCP) server for Syncline - AI-powered meeting scheduling. Fast, standalone binaries with zero dependencies.
📦 Other Implementations: TypeScript (Node.js) • Python (Async)
All implementations are functionally identical and maintained in sync. Choose the one that fits your environment best.
The Model Context Protocol (MCP) is an open protocol by Anthropic that enables AI models like Claude to securely interact with external tools and data sources. With Syncline's MCP server, Claude can autonomously schedule meetings, check availability, and manage calendars through natural conversation.
The Go version is distributed as native binaries via npm for easy installation:
npm install -g @kekwanulabs/syncline-mcp-server-go
Or install locally in your project:
npm install @kekwanulabs/syncline-mcp-server-go
This automatically downloads the correct binary for your platform:
Add the Syncline MCP server to your Claude Desktop configuration:
macOS/Linux: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"syncline": {
"command": "npx",
"args": ["-y", "@kekwanulabs/syncline-mcp-server-go"],
"env": {
"SYNCLINE_API_KEY": "your_api_key_here"
}
}
}
}
Restart Claude Desktop to load the MCP server. You should see "Syncline" appear in the MCP tools list.
Once configured, Claude can use Syncline tools through natural conversation:
You: Schedule a 30-minute investor call with alice@example.com and bob@example.com
sometime next week. Let the AI pick the best time.
Claude: I'll use Syncline's AI to find the optimal time for your investor call.
[Uses schedule_auto tool]
Perfect! I've scheduled your investor call for Tuesday, January 16th at 2:00 PM PST.
Why this time was chosen:
- Both attendees have high energy levels in early afternoon
- No meetings immediately before/after (buffer time)
- Fair timezone for all participants
- Aligns with typical investor call patterns
Calendar invites have been sent to all attendees.
You: What times are available for a 1-hour meeting with alice@example.com
next Monday?
Claude: Let me check availability for next Monday.
[Uses find_availability tool]
Here are the available slots for a 1-hour meeting on Monday, January 15th:
- 9:00 AM - 10:00 AM
- 11:30 AM - 12:30 PM
- 2:00 PM - 3:00 PM
- 4:00 PM - 5:00 PM
Which time works best for you?
You: Book the 2 PM slot
Claude: Done! I've scheduled the meeting for Monday, January 15th at 2:00 PM.
[Uses schedule_meeting tool]
You: Can you check if alice@example.com has connected their calendar?
Claude: [Uses get_user_calendar_status tool]
Yes, Alice has connected their Google Calendar.
Last synced: 2 minutes ago
Status: Active
schedule_auto (Recommended)AI-powered scheduling that picks the optimal time automatically.
When to use: When you want the best possible time without manual selection.
Parameters:
attendees: Array of email addresses (2-10)duration_minutes: Meeting length (e.g., 30, 60)title: Meeting titlecontext: Meeting type (warm_intro, investor_call, team_standup, etc.)description: Optional agendanatural_language_context: Natural language description for Claude AI to determine meeting organizer (e.g., "Alice pitching to investor Bob")force_organizer: Override organizer detection by specifying an attendee emailearliest_date: Optional start of search window (YYYY-MM-DD)latest_date: Optional end of search window (YYYY-MM-DD)location: Optional location (Zoom, Office, etc.)preferred_link_type: auto, google_meet, teams, zoom, or noneIntelligent Organizer Detection: The natural_language_context parameter enables Claude AI to determine who should create the calendar event based on social dynamics:
Falls back to first attendee if not provided or Claude unavailable.
find_availabilityFind all available time slots.
When to use: When you want to see options or give the user choice.
Parameters:
attendees: Array of email addresses (2-10)duration_minutes: Meeting lengthearliest_date: Start of search window (YYYY-MM-DD)latest_date: End of search window (YYYY-MM-DD)schedule_meetingSchedule a meeting at a specific time.
When to use: When you already know the desired time.
Parameters:
attendees: Array of email addresses (2-10)start_time: ISO 8601 timestampduration_minutes: Meeting lengthtitle: Meeting titledescription: Optional agendalocation: Optional locationget_user_calendar_statusCheck if a user has connected their calendar.
When to use: Before attempting to schedule with new attendees.
Parameters:
email: User's email addresscreate_scheduling_requestStart an async scheduling flow with full lifecycle tracking.
When to use: When attendees may not have connected calendars yet, when you need approval before booking, or when your agent needs webhook notifications at every stage. Use schedule_auto for simpler fire-and-forget scheduling where everyone is already connected.
How it works: The request progresses through stages: created → awaiting_connection (if someone needs to connect) → proposed (slots found) → booked or failed. In auto_preferred mode, Syncline books the best time automatically. In approval_required mode, it proposes top slots and waits for you to call approve_scheduling_request. Every state change fires a webhook.
Parameters:
attendees: Array of email addresses (2-10)duration_minutes: Meeting lengthtitle: Meeting titledescription: Optional descriptioncontext: Meeting context for scheduling intelligencemode: auto_preferred (default) or approval_requiredearliest_date: Optional earliest date (YYYY-MM-DD)latest_date: Optional latest date (YYYY-MM-DD)get_scheduling_requestCheck where a scheduling request is in its lifecycle.
When to use: To poll request progress, display status to your users, or check what action is needed next. Returns the current status, proposed time slots (if in proposed state), resolution details (if booked or failed), and the next required action.
Parameters:
request_id: Scheduling request ID (sr_...)approve_scheduling_requestSelect and book one of the proposed time slots.
When to use: After a scheduling request reaches proposed status. Review the proposed slots from get_scheduling_request, then approve the one that works. Syncline creates calendar events for all attendees and fires a scheduling_request.booked webhook.
Parameters:
request_id: Scheduling request IDslot_index: Zero-based index of the proposed slot to selectdecline_scheduling_requestReject all proposed slots and end the scheduling request.
When to use: When none of the proposed times work. The request moves to failed status. You can create a new request with different parameters (wider date range, shorter duration, etc.).
Parameters:
request_id: Scheduling request IDreason: Optional reason for decliningcreate_connection_sessionGenerate a hosted link for a user to connect their Google or Microsoft calendar.
When to use: Before scheduling — call this to get a connect_url, then send it to your user. They open the branded connect page, choose their calendar provider, and grant access. Once connected, you can schedule meetings on their behalf. Optionally link to a scheduling request so scheduling auto-resumes after connection.
Parameters:
participant_email: Email of the person to connectrequest_id: Optional — link to a scheduling request for auto-resumeprovider: Optional preferred provider (google or microsoft)set_scheduling_autonomyControl when Syncline auto-books vs asks for approval for a specific user.
When to use: To customize scheduling behavior per user. Choose a profile: permissive (auto-book most meetings), balanced (default), or conservative (propose most for approval). Set per-context rules like "auto-book coffee chats but propose investor calls." The confidence threshold controls how sure the AI must be before auto-booking. The system learns and adapts from outcomes over time.
Parameters:
email: User's emailprofile: permissive, balanced, or conservativecontext_rules: Per-context rules (e.g., {"coffee_chat": "auto", "investor_call": "propose"})confidence_threshold: Auto-book if confidence exceeds this (0-1, default 0.7)set_meeting_preferencesSet a user's preferred video conferencing tool for all future meetings.
When to use: To configure which video link Syncline generates when booking meetings. auto infers from the user's calendar provider (Google users get Meet, Microsoft users get Teams). Set zoom and provide a personal Zoom link for Zoom users. Set none for in-person meetings.
Parameters:
email: User's emailpreferred_link_type: auto, google_meet, teams, zoom, or nonezoom_link: Personal Zoom link (if zoom preferred)default_location: Fallback location text (e.g., "Room 42") when no video link is usedSyncline's AI uses context to understand meeting priority and energy requirements:
warm_intro - Introduction to someone you knowcold_outreach - First contact with new personinvestor_call - Meeting with investorsclient_demo - Product demonstrationteam_standup - Daily team syncone_on_one - 1:1 meetinginterview - Job interviewsales_call - Sales conversationstrategy_session - Strategic planningbrainstorm - Creative ideationreview - Performance or project reviewcasual_chat - Informal catch-upurgent - Time-sensitive meetingSYNCLINE_API_KEY (required): Your Syncline API keySYNCLINE_API_URL (optional): Custom API endpoint (defaults to production)Use MCP when:
Use REST API when:
Both approaches use the same underlying Syncline infrastructure and share the same learning system.
Make sure you've added your API key to the Claude Desktop config file:
"env": {
"SYNCLINE_API_KEY": "sk_live_..."
}
Users must connect their calendar before scheduling:
get_user_calendar_status to verify connectionThe Go implementation offers:
MIT
Syncline is AI-powered meeting scheduling that learns from every booking to get smarter over time. Instead of basic slot-picking, Syncline weighs user preferences, energy patterns, timezone fairness, and meeting context to find the truly optimal time.
Built by developers, for developers. Schedule smarter, not harder.
FAQs
Syncline MCP Server (Go) - Fast, standalone binaries for AI-powered meeting scheduling
We found that @kekwanulabs/syncline-mcp-server-go demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Security News
It has been one year since Shai-Hulud made its first appearance on npm.

Research
/Security News
Operators behind PolinRider used a compromised GitHub account to plant malware in four development versions of a Packagist package with 700,000+ downloads.

Security News
GitHub Actions now supports cache-mode, a least-privilege control on the Actions cache aimed at the cache poisoning technique behind recent compromises.