MCP 服务器

shopmonkey

io.usefulapi/shopmonkey
商业与运营 销售与 CRM 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Manages automotive repair customers, vehicles, work orders, parts inventory, service appointments, technicians, and workflow statuses.

shopmonkey_add_customer_email
Add an email to a customer
Add an email address to an existing customer, optionally as their primary address. Shopmonkey: POST /v3/customer/:id/email.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customerId', 'email'], 'properties': {'email': {'type': 'string', 'minLength': 3, 'description': 'The email address.'}, 'primary': {'type': 'boolean', 'description': "Make this the customer's primary email."}, 'customerId': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}, 'locationId': {'type': 'string', 'description': "The shop location id (see shopmonkey_get_current_user for the key's own location)."}, 'subscribed': {'type': 'boolean', 'description': 'Whether the customer receives messages at this address.'}}}
shopmonkey_create_appointment
Book an appointment
Book an appointment on the shop calendar, optionally for a customer, vehicle and order and assigned to technicians. Confirmation/reminder messages are only sent if you ask. Shopmonkey: POST /v3/appointment.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'startDate', 'endDate'], 'properties': {'name': {'type': 'string', 'minLength': 1, 'description': "What the appointment is for, e.g. 'Oil change'."}, 'note': {'type': 'string', 'description': 'Notes for the appointment.'}, 'color': {'enum': ['aqua', 'black', 'blue', 'brown', 'gray', 'green', 'orange', 'purple', 'red', 'yellow'], 'type': 'string', 'default': 'blue', 'description': 'Calendar color. Default blue.'}, 'allDay': {'type': 'boolean', 'description': 'All-day appointment.'}, 'useSMS': {'type': 'boolean', 'description': 'Use SMS for confirmation/reminder.'}, 'endDate': {'type': 'string', 'description': 'End, ISO 8601 date-time.'}, 'orderId': {'type': 'string', 'description': 'A work order to link.'}, 'useEmail': {'type': 'boolean', 'description': 'Use email for confirmation/reminder.'}, 'startDate': {'type': 'string', 'description': 'Start, ISO 8601 date-time.'}, 'vehicleId': {'type': 'string', 'description': "The vehicle's id."}, 'customerId': {'type': 'string', 'description': "The customer's id."}, 'sendReminder': {'type': 'boolean', 'description': 'Send the customer a reminder before the appointment.'}, 'technicianIds': {'type': 'array', 'items': {'type': 'string'}, 'description': 'User ids of the assigned technicians.'}, 'sendConfirmation': {'type': 'boolean', 'description': 'Send the customer a confirmation now.'}}}
shopmonkey_create_customer
Create a customer
Create a customer (a person) or a fleet account. Add an email afterwards with shopmonkey_add_customer_email. Shopmonkey: POST /v3/customer.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customerType'], 'properties': {'city': {'type': 'string', 'description': 'City.'}, 'note': {'type': 'string', 'description': 'Internal note on the customer.'}, 'state': {'type': 'string', 'description': 'State / province.'}, 'country': {'type': 'string', 'pattern': '^[A-Z]{2}$', 'description': 'ISO 3166-1 alpha-2 country code, e.g. US or CA.'}, 'website': {'type': 'string', 'description': 'Website.'}, 'address1': {'type': 'string', 'description': 'Street address, line 1.'}, 'address2': {'type': 'string', 'description': 'Street address, line 2.'}, 'lastName': {'type': 'string', 'description': 'Last name.'}, 'firstName': {'type': 'string', 'description': 'First name.'}, 'taxExempt': {'type': 'boolean', 'description': 'US tax exemption.'}, 'externalId': {'type': 'string', 'description': 'Your own id for this customer in another system.'}, 'locationId': {'type': 'string', 'description': "The shop location id (see shopmonkey_get_current_user for the key's own location)."}, 'postalCode': {'type': 'string', 'description': 'Postal / ZIP code.'}, 'companyName': {'type': 'string', 'description': 'Company name (for fleet / business customers).'}, 'customerType': {'enum': ['Customer', 'Fleet'], 'type': 'string', 'description': 'Customer (individual) or Fleet (business account).'}, 'discountPercent': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Default discount percent.'}, 'preferredLanguage': {'enum': ['en', 'en_US', 'fr_CA', 'es_MX'], 'type': 'string', 'description': 'en, en_US, fr_CA or es_MX.'}, 'preferredContactMethod': {'enum': ['SMS', 'Email', 'All'], 'type': 'string', 'description': 'SMS, Email or All.'}}}
shopmonkey_create_order
Create an order
Open a new work order (it starts as an estimate) for a customer and vehicle. Add services in the Shopmonkey UI. Shopmonkey: POST /v3/order.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'description': 'Order name / title.'}, 'dueDate': {'type': 'string', 'description': 'When the vehicle is promised, ISO 8601 date-time.'}, 'complaint': {'type': 'string', 'description': "The customer's complaint (reason for visit)."}, 'vehicleId': {'type': 'string', 'description': 'The vehicle being worked on.'}, 'customerId': {'type': 'string', 'description': 'The customer the order is for.'}, 'locationId': {'type': 'string', 'description': "The shop location id (see shopmonkey_get_current_user for the key's own location)."}, 'recommendation': {'type': 'string', 'description': "The shop's recommendation."}, 'serviceWriterId': {'type': 'string', 'description': 'User id of the service writer.'}, 'workflowStatusId': {'type': 'string', 'description': 'Workflow status (board column) id — see shopmonkey_list_workflow_statuses.'}, 'purchaseOrderNumber': {'type': 'string', 'description': 'Customer PO number.'}}}
shopmonkey_create_vehicle
Create a vehicle
Create a vehicle, optionally attached to a customer. Shopmonkey: POST /v3/vehicle.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['size'], 'properties': {'vin': {'type': 'string', 'description': 'Vehicle identification number.'}, 'make': {'type': 'string', 'description': 'Make, e.g. Toyota.'}, 'note': {'type': 'string', 'description': 'Internal note on the vehicle.'}, 'size': {'enum': ['HeavyDuty', 'LightDuty', 'Other'], 'type': 'string', 'description': 'LightDuty (cars, light trucks), HeavyDuty, or Other.'}, 'unit': {'type': 'string', 'description': 'Fleet unit number.'}, 'year': {'type': 'integer', 'maximum': 2100, 'minimum': 1900, 'description': 'Model year.'}, 'color': {'enum': ['White', 'Silver', 'Gray', 'Black', 'Blue', 'Red', 'Brown', 'Burgundy', 'Tan', 'Gold', 'Green', 'Yellow', 'Orange', 'Pink', 'Purple', 'Other'], 'type': 'string', 'description': 'Vehicle color.'}, 'model': {'type': 'string', 'description': 'Model, e.g. Camry.'}, 'engine': {'type': 'string', 'description': 'Engine description.'}, 'mileage': {'type': 'number', 'minimum': 0, 'description': 'Current odometer reading.'}, 'submodel': {'type': 'string', 'description': 'Submodel / trim, e.g. LE.'}, 'customerId': {'type': 'string', 'description': "The owning customer's id."}, 'locationId': {'type': 'string', 'description': "The shop location id (see shopmonkey_get_current_user for the key's own location)."}, 'licensePlate': {'type': 'string', 'description': 'License plate.'}, 'licensePlateState': {'type': 'string', 'description': 'License plate state / province.'}}}
shopmonkey_find_customers_by_email
Find customers by email
Find the customers that own any of the given email addresses. Shopmonkey: POST /v3/customer/email/search.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['emails'], 'properties': {'emails': {'type': 'array', 'items': {'type': 'string', 'minLength': 3}, 'maxItems': 50, 'minItems': 1, 'description': 'Email addresses to look up.'}, 'excludeCustomerId': {'type': 'string', 'description': 'A customer id to leave out of the results.'}}}
shopmonkey_find_customers_by_phone
Find customers by phone number
Find the customers that own any of the given phone numbers — the usual way to identify a caller. Shopmonkey: POST /v3/customer/phone_number/search.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['phoneNumbers'], 'properties': {'phoneNumbers': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 50, 'minItems': 1, 'description': 'Phone numbers to look up.'}, 'excludeCustomerId': {'type': 'string', 'description': 'A customer id to leave out of the results.'}}}
shopmonkey_get_current_user
Get the current user
Fetch the user this API key acts as — id, name, company, default location and permissions. A cheap way to confirm the key works and to find your locationId. Shopmonkey: GET /v3/user/me.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
shopmonkey_get_customer
Get one customer
Fetch a single customer by id — contact details, emails, phone numbers, counts of vehicles/orders/appointments. Shopmonkey: GET /v3/customer/:id.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customerId'], 'properties': {'customerId': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}}}
shopmonkey_get_order
Get one order
Fetch a single work order by id — customer, vehicle, complaint, totals (parts/labor/tax in cents), payment state and profitability. Shopmonkey: GET /v3/order/:id.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['orderId'], 'properties': {'orderId': {'type': 'string', 'minLength': 1, 'description': 'The order id.'}}}
shopmonkey_get_vehicle
Get one vehicle
Fetch a single vehicle by id, including its mileage and tire-pressure logs. Shopmonkey: GET /v3/vehicle/:id.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['vehicleId'], 'properties': {'vehicleId': {'type': 'string', 'minLength': 1, 'description': 'The vehicle id.'}}}
shopmonkey_list_canned_services
List canned services
List the shop's canned services (reusable job templates like 'Oil change') with their labor, parts and fees and total in cents. Shopmonkey: GET /v3/canned_service.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}}}
shopmonkey_list_customer_orders
List a customer's orders
List a customer's work orders (estimates, repair orders, invoices) — their service history. Shopmonkey: GET /v3/customer/:id/order.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customerId'], 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}, 'customerId': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}}}
shopmonkey_list_customer_vehicles
List a customer's vehicles
List the vehicles owned by a customer (year/make/model, VIN, plate, mileage). Shopmonkey: GET /v3/customer/:id/vehicle.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customerId'], 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}, 'customerId': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}}}
shopmonkey_list_orders
List orders
List work orders for the shop, paged. Each order carries its number, status flags (authorized, invoiced, paid), totals in cents, workflow status and assigned technicians. For one customer's orders use shopmonkey_list_customer_orders. Shopmonkey: GET /v3/order.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}}}
shopmonkey_list_order_services
List an order's services
List the services (jobs) on a work order with their line items — labor, parts, tires, fees, subcontracts — authorization status and totals. Shopmonkey: GET /v3/order/:orderId/service.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['orderId'], 'properties': {'orderId': {'type': 'string', 'minLength': 1, 'description': 'The order id.'}}}
shopmonkey_list_users
List users
List the shop's users (service writers, technicians, admins) — the ids to use for technicians and service writers. Shopmonkey: GET /v3/user.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}}}
shopmonkey_list_workflow_statuses
List workflow statuses
List the workflow statuses (the columns of the shop's work-order board) with their position. Use the id to move an order with shopmonkey_update_order. Shopmonkey: GET /v3/workflow_status.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}}}
shopmonkey_search_appointments
Search appointments
Search the appointment calendar by date range, customer, order or technician. Returns appointments with their customer. Shopmonkey: POST /v3/appointment/search.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'sort': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort by start date. Default asc.'}, 'endTo': {'type': 'string', 'description': 'Appointments ending at or before this ISO 8601 date-time.'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}, 'endFrom': {'type': 'string', 'description': 'Appointments ending at or after this ISO 8601 date-time.'}, 'orderId': {'type': 'string', 'description': 'Only appointments linked to this order.'}, 'startTo': {'type': 'string', 'description': 'Appointments starting at or before this ISO 8601 date-time.'}, 'startFrom': {'type': 'string', 'description': 'Appointments starting at or after this ISO 8601 date-time.'}, 'customerId': {'type': 'string', 'description': "Only this customer's appointments."}, 'technicians': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Only appointments assigned to these technician (user) ids.'}, 'includeUnassigned': {'type': 'boolean', 'description': 'With technicians, also include unassigned appointments.'}}}
shopmonkey_search_customers
Search customers
Search customers with a server-side filter, sort and paging. Returns customers with their emails and phone numbers. Shopmonkey: POST /v3/customer/search.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}, 'where': {'type': 'object', 'description': 'Filter object applied server-side, keyed by field name, e.g. {"lastName": "Smith"} or {"createdDate": {"gte": "2026-01-01"}}.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'orderBy': {'type': 'object', 'description': 'Sort instructions keyed by field name, e.g. {"createdDate": "desc"}.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'enum': ['asc', 'desc'], 'type': 'string'}}}}
shopmonkey_search_inventory_parts
Search inventory parts
Search the parts inventory — name, part number, SKU, quantity on hand/available/reserved, retail and wholesale cost in cents, bin location, brand and vendor. Filter e.g. {"sku": "ABC-123"}. Shopmonkey: POST /v3/inventory_part/search.
只读
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'skip': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of records to skip, for paging (use with limit).'}, 'limit': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'Maximum number of records to return.'}, 'where': {'type': 'object', 'description': 'Filter object applied server-side, keyed by field name, e.g. {"lastName": "Smith"} or {"createdDate": {"gte": "2026-01-01"}}.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'orderBy': {'type': 'object', 'description': 'Sort instructions keyed by field name, e.g. {"createdDate": "desc"}.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'enum': ['asc', 'desc'], 'type': 'string'}}}}
shopmonkey_update_customer
Update a customer
Update a customer's name, address, note or preferences. Only the fields you pass are sent. Shopmonkey: PUT /v3/customer/:id.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['customerId'], 'properties': {'city': {'type': 'string', 'description': 'City.'}, 'note': {'type': 'string', 'description': 'Internal note on the customer.'}, 'state': {'type': 'string', 'description': 'State / province.'}, 'country': {'type': 'string', 'pattern': '^[A-Z]{2}$', 'description': 'ISO 3166-1 alpha-2 country code, e.g. US or CA.'}, 'website': {'type': 'string', 'description': 'Website.'}, 'address1': {'type': 'string', 'description': 'Street address, line 1.'}, 'address2': {'type': 'string', 'description': 'Street address, line 2.'}, 'lastName': {'type': 'string', 'description': 'Last name.'}, 'firstName': {'type': 'string', 'description': 'First name.'}, 'taxExempt': {'type': 'boolean', 'description': 'US tax exemption.'}, 'customerId': {'type': 'string', 'minLength': 1, 'description': 'The customer id.'}, 'externalId': {'type': 'string', 'description': 'Your own id for this customer in another system.'}, 'postalCode': {'type': 'string', 'description': 'Postal / ZIP code.'}, 'companyName': {'type': 'string', 'description': 'Company name (for fleet / business customers).'}, 'discountPercent': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Default discount percent.'}, 'preferredLanguage': {'enum': ['en', 'en_US', 'fr_CA', 'es_MX'], 'type': 'string', 'description': 'en, en_US, fr_CA or es_MX.'}, 'preferredContactMethod': {'enum': ['SMS', 'Email', 'All'], 'type': 'string', 'description': 'SMS, Email or All.'}}}
shopmonkey_update_order
Update an order
Update a work order — move it to another workflow status, change its status (Estimate, RepairOrder, Invoice), edit complaint/recommendation, due date, service writer, or archive it. Only the fields you pass are sent. Shopmonkey: PUT /v3/order/:id.
可能执行破坏性操作
输入模式
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['orderId'], 'properties': {'name': {'type': 'string', 'description': 'Order name / title.'}, 'status': {'enum': ['Estimate', 'RepairOrder', 'Invoice'], 'type': 'string', 'description': 'Estimate, RepairOrder or Invoice.'}, 'dueDate': {'type': 'string', 'description': 'When the vehicle is promised, ISO 8601 date-time.'}, 'orderId': {'type': 'string', 'minLength': 1, 'description': 'The order id.'}, 'archived': {'type': 'boolean', 'description': 'Archive (true) or unarchive (false) the order.'}, 'complaint': {'type': 'string', 'description': "The customer's complaint (reason for visit)."}, 'vehicleId': {'type': 'string', 'description': 'The vehicle being worked on.'}, 'customerId': {'type': 'string', 'description': 'The customer the order is for.'}, 'recommendation': {'type': 'string', 'description': "The shop's recommendation."}, 'serviceWriterId': {'type': 'string', 'description': 'User id of the service writer.'}, 'workflowStatusId': {'type': 'string', 'description': 'Workflow status (board column) id — see shopmonkey_list_workflow_statuses.'}, 'purchaseOrderNumber': {'type': 'string', 'description': 'Customer PO number.'}}}
已添加
shopmonkey_create_appointment
2026年10月2日 02:40
已添加
shopmonkey_update_order
2026年10月2日 02:40
已添加
shopmonkey_create_order
2026年10月2日 02:40
已添加
shopmonkey_create_vehicle
2026年10月2日 02:40
已添加
shopmonkey_add_customer_email
2026年10月2日 02:40
已添加
shopmonkey_update_customer
2026年10月2日 02:40
已添加
shopmonkey_create_customer
2026年10月2日 02:40
已添加
shopmonkey_list_users
2026年10月2日 02:40
已添加
shopmonkey_list_workflow_statuses
2026年10月2日 02:40
已添加
shopmonkey_list_canned_services
2026年10月2日 02:40
已添加
shopmonkey_search_inventory_parts
2026年10月2日 02:40
已添加
shopmonkey_search_appointments
2026年10月2日 02:40
已添加
shopmonkey_list_order_services
2026年10月2日 02:40
已添加
shopmonkey_get_order
2026年10月2日 02:40
已添加
shopmonkey_list_orders
2026年10月2日 02:40
已添加
shopmonkey_get_vehicle
2026年10月2日 02:40
已添加
shopmonkey_list_customer_orders
2026年10月2日 02:40
已添加
shopmonkey_list_customer_vehicles
2026年10月2日 02:40
已添加
shopmonkey_get_customer
2026年10月2日 02:40
已添加
shopmonkey_find_customers_by_email
2026年10月2日 02:40
已添加
shopmonkey_find_customers_by_phone
2026年10月2日 02:40
已添加
shopmonkey_search_customers
2026年10月2日 02:40
已添加
shopmonkey_get_current_user
2026年10月2日 02:40