MCP App Store
Productivity
Joinways icon

Joinways

by Joinways SAS

Overview

Manage inquiries, build quotes, check space availability, and generate banquet event orders (BEOs) for event venues directly from ChatGPT. Qualify a new lead, draft a quote for a wedding or corporate event, update a booking's status, send a follow-up email, or pull analytics on confirmed revenue — without leaving the conversation. Joinways helps event venue teams run everything from first inquiry to confirmed booking.

Tools

add_event_note

ChatGPT
Add a note to an event.

add_event_note

ChatGPT
Add a note to an event.

add_quote_items

ChatGPT
Append line items to a quote. Totals are computed server-side from the same VAT engine as the UI (incl. is_offered and discount_amount). Items linked to a catalog (location_item_id) are validated against the catalog minimum price — offered lines bypass the check.

add_quote_items

ChatGPT
Append line items to a quote. Totals are computed server-side from the same VAT engine as the UI (incl. is_offered and discount_amount). Items linked to a catalog (location_item_id) are validated against the catalog minimum price — offered lines bypass the check.

block_venue_dates

ChatGPT
Mark a venue (or sub-space) as unavailable for a date range. Omit start_time/end_time for a full-day block, or pass both for a partial-day block. Returns the created closure with its id.

block_venue_dates

ChatGPT
Mark a venue (or sub-space) as unavailable for a date range. Omit start_time/end_time for a full-day block, or pass both for a partial-day block. Returns the created closure with its id.

check_venue_availability

ChatGPT
Detect conflicts on a venue/space between two dates.

check_venue_availability

ChatGPT
Detect conflicts on a venue/space between two dates.

convert_lead_to_event

ChatGPT
Create an event from a lead and mark the lead validated.

convert_lead_to_event

ChatGPT
Create an event from a lead and mark the lead validated.

count_companies

ChatGPT
Count companies matching filters.

count_companies

ChatGPT
Count companies matching filters.

count_events

ChatGPT
Count events matching filters. Use for "how many" questions.

count_events

ChatGPT
Count events matching filters. Use for "how many" questions.

count_leads

ChatGPT
Count leads matching filters. Use for "how many" questions.

count_leads

ChatGPT
Count leads matching filters. Use for "how many" questions.

count_people

ChatGPT
Count contacts matching filters.

count_people

ChatGPT
Count contacts matching filters.

count_quotes

ChatGPT
Count quotes matching filters.

count_quotes

ChatGPT
Count quotes matching filters.

count_tasks

ChatGPT
Count tasks matching filters.

count_tasks

ChatGPT
Count tasks matching filters.

create_catalog_item

ChatGPT
Add an item to a venue catalog.

create_catalog_item

ChatGPT
Add an item to a venue catalog.

create_company

ChatGPT
Create a company.

create_company

ChatGPT
Create a company.

create_event

ChatGPT
Create an event. company_name and contact_email auto-create rows if needed.

create_event

ChatGPT
Create an event. company_name and contact_email auto-create rows if needed.

create_person

ChatGPT
Create a contact.

create_person

ChatGPT
Create a contact.

create_quote

ChatGPT
Create a quote on an event. Returns quote_id.

create_quote

ChatGPT
Create a quote on an event. Returns quote_id.

create_task

ChatGPT
Create a task, optionally linked to an event.

create_task

ChatGPT
Create a task, optionally linked to an event.

delete_catalog_item

ChatGPT
Remove a catalog item.

delete_catalog_item

ChatGPT
Remove a catalog item.

delete_event

ChatGPT
Permanently delete an event and its data.

delete_event

ChatGPT
Permanently delete an event and its data.

delete_person

ChatGPT
Delete a contact.

delete_person

ChatGPT
Delete a contact.

delete_quote

ChatGPT
Permanently delete a quote and its items.

delete_quote

ChatGPT
Permanently delete a quote and its items.

delete_quote_item

ChatGPT
Remove a single line item from a quote.

delete_quote_item

