MCP Tools Reference

Synced's MCP server exposes 6 tools that cover the full scheduling lifecycle — from reading your calendar to booking meetings with natural language. This page documents every tool, its parameters, and usage examples.

How tools are called

You do not call these tools directly. When you send a message to Claude, it automatically selects the appropriate tool based on your request, constructs the parameters, and returns a formatted response. This reference is useful for understanding what's available and how to phrase your requests.

get_meetings

Retrieves a list of meetings from your connected calendar. Use the filter parameter to narrow results by status.

ParameterTypeDescription
filterenum: "upcoming" | "past" | "draft" | "all"Which meetings to return. Defaults to upcoming meetings if omitted.
limitnumberMaximum number of meetings to return. Useful for keeping responses concise.

Example prompts

  • "What meetings do I have this week?"
  • "Show me my last 5 meetings"
  • "Do I have any draft meetings?"

Example response

[
  {
    "id": "mtg_abc123",
    "title": "Design Review",
    "startTime": "2025-03-15T14:00:00Z",
    "duration": "30 mins",
    "participants": ["sarah@acme.com", "alex@acme.com"],
    "status": "confirmed"
  }
]

get_contacts

Returns your trusted contacts list. Trusted contacts can see your availability and schedule meetings with you directly.

ParameterTypeDescription
includeBlockedbooleanWhen true, includes blocked contacts in the response. Defaults to false.

Example prompts

  • "Show me my contacts"
  • "Who are my trusted contacts?"
  • "List all contacts including blocked ones"

get_availability

Checks your free/busy schedule for a specific date. Returns a list of available time slots based on your connected calendar and working hours.

ParameterTypeDescription
daterequiredstring (ISO 8601)The date to check availability for, in ISO 8601 format (e.g., "2025-03-15").

Example prompts

  • "Am I free tomorrow afternoon?"
  • "What does my availability look like on March 20th?"
  • "Show me my open slots for next Monday"

Example response

{
  "date": "2025-03-15",
  "slots": [
    { "start": "09:00", "end": "10:30" },
    { "start": "13:00", "end": "14:00" },
    { "start": "15:30", "end": "17:00" }
  ]
}

schedule_meeting

Creates a new meeting on your calendar and optionally sends calendar invites to all participants. This is the primary tool for booking meetings programmatically.

ParameterTypeDescription
titlerequiredstringThe title or subject of the meeting.
descriptionstringOptional description or agenda for the meeting.
durationrequiredenum: "15 mins" | "30 mins" | "45 mins" | "1 hour" | "1.5 hours" | "2 hours"How long the meeting should last.
startTimerequiredstring (ISO 8601)The start time of the meeting in ISO 8601 format (e.g., "2025-03-15T14:00:00Z").
participantsrequiredstring[]Array of participant email addresses (e.g., ["sarah@acme.com", "alex@corp.com"]).
sendInvitesbooleanWhether to send calendar invites to participants. Defaults to true.

Example prompts

  • "Schedule a 30-minute call with sarah@acme.com next Tuesday at 2pm"
  • "Book a 1-hour design review with the team on March 20th at 10am"
  • "Create a meeting called 'Weekly Sync' for 45 minutes with alex@corp.com"

Timezone handling

The startTime parameter accepts ISO 8601 timestamps. Claude automatically converts relative times like "next Tuesday at 2pm" into the correct ISO format based on your timezone settings in Synced.

get_recommended_slots

Finds mutually available time slots across multiple participants and optionally ranks them using AI. This is ideal when you need to coordinate a meeting but do not have a specific time in mind.

ParameterTypeDescription
participantsrequiredstring[]Array of participant email addresses to find mutual availability for.
durationrequiredenum: "15 mins" | "30 mins" | "45 mins" | "1 hour" | "1.5 hours" | "2 hours"The desired meeting duration.
timeRangeenum: "within_1_week" | "within_2_weeks" | "within_1_month"How far ahead to search for available slots. Defaults to within_1_week.
useAIbooleanWhen true, uses AI to rank slots by likelihood of being ideal (e.g., avoiding early mornings or late evenings). Defaults to false.

Example prompts

  • "Find the best time for a 1-hour meeting with alex@corp.com and jordan@corp.com"
  • "When can I meet with the marketing team for 30 minutes this week?"
  • "Suggest meeting times with sarah@acme.com within the next 2 weeks"

Example response

{
  "slots": [
    {
      "start": "2025-03-17T10:00:00Z",
      "end": "2025-03-17T11:00:00Z",
      "score": 0.95
    },
    {
      "start": "2025-03-18T14:00:00Z",
      "end": "2025-03-18T15:00:00Z",
      "score": 0.87
    }
  ]
}

When useAI is enabled, each slot includes a score between 0 and 1 indicating how ideal the time is, factoring in patterns like preferred meeting hours and buffer time between calls.

natural_language_schedule

Parses a freeform natural language scheduling request and creates the meeting. This is the most flexible tool — it handles participant lookup, time parsing, and meeting creation in a single call.

ParameterTypeDescription
messagerequiredstringA natural language scheduling request (e.g., "Coffee with Alex Friday at 3pm for 30 minutes").

Example prompts

  • "Coffee with Alex Friday at 3pm for 30 minutes"
  • "Lunch meeting with the product team next Wednesday"
  • "Set up a quick 15-minute check-in with sarah@acme.com tomorrow morning"

When to use natural_language_schedule

This tool is best for simple, one-shot scheduling requests. For more complex workflows — like finding mutual availability across multiple people before booking — Claude will typically combine get_recommended_slots with schedule_meeting instead.

Tool Summary

ToolPurpose
get_meetingsList upcoming, past, draft, or all meetings
get_contactsRetrieve trusted contacts list
get_availabilityCheck free/busy schedule for a date
schedule_meetingCreate a meeting and send calendar invites
get_recommended_slotsFind optimal mutual availability with AI ranking
natural_language_scheduleParse and execute a freeform scheduling request

Next Steps