meetergo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEETERGO_API_KEY | Yes | Bearer token (rgo-… or ak_live:…) | |
| MEETERGO_TIMEOUT | No | Per-request timeout (seconds) | 30 |
| MEETERGO_USER_ID | No | x-meetergo-api-user-id (Platform API Key only) | |
| MEETERGO_API_BASE | No | Override base URL | https://api.meetergo.com/v4 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_meA | Return the authenticated meetergo user (verifies auth; gives your userId). Call this first to confirm the connector works. |
| list_meeting_typesA | List bookable meeting types (event types) with ids, names, durations, slugs. |
| get_meeting_typeA | Get full config of a single meeting type (branding, CSS mode, redirect, reminders, CRM sync options). |
| create_meeting_typeA | Create a meeting type. meetergo requires a fairly complete Minimal example: { "meetingInfo": { "name": "Discovery Call", "description": "", "duration": 30, "channel": "zoom", "enableRedirect": false, "redirect": "", "passEventDetailsToRedirect": false, "customChannelName": "", "customChannelLink": "", "groupBooking": false, "showAvailableSlots": false, "enrichInvitee": false, "bufferBefore": 0, "bufferAfter": 0, "confirmationButton": {"useConfirmationButton": false, "text": "", "color": "", "link": ""} }, "slug": "discovery-call" } Tip: POST /v4/user creates a user + default meeting type in one call; use this endpoint when you need a specific configuration. |
| update_meeting_typeA | Edit a meeting type (partial update — send only fields you want to change): rename, change duration/buffers, redirect URL, branding color, booking-page password, cancellation/rescheduling policy, CRM sync toggles, etc. Example: {"meetingInfo": {"duration": 60}, "slug": "discovery-call-60"} |
| create_one_time_booking_linkB | Generate a single-use booking link for a meeting type. Returns {id, url, ...}. |
| get_personal_pageA | Get your personal booking page: colors, header image, description, online profiles, meeting-type order. |
| update_personal_pageA | Update your personal page branding & graphics. Supported fields (all optional): useCustomColors (bool), primaryColor (str), secondaryColor (str), headerImage (url str or null), description (str), showAllMeetingTypes (bool), meetingTypeOrder (list[str]), onlineProfiles: { linkedIn, facebook, twitter, instagram, xing, phone, email, addressStreet, addressCity, addressPostalCode, addressCountry, customLinks: [{name, url, icon}] } Example: {"useCustomColors": true, "primaryColor": "#2E4A3F", "headerImage": "https://.../hero.jpg"} Note: covers brand colors, header image and profile links. Meeting-type pages also have CSS modes (see update_meeting_type -> cssSetting), but arbitrary raw CSS is configured in the meetergo dashboard, not this API. |
| get_availabilityB | Open bookable slots for a meeting type in a date range. Args: meeting_type_id: Meeting type to check. start: "YYYY-MM-DD". end: "YYYY-MM-DD". timezone: IANA tz for the returned times. |
| create_bookingA | Book an appointment (metered/billed by meetergo). Args: meeting_type_id: Meeting type being booked. start: ISO 8601, e.g. "2026-07-15T14:00:00Z". attendee_email / attendee_firstname / attendee_lastname: attendee. timezone: optional IANA tz of attendee. notes: optional booking note. |
| list_appointmentsA | List appointments (paginated). Args: page: 0-indexed page number (0 = first page). page_size: items per page (1-100). start / end: optional ISO date/time bounds. search: optional free-text search. status: optional status filter. meeting_type_id: optional filter by meeting type. sort_by: "appointment.start" | "appointment.createdAt". sort_direction: "ASC" | "DESC". |
| get_appointmentB | Get full details of a single appointment (attendees, hosts, notes, transcript). |
| cancel_appointmentB | Cancel an appointment. For group bookings, pass attendee_id (single) or cancel_all=True (whole appointment). |
| reschedule_appointmentC | Move an appointment to a new start time (duration unchanged). |
| update_appointment_notesC | Add/replace the host-side note on an appointment. |
| update_meeting_transcriptionA | Store a meeting transcript and/or AI summary (markdown) on an appointment. meetergo does NOT record meetings itself — feed this from a notetaker (Granola, Fireflies, etc.). Only provided fields are sent; omit a field to leave it unchanged. Args: appointment_id: The appointment. transcription: Full transcript in markdown. summary: AI-generated summary in markdown. |
| send_quick_emailA | Send a one-off email to an attendee (e.g. a manual/AI-drafted follow-up). Rate limited to 5 per 5 minutes. Args: attendee_id: Attendee to email (from a booking/webhook payload). title: Subject line. content: Body. |
| create_routing_formA | Create a routing form / multi-step funnel with branching logic.
A qualifier routes the visitor based on conditions: { "routingAction": "eventRedirect", "meetingTypeId": "...", "expression": {"operator":"and","operands":[ {"operator":"equals","target":"attendeeOther", "customTarget":"Company Size","value":"enterprise"}]} } routingAction ∈ eventRedirect | customPage | externalRedirect | contactForm | requestCallback | instantCall | formRedirect. Include one qualifier with "isFallback": true as the default. Field types include text/email/phone/select/ radio/checkbox/file/signature/pdf-template/currency/rating and more. |
| list_routing_formsB | List routing forms. |
| get_routing_formC | Get a routing form's full definition. |
| update_routing_formA | Update a routing form. Qualifiers use declarative sync (items with |
| delete_routing_formB | Delete a routing form. |
| send_routing_formA | Send a routing form to a recipient (one-time link). Returns {publicUrl, status}. Args: form_id: Form to send. recipient_name: Recipient display name. email: Required if delivery_method="email". phone: Required if delivery_method="sms". message: Optional cover message. delivery_method: "email" | "sms" | "link" (link = generate URL only). |
| list_form_recipientsC | List recipients of a form with status (sent/opened/completed) and timestamps. |
| create_data_fieldA | Create a reusable form data field (company-scoped). Example: {"label":"Budget Range","fieldType":"select","required":true, "options":[{"label":"< $10k","value":"small"}, {"label":"$50k+","value":"large"}]} |
| list_data_fieldsB | List reusable form data fields. |
| create_contactA | Create a CRM contact (either email or phone_number is required). Args: first_name, last_name, email, phone_number: basics. tags: labels like ["Lead", "Enterprise"]. notes: internal notes. additional_data: custom fields (e.g. {"revenueBand": "$1-5M"}). |
| search_contactsA | Search/list CRM contacts (paginated). Args: search_term: match name/email/phone. tags: filter by tags. owner_id: filter by account owner. sort_by: firstName|lastName|email|createdAt. sort_order: ASC|DESC. page, limit: pagination (limit max 100). |
| get_contactA | Get a contact's full record (incl. linked appointments and form answers). Look up by contact_id OR by attendee_id (from a booking webhook). |
| update_contactB | Update a contact (partial). Example: {"tags":["Lead","Qualified"], "notes":"Interested in premium plan"}. |
| delete_contactC | Delete a CRM contact. |
| bulk_create_contactsA | Bulk-create contacts (e.g. a CSV import). Each item like the create_contact body: {"firstName","lastName","email","phoneNumber","tags","notes"}. |
| list_webhooksA | List webhook endpoints (max 6 per company). |
| create_webhookA | Register a webhook to drive automations (feed bookings/forms into a CRM, email drafts, your website, etc.). Args: endpoint: HTTPS URL to receive POSTs. event_types: any of booking_created, booking_cancelled, booking_rescheduled, form_submission, new_employee. description: optional label. |
| update_webhookB | Update a webhook (endpoint / description / eventTypes — all optional). |
| delete_webhookC | Delete a webhook endpoint. |
| list_calendar_connectionsA | List connected calendars (confirm your Proton Calendar CalDAV link is active). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 37 tools
Each tool has a clearly distinct purpose. There is no overlap between create_booking, create_one_time_booking_link, and other booking-related tools. Even similar operations like cancel_appointment and reschedule_appointment are clearly differentiated.
All tools follow a consistent verb_noun snake_case pattern (e.g., create_contact, list_appointments, update_meeting_type). There are no mixed conventions or vague verbs.
With 37 tools, the server is on the higher side but still reasonable for a comprehensive scheduling and CRM system. Each tool covers a specific operation without redundancy, but the count is slightly above the ideal range.
The tool set covers most CRUD operations for core resources (contacts, appointments, meeting types, routing forms, webhooks). Minor gaps exist, such as missing delete for meeting types and data fields, but the overall surface is substantial and functional.