ChatGPT
Remove a single line item from a quote.

delete_task

ChatGPT
Delete a task.

delete_task

ChatGPT
Delete a task.

download_quote

ChatGPT
Generate a PDF for a quote (or its invoice once accepted), store it as a new version in quote_pdfs, and return a 1h signed URL the client can download. Mirrors the web download flow: if the quote is accepted without an invoice number, a legal invoice number is generated and persisted.

download_quote

ChatGPT
Generate a PDF for a quote (or its invoice once accepted), store it as a new version in quote_pdfs, and return a 1h signed URL the client can download. Mirrors the web download flow: if the quote is accepted without an invoice number, a legal invoice number is generated and persisted.

duplicate_quote

ChatGPT
Clone a quote with all its line items. The copy is a clean draft (status=draft, is_invoiced=false, signature_mode='manual'). Header snapshot (client, terms, reverse-charge flag) is preserved. Returns the new quote id.

duplicate_quote

ChatGPT
Clone a quote with all its line items. The copy is a clean draft (status=draft, is_invoiced=false, signature_mode='manual'). Header snapshot (client, terms, reverse-charge flag) is preserved. Returns the new quote id.

generate_email_draft

ChatGPT
AI-draft an email body for an event.

generate_email_draft

ChatGPT
AI-draft an email body for an event.

get_accounting_analytics

ChatGPT
Confirmed revenue per month over the last 12 months.

get_accounting_analytics

ChatGPT
Confirmed revenue per month over the last 12 months.

get_beo

ChatGPT
Full BEO (feuille de fonction): event-level fields (schedule, setup, notes, vendors, on-site contact, context), staff, day-of contacts, and per-day overrides. This is the canonical way to inspect everything an event's BEO holds.

get_beo

ChatGPT
Full BEO (feuille de fonction): event-level fields (schedule, setup, notes, vendors, on-site contact, context), staff, day-of contacts, and per-day overrides. This is the canonical way to inspect everything an event's BEO holds.

get_commercial_analytics

ChatGPT
Conversion rate and revenue over the last 12 months.

get_commercial_analytics

ChatGPT
Conversion rate and revenue over the last 12 months.

get_event

ChatGPT
Full event with company/contact/venue/spaces/BEO. Excludes search vector and embedding.

get_event

ChatGPT
Full event with company/contact/venue/spaces/BEO. Excludes search vector and embedding.

get_events_analytics

ChatGPT
Monthly event counts by status over the last 12 months.

get_events_analytics

ChatGPT
Monthly event counts by status over the last 12 months.

get_lead

ChatGPT
Get full lead with ai_summary, requirements and metadata.

get_lead

ChatGPT
Get full lead with ai_summary, requirements and metadata.

get_quote_details

ChatGPT
Full quote with line items, totals and status.

get_quote_details

ChatGPT
Full quote with line items, totals and status.

get_venue

ChatGPT
Venue with spaces and members.

get_venue

ChatGPT
Venue with spaces and members.

get_venue_availability

ChatGPT
Business hours, blocked dates (closures) and enforcement mode for a venue or sub-space. Use from/to to scope closures to a date window.

get_venue_availability

ChatGPT
Business hours, blocked dates (closures) and enforcement mode for a venue or sub-space. Use from/to to scope closures to a date window.

import_venue_holidays

ChatGPT
Bulk-create public-holiday closures on a venue (enable=true) or remove all auto-imported ones (enable=false). Country is an ISO-3166 alpha-2 or alpha-3 code, e.g. "FR".

import_venue_holidays

ChatGPT
Bulk-create public-holiday closures on a venue (enable=true) or remove all auto-imported ones (enable=false). Country is an ISO-3166 alpha-2 or alpha-3 code, e.g. "FR".

list_catalog_items

ChatGPT
Venue catalog (paginated). detail="full" includes description and tags.

list_catalog_items

ChatGPT
Venue catalog (paginated). detail="full" includes description and tags.

list_companies

