MCP Tools
Tools Reference
Complete reference for all tenant MCP tools with input schemas.
MCP Tools Reference
All tools are scoped to the Garage specified by workspace and project query params on the MCP endpoint URL.
192 tenant tools are available on Pro and Business plans.
| Tool | Description | Permission | Feature Gate |
|---|---|---|---|
gms.analytics.customers | Get customer analytics (top customers, acquisition, lifetime value) | — | — |
gms.analytics.expenses | Get expense analytics (by category, monthly trends, top vendors) | — | — |
gms.analytics.inventory | Get inventory analytics (stock levels, movement trends, low stock) | — | — |
gms.analytics.invoices | Get invoice analytics (status breakdown, aging, collection rate) | — | — |
gms.analytics.jobs | Get job/service analytics (popularity, revenue by service) | — | — |
gms.analytics.operations | Get operations analytics (bookings, completion rates, durations) | — | — |
gms.analytics.revenue | Get revenue analytics (trends, by service, top customers) | — | — |
gms.analytics.technicians | Get technician performance analytics (jobs completed, revenue) | — | — |
gms.authorizedDomain.add | Add an authorized email domain | garage_settings | — |
gms.authorizedDomain.list | List authorized email domains for the garage | garage_settings | — |
gms.authorizedDomain.remove | Remove an authorized email domain | garage_settings | — |
gms.authorizedDomain.setStatus | Set the approval status of an authorized email domain | garage_settings | — |
gms.bay.archive | Archive (soft-delete) a bay | — | — |
gms.bay.create | Create a new workshop bay | — | — |
gms.bay.get | Get a bay by ID | — | — |
gms.bay.getAvailability | Get bay availability for a time range | — | — |
gms.bay.list | List workshop bays | — | — |
gms.bay.update | Update a workshop bay | — | — |
gms.booking.addAttachment | Add a file attachment to a booking | — | — |
gms.booking.addPartItem | Add a parts line item to a booking | — | — |
gms.booking.addServiceItem | Add a service line item to a booking | — | — |
gms.booking.assignBay | Assign a booking to a service bay | — | — |
gms.booking.assignTechnicians | Assign technicians to a booking | — | — |
gms.booking.board | List bookings scheduled for a specific date (day board view) | — | — |
gms.booking.create | Create a new booking with service line items | — | — |
gms.booking.deleteAttachment | Delete a file attachment from a booking | — | — |
gms.booking.generateInvoice | Generate an invoice from a completed booking | invoices | — |
gms.booking.get | Get a single booking by ID with service items, parts, and attachments | — | — |
gms.booking.getInspection | Get pre-service inspection data for a booking | — | — |
gms.booking.getIntake | Get vehicle intake data for a booking | — | — |
gms.booking.getLinkedEstimate | Get the estimate linked to a booking | — | — |
gms.booking.list | List bookings for the current garage with optional filters | — | — |
gms.booking.listAttachments | List file attachments for a booking | — | — |
gms.booking.removePartItem | Remove a parts line item from a booking | — | — |
gms.booking.removeServiceItem | Remove a service line item from a booking | — | — |
gms.booking.statusCounts | Get booking counts grouped by status for the current garage | — | — |
gms.booking.transition | Transition a booking to a new status | — | — |
gms.booking.update | Update booking details (schedule, bay, technicians, notes, etc.) | — | — |
gms.booking.updateInspection | Update pre-service inspection data for a booking (merged with existing) | — | — |
gms.booking.updateIntake | Update vehicle intake data for a booking (merged with existing) | — | — |
gms.booking.updateServiceItem | Update a service line item on a booking | — | — |
gms.connectedAccount.get | Get the Stripe Connect account for the current garage, if configured | — | — |
gms.customer.create | Create a new customer | — | — |
gms.customer.delete | Delete a customer | — | — |
gms.customer.get | Get a single customer by ID | — | — |
gms.customer.list | List customers for the current garage | — | — |
gms.customer.listBookings | List bookings for a specific customer | — | — |
gms.customer.listInvoices | List invoices for a specific customer | — | — |
gms.customer.search | Search customers by name, email, or phone | — | — |
gms.customer.sendPortalWelcome | Send a customer portal welcome email with magic link | — | — |
gms.customer.update | Update an existing customer | — | — |
gms.dashboard.getFinancialOverview | Get financial overview metrics for a date range | dashboard | — |
gms.dashboard.getOperationsSnapshot | Get operations metrics for a date range | dashboard | — |
gms.dashboard.getStats | Get high-level dashboard statistics for the current garage | dashboard | — |
gms.domain.add | Add a custom domain for the garage | garage_settings | — |
gms.domain.delete | Delete a custom domain | garage_settings | — |
gms.domain.list | List custom domains for the current garage | garage_settings | — |
gms.domain.markVerified | Mark a custom domain as verified | garage_settings | — |
gms.estimate.convertToBooking | Convert an approved estimate into a booking | — | — |
gms.estimate.create | Create a new estimate | — | — |
gms.estimate.createNewVersion | Create a new version of a sent/viewed estimate | — | — |
gms.estimate.get | Get an estimate by ID with line items and share links | — | — |
gms.estimate.list | List estimates for the current garage | — | — |
gms.estimate.listVehicleEstimates | List estimates for a specific vehicle | — | — |
gms.estimate.send | Send an estimate to the customer and return a share token | — | — |
gms.estimate.update | Update an estimate | — | — |
gms.expense.create | Record a new expense | — | — |
gms.expense.delete | Delete an expense | — | — |
gms.expense.get | Get a single expense by ID | — | — |
gms.expense.list | List expenses for the current garage | — | — |
gms.expense.summary | Get expense totals grouped by category for a date range | — | — |
gms.expense.update | Update an existing expense | — | — |
gms.financialAccount.create | Create a financial account | accounting | — |
gms.financialAccount.delete | Delete a financial account | accounting | — |
gms.financialAccount.get | Get a financial account by ID | accounting | — |
gms.financialAccount.getBalance | Get account balance (opening balance plus signed journal entries) | accounting | — |
gms.financialAccount.list | List financial accounts (bank/cash) for the current garage | accounting | — |
gms.financialAccount.update | Update a financial account | accounting | — |
gms.financialEntry.create | Create a manual financial journal entry | accounting | — |
gms.financialEntry.delete | Delete a financial journal entry | accounting | — |
gms.financialEntry.get | Get a financial journal entry by ID | accounting | — |
gms.financialEntry.list | List financial journal entries for the current garage | accounting | — |
gms.financialEntry.update | Update a financial journal entry | accounting | — |
gms.installation.addWidgetDomain | Add a domain to the widget allow-list | booking_widget | — |
gms.installation.getConfig | Get booking page and widget installation configuration | booking_widget | — |
gms.installation.listWidgetDomains | List domains allowed to embed the booking widget | booking_widget | — |
gms.installation.removeWidgetDomain | Remove a domain from the widget allow-list | booking_widget | — |
gms.installation.setDomainStatus | Approve or reject a widget domain | booking_widget | — |
gms.installation.updateBookingPage | Update the public booking page configuration | booking_widget | — |
gms.installation.updateWidget | Update the embeddable booking widget configuration | booking_widget | — |
gms.inventory.adjustStock | Adjust stock level for an inventory item | inventory | — |
gms.inventory.create | Create a new inventory item | inventory | — |
gms.inventory.delete | Delete an inventory item | inventory | — |
gms.inventory.get | Get an inventory item by ID | inventory | — |
gms.inventory.list | List inventory items for the current garage | inventory | — |
gms.inventory.listMovements | List stock movements for an inventory item | inventory | — |
gms.inventory.update | Update an inventory item | inventory | — |
gms.invoice.create | Create a new invoice with line items | — | — |
gms.invoice.generateFromBooking | Generate an invoice from a booking's service and part line items | invoices | — |
gms.invoice.get | Get a single invoice by ID with line items | invoices | — |
gms.invoice.list | List invoices for the current garage | — | — |
gms.invoice.paymentLink | Generate a public, tokenized payment URL for an invoice (valid 30 days) | payments | — |
gms.invoice.pdfUrl | Get a short-lived presigned URL to download an invoice PDF | invoices | — |
gms.invoice.transition | Transition an invoice to a new status | — | — |
gms.invoice.update | Update invoice metadata (dates, notes, terms, etc.) | — | — |
gms.lead.create | Create a new lead | leads | — |
gms.lead.delete | Delete a lead | leads | — |
gms.lead.get | Get a lead by ID | leads | — |
gms.lead.list | List CRM leads for the current garage | leads | — |
gms.lead.stats | Get lead pipeline statistics | leads | — |
gms.lead.update | Update a lead | leads | — |
gms.payment.dailyCollections | Get daily payment collections grouped by method | payments | — |
gms.payment.get | Get a payment by ID | payments | — |
gms.payment.list | List invoice payments for the current garage | payments | — |
gms.payment.record | Record a payment against an invoice | payments | — |
gms.payment.refund | Refund a payment (full or partial) | payments | — |
gms.purchaseOrder.create | Create a new purchase order | purchase_orders | — |
gms.purchaseOrder.get | Get a purchase order with line items | purchase_orders | — |
gms.purchaseOrder.list | List purchase orders for the current garage | purchase_orders | — |
gms.purchaseOrder.receiveGoods | Receive goods against a purchase order | purchase_orders | — |
gms.purchaseOrder.transition | Transition a purchase order to a new status | purchase_orders | — |
gms.purchaseOrder.update | Update purchase order header fields | purchase_orders | — |
gms.rbac.addMember | Add a user to the garage team | garage_settings | — |
gms.rbac.createExternalAssignee | Create an external assignee | garage_settings | — |
gms.rbac.deleteExternalAssignee | Delete an external assignee | garage_settings | — |
gms.rbac.deleteRolePolicy | Remove a permission policy from a role | garage_settings | — |
gms.rbac.getRolePolicies | Get permission policies for a role | garage_settings | — |
gms.rbac.listExternalAssignees | List external assignees for dispatch | garage_settings | — |
gms.rbac.listMembers | List garage team members | garage_settings | — |
gms.rbac.listRoles | List garage roles | garage_settings | — |
gms.rbac.removeMember | Remove a user from the garage team | garage_settings | — |
gms.rbac.updateExternalAssignee | Update an external assignee | garage_settings | — |
gms.rbac.updateMemberRole | Update a garage team member role | garage_settings | — |
gms.rbac.upsertRolePolicy | Allow or deny a resource for a role | garage_settings | — |
gms.reception.walkIn | Reception desk walk-in flow: create or reuse customer and vehicle, then create a confirmed booking | reception | — |
gms.report.accountBalances | Get account balances for a date range | — | — |
gms.report.actualsForecast | Get actuals vs forecast report for a date range | — | — |
gms.report.agedPayables | Get aged payables report as of a date | — | — |
gms.report.agedReceivables | Get aged receivables report as of a date | — | — |
gms.report.balanceSheet | Get a balance sheet report as of a date | — | — |
gms.report.cashFlow | Get a cash flow report for a date range | — | — |
gms.report.generalLedger | Get a general ledger report for a date range | — | — |
gms.report.profitLoss | Get a Profit & Loss report for the garage | — | — |
gms.report.taxReport | Get tax report (output vs input tax) for a date range | — | — |
gms.review.create | Create a review request | reviews | marketing_reviews |
gms.review.delete | Delete a review request | reviews | marketing_reviews |
gms.review.get | Get a review request by ID | reviews | marketing_reviews |
gms.review.list | List review requests for the current garage | reviews | marketing_reviews |
gms.review.stats | Get review request conversion statistics | reviews | marketing_reviews |
gms.review.update | Update a review request | reviews | marketing_reviews |
gms.search.global | Search customers, invoices, and bookings across the current garage | — | — |
gms.service.archive | Archive (soft-delete) a service | — | — |
gms.service.create | Create a new service | — | — |
gms.service.get | Get a service by ID | — | — |
gms.service.list | List services in the service catalog | — | — |
gms.service.update | Update a service | — | — |
gms.serviceCategory.create | Create a service category | — | — |
gms.serviceCategory.delete | Delete a service category (only if no services reference it) | — | — |
gms.serviceCategory.get | Get a service category by ID | — | — |
gms.serviceCategory.list | List all service categories | — | — |
gms.serviceCategory.update | Update a service category | — | — |
gms.settings.get | Get garage settings for the current garage | garage_settings | — |
gms.settings.getBookingPreferences | Get booking preferences and email notification settings | garage_settings | — |
gms.settings.updateBookingPreferences | Update booking preferences and email notification settings | garage_settings | — |
gms.settings.upsert | Create or update garage settings | garage_settings | — |
gms.technician.count | Count technicians in the garage | — | — |
gms.technician.get | Get technician detail with skills and vehicle preferences | — | — |
gms.technician.getAnalytics | Get technician performance analytics | — | — |
gms.technician.list | List technicians with job and skill counts | — | — |
gms.technician.listBookings | List bookings assigned to a technician | — | — |
gms.technician.setSkills | Replace technician skills | — | — |
gms.technician.setVehiclePreferences | Replace technician vehicle type preferences | — | — |
gms.technician.updateDispatch | Update technician dispatch settings | — | — |
gms.technician.updateProfile | Update technician profile fields | — | — |
gms.upload.presign | Get a presigned URL for uploading a file to garage storage | — | — |
gms.upload.presignGet | Get a presigned download URL for a stored file key | — | — |
gms.vehicle.archive | Archive (soft-delete) a vehicle | — | — |
gms.vehicle.create | Create a new vehicle for a customer | — | — |
gms.vehicle.delete | Hard-delete a vehicle (fails if linked to bookings or estimates) | — | — |
gms.vehicle.get | Get a vehicle by ID | — | — |
gms.vehicle.getWithLinks | Get a vehicle with booking/estimate link counts for delete eligibility | — | — |
gms.vehicle.list | List vehicles for the current garage | — | — |
gms.vehicle.listBookings | List bookings for a vehicle | — | — |
gms.vehicle.listByCustomer | List all vehicles for a customer | — | — |
gms.vehicle.listEstimates | List estimates for a vehicle | — | — |
gms.vehicle.restore | Restore an archived vehicle | — | — |
gms.vehicle.update | Update a vehicle | — | — |
gms.vendor.create | Create a new vendor | purchase_orders | — |
gms.vendor.delete | Delete a vendor | purchase_orders | — |
gms.vendor.get | Get a vendor by ID | purchase_orders | — |
gms.vendor.list | List vendors (suppliers) for the current garage | purchase_orders | — |
gms.vendor.update | Update a vendor | purchase_orders | — |
Authentication
Connect to /api/mcp?workspace={teamSlug}&project={garageSlug} with an OAuth 2.1 Bearer access token in the Authorization header — session cookies are not accepted. MCP clients obtain the token automatically: they discover the authorization server from /.well-known/oauth-protected-resource, dynamically register, then have you sign in at /auth/sign-in and consent at /consent. Tenant access is gated by the MCP_TENANT feature key (FEATURE_KEYS.MCP_TENANT).