agendaforge
What this MCP does
Manages events, agendas, sessions, speakers, attendees, sponsors, forms, contacts, email templates, approvals, and organizer workflows.
Tools
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'contactId', 'body'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'body': {'type': 'string', 'description': 'The note text to save on the contact.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': 'The Convex id of the contact to annotate (e.g. from a contact search/list tool).'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'sessionId', 'contactId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'role': {'enum': ['speaker', 'moderator', 'panelist', 'co-presenter', 'facilitator', 'chairperson', 'sponsor', 'exhibitor'], 'type': 'string', 'description': "The speaker's role on this session. Defaults to 'speaker'."}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': "The speaker's contact id."}, 'sessionId': {'type': 'string', 'description': 'The session id.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'ticketId': {'type': 'string', 'description': 'The ticket id to check in.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'ticketCode': {'type': 'string', 'description': 'The ticket code to check in.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'placement': {'type': 'object', 'required': ['sessionId', 'roomId', 'startTime', 'endTime'], 'properties': {'roomId': {'type': 'string', 'description': 'Room id from list_tracks_rooms.'}, 'endTime': {'type': 'string', 'description': 'Proposed ISO 8601 end time.'}, 'sessionId': {'type': 'string', 'description': 'Session id from list_sessions.'}, 'startTime': {'type': 'string', 'description': 'Proposed ISO 8601 start time.'}}, 'description': 'One placement with sessionId, roomId, startTime, and endTime.', 'additionalProperties': False}, 'placements': {'type': 'array', 'items': {'type': 'object', 'required': ['sessionId', 'roomId', 'startTime', 'endTime'], 'properties': {'roomId': {'type': 'string', 'description': 'Room id from list_tracks_rooms.'}, 'endTime': {'type': 'string', 'description': 'Proposed ISO 8601 end time.'}, 'sessionId': {'type': 'string', 'description': 'Session id from list_sessions.'}, 'startTime': {'type': 'string', 'description': 'Proposed ISO 8601 start time.'}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1, 'description': 'Batch of up to 20 placements.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'name', 'subject', 'body'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'body': {'type': 'string', 'description': 'The email body as HTML (supports merge variables).'}, 'name': {'type': 'string', 'description': 'The template name.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'subject': {'type': 'string', 'description': 'The email subject line.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['request_id', 'name', 'type', 'startDate', 'endDate', 'timezone'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'name': {'type': 'string', 'description': 'Event name.'}, 'type': {'enum': ['conference', 'workshop', 'webinar', 'meetup', 'summit', 'hackathon', 'other'], 'type': 'string', 'description': 'Event type.'}, 'endDate': {'type': 'string', 'description': 'End date, YYYY-MM-DD (not before startDate).'}, 'timezone': {'type': 'string', 'description': 'IANA timezone, e.g. Asia/Karachi.'}, 'isVirtual': {'type': 'boolean', 'description': 'Whether the event is virtual (default false).'}, 'startDate': {'type': 'string', 'description': 'Start date, YYYY-MM-DD (not in the past).'}, 'venueCity': {'type': 'string', 'description': 'Venue city.'}, 'venueName': {'type': 'string', 'description': 'Venue name.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'description': {'type': 'string', 'description': 'Event description.'}, 'virtualLink': {'type': 'string', 'description': 'Join link for virtual events.'}, 'venueCountry': {'type': 'string', 'description': 'Venue country.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'name'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'name': {'type': 'string', 'description': "The form's internal name (required)."}, 'brief': {'type': 'string', 'description': "Natural-language description of the form to generate (e.g. 'a CFP form collecting talk title, abstract, and speaker bio'). Omit to build from `fields` instead."}, 'fields': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'type'], 'properties': {'type': {'enum': ['text', 'textarea', 'email', 'phone', 'number', 'date', 'url', 'select', 'multiselect', 'checkbox', 'radio'], 'type': 'string', 'description': 'Field type.'}, 'label': {'type': 'string', 'description': 'Field label.'}, 'required': {'type': 'boolean', 'description': 'Whether the field is required.'}}, 'additionalProperties': False}, 'description': 'Explicit field list (non-AI path). Provide this instead of `brief`.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'formType': {'enum': ['portal', 'sponsor_intake', 'registration', 'custom'], 'type': 'string', 'description': "The form's type. Defaults to 'custom' when omitted."}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'title'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'room': {'type': 'string', 'description': "The room's exact NAME as returned by get_field_options (not free text)."}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'PREDEFINED tag names from get_field_options (not free text).'}, 'type': {'enum': ['keynote', 'talk', 'panel', 'workshop', 'lightning', 'break', 'networking', 'social', 'placeholder', 'other'], 'type': 'string', 'description': 'The session type.'}, 'title': {'type': 'string', 'description': 'The session title.'}, 'track': {'type': 'string', 'description': "The track's exact NAME as returned by get_field_options (not free text)."}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'duration': {'type': 'number', 'description': 'Duration in minutes.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'description': {'type': 'string', 'description': 'The session description.'}, 'maxAttendees': {'type': 'number', 'description': 'Maximum attendee capacity.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'submissionId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'submissionId': {'type': 'string', 'description': 'The submission id.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'contactId', 'title', 'type'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'type': {'enum': ['bio_update', 'photo_upload', 'slide_upload', 'travel_form', 'agreement', 'document_request', 'custom'], 'type': 'string', 'description': "The task type. Use 'custom' if none fit."}, 'title': {'type': 'string', 'description': 'The task title shown to the speaker.'}, 'dueDate': {'type': 'string', 'description': 'Optional due date as an ISO 8601 string.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': "The speaker's contact id."}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'description': {'type': 'string', 'description': 'Optional longer description of what the speaker must do.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'name'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'name': {'type': 'string', 'description': 'Sponsor name.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'website': {'type': 'string', 'description': 'Sponsor website URL.'}, 'hasBooth': {'type': 'boolean', 'default': False, 'description': 'Whether the sponsor has a booth.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'description': {'type': 'string', 'description': 'Sponsor description.'}, 'customFields': {'type': 'object', 'description': "Key→value map of custom fields. Only include keys you want to add or change; existing custom fields are preserved (send a key with value null to remove it). You may key each entry by the field's display name (e.g. 'Portal enabled') or its stored key, the server matches it to the correct custom field, so you do NOT need to guess the exact snake_case key. Values may be strings, numbers, or booleans. Reading the record first (search_contacts / list_sessions / list_sponsors) shows the custom fields already set.", 'additionalProperties': True}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'submissionIds', 'decision'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'note': {'type': 'string', 'description': 'Optional decision note recorded on each submission.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'decision': {'enum': ['accept', 'reject'], 'type': 'string', 'description': 'Accept or reject the submissions.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'submissionIds': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 25, 'minItems': 1, 'description': 'The submission ids to decide (1–25).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'sessionId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'sessionId': {'type': 'string', 'description': 'The session id to delete.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'sponsorId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'sponsorId': {'type': 'string', 'description': 'The sponsor id to delete.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'templateId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': 'Optional contact id to use as the variable-substitution context.'}, 'templateId': {'type': 'string', 'description': 'The email template id (org or event template).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'day': {'type': 'string', 'description': 'Limit to one day, YYYY-MM-DD.'}, 'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'contactId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': 'Contact id from list_speakers or search_contacts.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': 'Optional contact id.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'sessionId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'sessionId': {'type': 'string', 'description': 'Session id, as returned by list_sessions.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['request_id', 'contacts'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contacts': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'firstName', 'lastName', 'email'], 'properties': {'bio': {'type': 'string', 'description': 'Biography.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Free-text tags.'}, 'type': {'enum': ['speaker', 'sponsor', 'attendee', 'vendor', 'partner', 'exhibitor', 'other'], 'type': 'string', 'description': "The contact's type/category."}, 'email': {'type': 'string', 'description': 'Email address.'}, 'phone': {'type': 'string', 'description': 'Phone number.'}, 'company': {'type': 'string', 'description': 'Company.'}, 'website': {'type': 'string', 'description': 'Personal website URL.'}, 'jobTitle': {'type': 'string', 'description': 'Job title.'}, 'lastName': {'type': 'string', 'description': 'Last name.'}, 'location': {'type': 'string', 'description': 'Location.'}, 'firstName': {'type': 'string', 'description': 'First name.'}, 'expertiseAreas': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Areas of expertise.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Contact rows to import.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'portalId', 'contactId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'portalId': {'type': 'string', 'description': 'The portal id.'}, 'contactId': {'type': 'string', 'description': 'The contact id to invite.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'contactId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': 'Contact id from list_speakers or search_contacts.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'status': {'type': 'string', 'description': 'Filter by session status (e.g. proposed, accepted, confirmed, rejected).'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'trackId': {'type': 'string', 'description': 'Filter to one track (id from list_sessions rows or the event overview).'}, 'scheduled': {'type': 'boolean', 'description': 'true → only sessions with a scheduled time; false → only unscheduled.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'formId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'formId': {'type': 'string', 'description': 'Form id, as returned by list_forms.'}, 'status': {'type': 'string', 'description': 'Filter: draft, submitted, under_review, approved, waitlisted, or rejected.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'action'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'name': {'type': 'string', 'description': "The new room's name (create)."}, 'action': {'enum': ['create', 'rename'], 'type': 'string', 'description': "'create' or 'rename'."}, 'roomId': {'type': 'string', 'description': 'The room id to rename (rename).'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'newName': {'type': 'string', 'description': 'The replacement name (rename).'}, 'capacity': {'type': 'number', 'description': "The new room's capacity (create)."}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'action'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'name': {'type': 'string', 'description': "The new track's name (create)."}, 'action': {'enum': ['create', 'rename'], 'type': 'string', 'description': "'create' or 'rename'."}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'newName': {'type': 'string', 'description': 'The replacement name (rename).'}, 'trackId': {'type': 'string', 'description': 'The track id to rename (rename).'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'sessionId', 'contactId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': 'The contact id of the speaker to remove from the session.'}, 'sessionId': {'type': 'string', 'description': 'The session id.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'intent'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'intent': {'enum': ['event.logo', 'event.cover'], 'type': 'string', 'description': 'Which image slot the upload is for.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'mode', 'sessionId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'mode': {'enum': ['schedule', 'move', 'swap', 'unschedule'], 'type': 'string', 'description': 'The schedule operation to perform.'}, 'roomId': {'type': 'string', 'description': 'The room id (schedule/move).'}, 'endTime': {'type': 'string', 'description': 'ISO 8601 end time (schedule/move).'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'sessionId': {'type': 'string', 'description': 'The session id.'}, 'startTime': {'type': 'string', 'description': 'ISO 8601 start time (schedule/move).'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'otherSessionId': {'type': 'string', 'description': 'The session id to swap with (swap).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Search text (2–200 characters).'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'cursor': {'type': 'string', 'description': 'Opaque cursor returned by the previous page.'}, 'search': {'type': 'string', 'description': 'Optional contact search text.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['query'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'query': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Semantic search text (2–200 characters).'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'templateId', 'contactId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'contactId': {'type': 'string', 'description': 'The contact id of the single recipient.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'templateId': {'type': 'string', 'description': 'The email template id (org or event template).'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'contactId', 'subject', 'body'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'body': {'type': 'string', 'description': "The message to send, as plain text. Write only the body of the message — do NOT include a greeting (e.g. 'Hi Waris,') or a sign-off/signature; those are added automatically. Do not write HTML — it is wrapped in a template."}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'subject': {'type': 'string', 'description': 'Email subject line.'}, 'contactId': {'type': 'string', 'description': 'The Convex id of the contact/speaker to email (e.g. from a contact search/list tool).'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'taskId', 'contactId', 'recipientEmail', 'subject', 'html'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'html': {'type': 'string', 'description': 'Email body as HTML.'}, 'taskId': {'type': 'string', 'description': 'The speakerTasks id being chased.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'subject': {'type': 'string', 'description': 'Email subject line.'}, 'contactId': {'type': 'string', 'description': 'The contact (speaker/exhibitor) id to email.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'followupNumber': {'type': 'number', 'description': 'Which follow-up this is (1-based).'}, 'recipientEmail': {'type': 'string', 'description': 'Recipient email address.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'formId', 'submissionId', 'status'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'note': {'type': 'string', 'description': 'Optional decision note recorded on the submission.'}, 'formId': {'type': 'string', 'description': 'The form id.'}, 'status': {'enum': ['submitted', 'under_review', 'approved', 'waitlisted', 'rejected'], 'type': 'string', 'description': 'The new submission status.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'submissionId': {'type': 'string', 'description': 'The submission id.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['request_id', 'mode'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'mode': {'enum': ['approve', 'direct'], 'type': 'string', 'description': 'approve: writes wait for human approval. direct: writes execute immediately.'}, 'event': {'type': 'string', 'description': 'Scope the change to one event (Convex event id from list_events) instead of the whole organization; other events keep the org default.'}, 'confirm': {'type': 'boolean', 'description': 'false or absent: return a preview only, change nothing. true: apply the change.'}, 'permanent': {'type': 'boolean', 'description': 'Keep direct mode on until turned off instead of expiring. Mutually exclusive with duration_hours.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'allow_comms': {'type': 'boolean', 'description': 'Also let send_email, speaker messages, reminders, and portal invites go out without approval.'}, 'duration_hours': {'type': 'number', 'maximum': 720, 'minimum': 1, 'description': 'How long direct mode stays on before reverting to approvals (default 24). Ignored for mode approve; mutually exclusive with permanent.'}, 'allow_destructive': {'type': 'boolean', 'description': 'Also allow delete_session and delete_sponsor. Deletes are always notified and restorable from AI activity.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'contactId'], 'properties': {'bio': {'type': 'string', 'description': 'New biography.'}, 'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Replacement list of free-text tags for the contact.'}, 'type': {'enum': ['speaker', 'sponsor', 'attendee', 'vendor', 'partner', 'exhibitor', 'other'], 'type': 'string', 'description': "The contact's type/category."}, 'phone': {'type': 'string', 'description': 'New phone number.'}, 'rating': {'type': 'number', 'description': 'A numeric rating/score for the contact.'}, 'status': {'enum': ['active', 'inactive', 'archived'], 'type': 'string', 'description': "The contact's status. 'archived' hides them; this is reversible."}, 'company': {'type': 'string', 'description': 'New company.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'website': {'type': 'string', 'description': 'New personal website URL.'}, 'jobTitle': {'type': 'string', 'description': 'New job title.'}, 'lastName': {'type': 'string', 'description': 'New last name.'}, 'location': {'type': 'string', 'description': 'New location.'}, 'contactId': {'type': 'string', 'description': 'The contact id to update.'}, 'firstName': {'type': 'string', 'description': 'New first name.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'socialLinks': {'type': 'object', 'properties': {'github': {'type': 'string', 'description': 'GitHub profile URL.'}, 'twitter': {'type': 'string', 'description': 'Twitter/X profile URL.'}, 'linkedin': {'type': 'string', 'description': 'LinkedIn profile URL.'}}, 'description': "The contact's social profile links.", 'additionalProperties': False}, 'customFields': {'type': 'object', 'description': "Key→value map of custom fields. Only include keys you want to add or change; existing custom fields are preserved (send a key with value null to remove it). You may key each entry by the field's display name (e.g. 'Portal enabled') or its stored key, the server matches it to the correct custom field, so you do NOT need to guess the exact snake_case key. Values may be strings, numbers, or booleans. Reading the record first (search_contacts / list_sessions / list_sponsors) shows the custom fields already set.", 'additionalProperties': True}, 'expertiseAreas': {'type': 'array', 'items': {'type': 'string'}, 'description': "Replacement list of the contact's areas of expertise."}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'formId', 'instruction'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'formId': {'type': 'string', 'description': 'The draft form id to edit.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'instruction': {'type': 'string', 'description': "The natural-language edit instruction (e.g. 'rename the title', 'add a phone field')."}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'formId', 'statuses'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'formId': {'type': 'string', 'description': 'The form id.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'statuses': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'color', 'order', 'isTerminal', 'isAccepted', 'isRejected'], 'properties': {'id': {'type': 'string', 'description': 'Stable stage id.'}, 'color': {'type': 'string', 'description': 'Stage color (hex).'}, 'label': {'type': 'string', 'description': 'Stage label.'}, 'order': {'type': 'number', 'description': 'Display order (0-based).'}, 'isAccepted': {'type': 'boolean', 'description': 'Whether the stage means accepted.'}, 'isRejected': {'type': 'boolean', 'description': 'Whether the stage means rejected.'}, 'isTerminal': {'type': 'boolean', 'description': 'Whether the stage ends the pipeline.'}}, 'additionalProperties': False}, 'description': 'The full replacement pipeline stages array.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'sessionId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'room': {'type': 'string', 'description': "The room's exact NAME as returned by get_field_options (not free text)."}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Replacement list of PREDEFINED tag names for the session. Each must exactly match a tag from get_field_options — tags are not free text.'}, 'type': {'enum': ['keynote', 'talk', 'panel', 'workshop', 'lightning', 'break', 'networking', 'social', 'placeholder', 'other'], 'type': 'string', 'description': 'New session type.'}, 'level': {'type': 'string', 'description': "The level's exact NAME as returned by get_field_options (not free text)."}, 'title': {'type': 'string', 'description': 'New session title.'}, 'track': {'type': 'string', 'description': "The track's exact NAME as returned by get_field_options (not free text)."}, 'format': {'type': 'string', 'description': "The format's exact NAME as returned by get_field_options (not free text)."}, 'status': {'type': 'string', 'description': "The status's exact NAME as returned by get_field_options (not free text)."}, 'endTime': {'type': 'string', 'description': 'New end time as an ISO 8601 string.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'duration': {'type': 'number', 'description': 'New duration in minutes (recomputes end time if scheduled).'}, 'isPublic': {'type': 'boolean', 'description': 'Whether the session is public.'}, 'language': {'type': 'string', 'description': "The language's exact NAME as returned by get_field_options (not free text)."}, 'sessionId': {'type': 'string', 'description': 'The session id to update.'}, 'startTime': {'type': 'string', 'description': 'New start time as an ISO 8601 string.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'description': {'type': 'string', 'description': 'New session description.'}, 'isTentative': {'type': 'boolean', 'description': 'Whether the session is tentative.'}, 'customFields': {'type': 'object', 'description': "Key→value map of custom fields. Only include keys you want to add or change; existing custom fields are preserved (send a key with value null to remove it). You may key each entry by the field's display name (e.g. 'Portal enabled') or its stored key, the server matches it to the correct custom field, so you do NOT need to guess the exact snake_case key. Values may be strings, numbers, or booleans. Reading the record first (search_contacts / list_sessions / list_sponsors) shows the custom fields already set.", 'additionalProperties': True}, 'maxAttendees': {'type': 'number', 'description': 'New maximum attendee capacity.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', 'required': ['eventId', 'request_id', 'sponsorId'], 'properties': {'org': {'type': 'string', 'description': 'Organization slug. Only needed when you belong to multiple organizations; must be one returned by list_my_orgs.'}, 'name': {'type': 'string', 'description': 'New sponsor name.'}, 'eventId': {'type': 'string', 'description': 'Event id, as returned by list_events.'}, 'website': {'type': 'string', 'description': 'New sponsor website URL.'}, 'hasBooth': {'type': 'boolean', 'description': 'Whether the sponsor has a booth.'}, 'sponsorId': {'type': 'string', 'description': 'The sponsor id to update.'}, 'request_id': {'type': 'string', 'description': 'Client-generated unique id for this write (e.g. a UUID). Retries with the same request_id return the original executed or proposed outcome instead of creating a duplicate. Never reuse a request_id for different arguments.'}, 'description': {'type': 'string', 'description': 'New sponsor description.'}, 'customFields': {'type': 'object', 'description': "Key→value map of custom fields. Only include keys you want to add or change; existing custom fields are preserved (send a key with value null to remove it). You may key each entry by the field's display name (e.g. 'Portal enabled') or its stored key, the server matches it to the correct custom field, so you do NOT need to guess the exact snake_case key. Values may be strings, numbers, or booleans. Reading the record first (search_contacts / list_sessions / list_sponsors) shows the custom fields already set.", 'additionalProperties': True}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
Stratly Town Square
Provides an agent community workspace with chat rooms, presence, problem-solving teams, work items, bounties, activity feeds, and…
freedom-mcp
Supports company operations through commitments, teams, agents, customer evidence, leads, content workflows, spreadsheets, commer…
独行录 / opcmenu
Supports founder and company discovery, collaboration goals and tasks, events and signups, networking, messaging, profiles, produ…
Local MCP
Connects AI assistants to Mac email, calendars, reminders, notes, tasks, files, Microsoft 365, Todoist, spreadsheets, and daily b…
Stable Baseline
Manages company documents, knowledge graphs, whiteboards, projects, plans, tasks, teams, and improvement workflows.
mu
Supports personal and collaborative tasks including web browsing, app creation, blogs, bookmarks, discussions, and contact manage…
Odichat
Manages WhatsApp, Instagram, and Facebook inboxes with contacts, conversations, agents, automation rules, labels, canned response…
mcp
Manages Nestr workspaces, roles, circles, tensions, governance proposals, comments, daily plans, graph relationships, agents, and…