ChatGPT
List companies (paginated, compact summary). detail="full" includes enrichment_data.

list_companies

ChatGPT
List companies (paginated, compact summary). detail="full" includes enrichment_data.

list_email_connections

ChatGPT
User Gmail/Outlook connections. Required before send.

list_email_connections

ChatGPT
User Gmail/Outlook connections. Required before send.

list_email_templates

ChatGPT
Available email templates.

list_email_templates

ChatGPT
Available email templates.

list_event_contacts

ChatGPT
Day-of contacts for an event (on-site & remote): display name, role, phone, email, isOnsite, isPrimary, optional day pin. The primary contact is mirrored to events.onsite_contact_person_id.

list_event_contacts

ChatGPT
Day-of contacts for an event (on-site & remote): display name, role, phone, email, isOnsite, isPrimary, optional day pin. The primary contact is mirrored to events.onsite_contact_person_id.

list_event_days

ChatGPT
Per-day rows for a multi-day event (setup/catering/technical/service overrides). Mono-day events return [] — fall back to the flat events.<col> values in that case. Rows are auto-created by a Postgres trigger when start_date/end_date change.

list_event_days

ChatGPT
Per-day rows for a multi-day event (setup/catering/technical/service overrides). Mono-day events return [] — fall back to the flat events.<col> values in that case. Rows are auto-created by a Postgres trigger when start_date/end_date change.

list_event_emails

ChatGPT
Emails linked to an event.

list_event_emails

ChatGPT
Emails linked to an event.

list_event_files

ChatGPT
Files attached to an event.

list_event_files

ChatGPT
Files attached to an event.

list_event_notes

ChatGPT
Notes attached to an event.

list_event_notes

ChatGPT
Notes attached to an event.

list_event_staff

ChatGPT
BEO staff list for an event: display name, role, call/leave time, phone, email, notes, optional day pin.

list_event_staff

ChatGPT
BEO staff list for an event: display name, role, call/leave time, phone, email, notes, optional day pin.

list_events

ChatGPT
List events with company/contact/venue (paginated, compact summary). detail="full" returns every column.

list_events

ChatGPT
List events with company/contact/venue (paginated, compact summary). detail="full" returns every column.

list_leads

ChatGPT
List inbox leads (paginated, compact summary). The summary omits personal identifiers (client_email, client_phone); use detail="full" or get_lead to retrieve contact details plus ai_summary/requirements/metadata.

list_leads

ChatGPT
List inbox leads (paginated, compact summary). The summary omits personal identifiers (client_email, client_phone); use detail="full" or get_lead to retrieve contact details plus ai_summary/requirements/metadata.

list_notifications

ChatGPT
Recent notifications for the current user.

list_notifications

ChatGPT
Recent notifications for the current user.

list_people

ChatGPT
List contacts (paginated, compact summary). The summary omits personal identifiers (email, phone); pass detail="full" to include email, phone and enrichment_data when the task requires them.

list_people

ChatGPT
List contacts (paginated, compact summary). The summary omits personal identifiers (email, phone); pass detail="full" to include email, phone and enrichment_data when the task requires them.

list_quotes

ChatGPT
List quotes (paginated, compact summary). detail="full" includes terms and client snapshot.

list_quotes

ChatGPT
List quotes (paginated, compact summary). detail="full" includes terms and client snapshot.

list_tasks

ChatGPT
List tasks (paginated, compact summary). detail="full" includes description/notes/attachments.

list_tasks

ChatGPT
List tasks (paginated, compact summary). detail="full" includes description/notes/attachments.

list_team_members

ChatGPT
Members of the workspace, for picking task/event assignees. Returns the assignee id and display name only — no email, avatar or other personal identifiers.

list_team_members

ChatGPT
Members of the workspace, for picking task/event assignees. Returns the assignee id and display name only — no email, avatar or other personal identifiers.

list_venue_closures

ChatGPT
Effective blocked-date list for a venue (own closures + those inherited from a parent venue, plus any auto-imported holidays). Filter with from/to.

list_venue_closures

ChatGPT
Effective blocked-date list for a venue (own closures + those inherited from a parent venue, plus any auto-imported holidays). Filter with from/to.

list_venue_conflicts

ChatGPT
Overlapping events for a venue.

list_venue_conflicts

ChatGPT
Overlapping events for a venue.

list_venue_spaces

ChatGPT
Sub-spaces of a venue.

list_venue_spaces

ChatGPT
Sub-spaces of a venue.

list_venues

ChatGPT
Venues with nested spaces.

list_venues

ChatGPT
Venues with nested spaces.

reorder_quote_items

ChatGPT
Batch update sort_order + event_day on a quote's line items. Use this for drag-and-drop reordering across days. Only items that actually belong to the specified quote are touched.

reorder_quote_items

ChatGPT
Batch update sort_order + event_day on a quote's line items. Use this for drag-and-drop reordering across days. Only items that actually belong to the specified quote are touched.

search_companies

ChatGPT
Top company matches by name.

search_companies

ChatGPT
Top company matches by name.

send_event_email

ChatGPT
Send email via a Gmail/Outlook connection, linked to an event. Connection must have send permission.

send_event_email

ChatGPT
Send email via a Gmail/Outlook connection, linked to an event. Connection must have send permission.

unblock_venue_dates

ChatGPT
Remove a previously-created closure by its id. Use list_venue_closures or get_venue_availability to find the id. Auto-imported holiday closures share the same id surface but should normally be removed via import_venue_holidays(enable=false) to clear the whole batch at once.

unblock_venue_dates

ChatGPT
Remove a previously-created closure by its id. Use list_venue_closures or get_venue_availability to find the id. Auto-imported holiday closures share the same id surface but should normally be removed via import_venue_holidays(enable=false) to clear the whole batch at once.

update_beo

ChatGPT
Update event-level BEO fields: schedule (rich), setup_type, *_notes, beo_vendors, beo_context, onsite_contact_person_id. Only the fields you pass are written; omit a field to leave it untouched. Pass null on a nullable field to clear it. For staff / day-of contacts / per-day overrides use the dedicated upsert tools.

update_beo

ChatGPT
Update event-level BEO fields: schedule (rich), setup_type, *_notes, beo_vendors, beo_context, onsite_contact_person_id. Only the fields you pass are written; omit a field to leave it untouched. Pass null on a nullable field to clear it. For staff / day-of contacts / per-day overrides use the dedicated upsert tools.

update_catalog_item

ChatGPT
Update a catalog item.

update_catalog_item

ChatGPT
Update a catalog item.

update_company

ChatGPT
Update company fields.

update_company

ChatGPT
Update company fields.

update_event

ChatGPT
Update event fields.

update_event

ChatGPT
Update event fields.

update_event_status

ChatGPT
Change event status.

update_event_status

ChatGPT
Change event status.

update_lead_status

ChatGPT
Validate or reject a lead.

update_lead_status

ChatGPT
Validate or reject a lead.

update_person

ChatGPT
Update contact fields.

update_person

ChatGPT
Update contact fields.

update_quote

ChatGPT
Patch any subset of quote header fields: title, currency, signature_mode, is_reverse_charge, billing_profile_id, expires_at, due_date, payment_date, purchase_order, the three terms blocks (payment / cancellation / postponement), and the frozen client snapshot (client_first_name, client_email, client_company_name, client_address, client_vat_number, etc.). Use update_quote_status to change status — not this tool. For line items use add_quote_items / update_quote_item. Omit a field to leave it untouched; pass null to clear a nullable field.

update_quote

ChatGPT
Patch any subset of quote header fields: title, currency, signature_mode, is_reverse_charge, billing_profile_id, expires_at, due_date, payment_date, purchase_order, the three terms blocks (payment / cancellation / postponement), and the frozen client snapshot (client_first_name, client_email, client_company_name, client_address, client_vat_number, etc.). Use update_quote_status to change status — not this tool. For line items use add_quote_items / update_quote_item. Omit a field to leave it untouched; pass null to clear a nullable field.

update_quote_item

ChatGPT
Patch a single line item. Any of: title, description, quantity, unit_price, vat, location_item_id, is_option, is_discount, is_offered, discount_amount, event_day, sort_order. The stored total is recomputed when any pricing input changes. Catalog min-price is re-validated against the effective post-patch state.

update_quote_item

ChatGPT
Patch a single line item. Any of: title, description, quantity, unit_price, vat, location_item_id, is_option, is_discount, is_offered, discount_amount, event_day, sort_order. The stored total is recomputed when any pricing input changes. Catalog min-price is re-validated against the effective post-patch state.

update_quote_status

ChatGPT
Change a quote's status. Setting to accepted is exclusive per event: if another quote on the same event is already accepted, the tool returns a conflict result WITHOUT writing — call again with force_confirm: true to demote the conflicting quotes to pending and proceed. Side effects mirror the editor: signed stamps signed_at; pending stamps sent_at on first transition; draft resets is_signed and clears sent_at.

update_quote_status

ChatGPT
Change a quote's status. Setting to accepted is exclusive per event: if another quote on the same event is already accepted, the tool returns a conflict result WITHOUT writing — call again with force_confirm: true to demote the conflicting quotes to pending and proceed. Side effects mirror the editor: signed stamps signed_at; pending stamps sent_at on first transition; draft resets is_signed and clears sent_at.

update_task

ChatGPT
Update task fields.

update_task

ChatGPT
Update task fields.

upsert_event_contacts

ChatGPT
Replace the day-of contacts list for an event. Same diff semantics as upsert_event_staff: entries with id are updated, without are inserted, missing ids are deleted. Day-of contacts are STANDALONE — free-text entries are NOT auto-linked to the CRM annuaire (use the CRM tools if you need to register them as people). The first onsite contact (or first contact tout court) becomes primary and is mirrored to events.onsite_contact_person_id.

upsert_event_contacts

ChatGPT
Replace the day-of contacts list for an event. Same diff semantics as upsert_event_staff: entries with id are updated, without are inserted, missing ids are deleted. Day-of contacts are STANDALONE — free-text entries are NOT auto-linked to the CRM annuaire (use the CRM tools if you need to register them as people). The first onsite contact (or first contact tout court) becomes primary and is mirrored to events.onsite_contact_person_id.

upsert_event_days

ChatGPT
Patch per-day overrides for a multi-day event. Keyed by (event_id, day_index) rather than id — that lets you send patches without first round-tripping through the trigger-generated ids. This tool NEVER deletes rows (same rule as the trigger) to protect against silent data loss on accidental date edits — shrink the event date range instead, the UI ignores overflow rows.

upsert_event_days

ChatGPT
Patch per-day overrides for a multi-day event. Keyed by (event_id, day_index) rather than id — that lets you send patches without first round-tripping through the trigger-generated ids. This tool NEVER deletes rows (same rule as the trigger) to protect against silent data loss on accidental date edits — shrink the event date range instead, the UI ignores overflow rows.

upsert_event_staff

ChatGPT
Replace the BEO staff list for an event. The submitted array is the new ground truth: entries with an existing id are updated, entries without id are inserted, and any existing row whose id is missing from the payload is deleted. Free-text entries with an email or phone are auto-linked to (or created in) the CRM annuaire. Use list_event_staff first to fetch the current ids you want to preserve.

upsert_event_staff

ChatGPT
Replace the BEO staff list for an event. The submitted array is the new ground truth: entries with an existing id are updated, entries without id are inserted, and any existing row whose id is missing from the payload is deleted. Free-text entries with an email or phone are auto-linked to (or created in) the CRM annuaire. Use list_event_staff first to fetch the current ids you want to preserve.

Capabilities

Writes

App Stats

154

Tools

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily