Syncro MCP Tools Reference
Table of Contents
With the Syncro MCP Server, you can do the following directly from your AI tool of choice:
- Tickets: See, search, and filter every ticket by Organization or status. Create, update, log time.
- Invoicing: Pull invoices by Organization, amount, or status. Create, add line items, email and print.
- Customer Organizations: Look up Organization and End User records in seconds. Keep existing details current.
- Assets: See every device tied to an Organization's account. Add new assets or update what's on file.
- Appointments: Check the schedule for any Organization. Book new appointments and update details.
- Alerts: See active alerts tied to a specific device. Log a new one when something needs tracking.
- Products: Browse the product and service catalog. Add new entries or update pricing.
- Search: Run one search across: tickets, customer Organizations, contacts/End Users, assets, invoices, products.
Type “list all the tools in syncro mcp” to get the most up-to-date list of tools. Or, use this reference to see every tool the Syncro MCP Server currently supports, grouped by category.
Appointments
list_appointments
Retrieves appointments from Syncro, optionally filtered by date range. If date_from/date_to are omitted, defaults to roughly the last week through two months ahead.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | Number | No | Page number for pagination |
| per_page | Number | No | Items per page; max 100, default 50 |
| customer_id | Number | No | Filter by customer ID |
| user_id | Number | No | Filter by user ID |
| date_from | String | No | Filter by start date (YYYY-MM-DD) |
| date_to | String | No | Filter by end date (YYYY-MM-DD) |
get_appointment
Retrieves details of a specific appointment by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
| appointment_id | Number | Yes | The ID of the appointment |
create_appointment
Creates a new appointment in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| summary | String | Yes | Appointment summary/title |
| start_at | String | Yes | Start date and time (ISO format) |
| end_at | String | Yes | End date and time (ISO format) |
| customer_id | Number | No | Customer ID |
| notes | String | No | Appointment notes |
update_appointment
Updates an existing appointment in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| appointment_id | Number | Yes | The ID of the appointment to update |
| summary | String | No | Appointment summary/title |
| start_at | String | No | Start date and time (ISO format) |
| end_at | String | No | End date and time (ISO format) |
| customer_id | Number | No | Customer ID |
| notes | String | No | Appointment notes |
Assets
list_assets
Retrieves customer assets from Syncro, optionally filtered by customer, asset type, SNMP status, or a free-text query.
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | No | Filter by customer ID |
| snmp_enabled | Boolean | No | Filter by SNMP enabled status |
| asset_type_id | Number | No | Filter by asset type ID |
| query | String | No | Search query |
| page | Number | No | Page number for pagination |
get_asset
Retrieves details of a specific asset by ID
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_id | Number | Yes | The ID of the asset |
create_asset
Creates a new asset under a customer in Syncro. Provide either asset_type_name or asset_type_id.
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | Yes | The ID of the customer this asset belongs to |
| name | String | Yes | Asset name |
| asset_type_name | String | No | Asset type name (e.g., “Computer,” “Server,” “Network Device”') |
| asset_type_id | Number | No | Asset type ID (alternative to asset_type_name) |
| asset_serial | String | No | Asset serial number |
| properties | Object | No | Additional properties for the asset |
update_asset
Updates an existing asset in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| asset_id | Number | Yes | The ID of the asset to update |
| name | String | No | Asset name |
| asset_type_name | String | No | Asset type name (e.g., “Computer,” “Server,” “Network Device”') |
| asset_type_id | Number | No | Asset type ID |
| asset_serial | String | No | Asset serial number |
| properties | Object | No | Additional properties for the asset |
list_alerts
Retrieves RMM alerts from Syncro, optionally filtered by asset or status.
| Parameter | Type | Required | Description |
|---|---|---|---|
page |
Number |
No |
Page number for pagination |
customer_id |
Number |
No |
Filter by customer ID |
|
asset_id |
Number | No |
Filter by asset ID |
|
status |
String | No |
Filter by status |
get_alert
Retrieves details of a specific RMM alert by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
|
alert_id |
Number | Yes | The ID of the alert |
create_alert
Creates a new RMM alert for a customer Organization in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| title | String | Yes | Alert title |
| message | String | Yes | Alert message |
| severity | String | Yes | Alert severity |
| customer_id | Number | Yes | Customer ID |
| asset_id | Number | No | Asset ID |
Customer Organizations & Contacts/End Users
list_customers
Retrieves customer Organizations from Syncro, optionally filtered by name, email, or a free-text query.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | Number | No |
Page number for pagination |
| per_page | Number | No | Items per page (max 100, default 100) |
| query | String | No | Search query |
| firstname | String | No | Filter by first name |
| lastname | String | No | Filter by last name |
| business_name | String | No | Filter by business name |
| String | No | Filter by email | |
| id | Number | No | Filter by customer ID |
| id_not | Number | No | Exclude customer ID |
| include_disabled | Boolean | No | Include disabled customers |
| sort | String | No | Sort order for results based on field and direction (e.g., firstname ASC, city DESC). |
get_customer
Retrieves details of a specific customer Organization by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | Yes |
The ID of the customer |
create_customer
Creates a new customer Organization in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| firstname | String | Yes | First name |
| lastname | String | Yes | Last name |
| String | Yes | ||
| mobile | String | No | Mobile number |
| business_name | String | No | Business name |
| address | String | No | Address |
| city | String | No | City |
| state | String | No | State |
| zip | String | No | Zip code |
| notes | String | No | Notes |
| get_sms | Boolean | No | Allow SMS |
| opt_out | Boolean | No | Opts the customer out of all communications (email, SMS, billing, marketing, and reports). |
| location_id | Number | No | The ID of the customer's office or branch location. |
| properties | Object | No | Custom fields defined in your Syncro account, passed as a key-value object. Keys are your custom field names; values can be any type. Example: { "field_name": "value" } |
update_customer
Updates an existing customer Organization in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | Yes |
The ID of the customer to update |
| firstname | String | No | First name |
| lastname | String | No | Last name |
| phone | String | No | Phone number |
| mobile | String | No | Mobile number |
| String | No | ||
| business_name | String | No | Business name |
| address | String | No | Address |
| address_2 | String | No | Address line 2 |
| city | String | No | City |
| state | String | No | State |
| zip | String | No | Zip code |
| notes | String | No | Notes |
| get_sms | Boolean | No | Allow SMS |
| opt_out | Boolean | No | Opts the customer out of all communications (email, SMS, billing, marketing, and reports). |
| location_id | Number | No | The ID of the customer's office or branch location. |
| properties | Object | No | Custom fields defined in your Syncro account, passed as a key-value object. Keys are your custom field names; values can be any type. Example: { "field_name": "value" } |
list_contacts
Retrieves contacts/End Users from Syncro, optionally filtered by customer Organization.
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | No | Filter by customer ID |
| page | Number | No | Page number for pagination (default 1) |
get_contact
Retrieves details of a specific contact/end user by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
| contact_id | Number | Yes | The ID of the contact |
create_contact
Creates a new contact/end user in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | Yes | The ID of the customer this contact belongs to |
| name | String | No | Contact name |
| address1 | String | No | Primary address |
| address2 | String | No | Secondary address |
| city | String | No | City |
| state | String | No | State |
| zip | String | No | ZIP code |
| String | No | Email address | |
| phone | String | No | Phone number |
| mobile | String | No | Mobile number |
| notes | String | No | Notes about the contact |
| title | String | No | Contact title/position |
update_contact
Updates an existing contact/end user in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| contact_id | Number | Yes | The ID of the contact to update |
| customer_id | Number | No | The ID of the customer this contact belongs to |
| name | String | No | Contact name |
| address1 | String | No | Primary address |
| address2 | String | No | Secondary address |
| city | String | No | City |
| state | String | No | State |
| zip | String | No | ZIP code |
| String | No | Email address | |
| phone | String | No | Phone number |
| mobile | String | No | Mobile number |
| notes | String | No | Notes about the contact |
| title | String | No | Contact title/position |
Invoices
list_invoices
Retrieves invoices from Syncro, returned newest first. Optionally filtered by customer Organization, ticket, paid/unpaid state, or date. This is the default, general-purpose invoice listing tool.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | Number | No | Page number for pagination |
| customer_id | Number | No | Filter by customer ID |
| ticket_id | Number | No | Filter by ticket ID |
| unpaid | Boolean | No | Show only unpaid invoices |
| paid | Boolean | No | Show only paid invoices |
| since_updated_at | String | No | Filter by update date |
| date | String | No | Filter by invoice date |
get_invoice
Retrieves details of a specific invoice by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
| invoice_id | Number | Yes | The ID of the invoice |
create_invoice
Creates a new invoice in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| date | String | Yes | Invoice date (YYYY-MM-DD) |
| customer_id | Number | Yes | The ID of the customer |
| number | String | No | Invoice number (auto-generated if not provided) |
| employee | String | No | Employee name |
| date_received | String | No | Date received (YYYY-MM-DD) |
| note | String | No | Invoice notes |
| took_payment | Boolean | No | Payment taken |
| paid | Boolean | No | Invoice paid |
| location_id | Number | No | Location ID |
| ticket_id | Number | No | Associated ticket ID |
update_invoice
Updates an existing invoice in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| invoice_id | Number | Yes | The ID of the invoice to update |
| date | String | No | Invoice date (YYYY-MM-DD) |
| customer_id | Number | No | The ID of the customer |
| number | String | No | Invoice number |
| employee | String | No | Employee name |
| date_received | String | No | Payment date (YYYY-MM-DD) — required when marking as paid |
| note | String | No | Invoice notes |
| took_payment | Boolean | No | Set to true when payment is received |
| paid | Boolean | No | Set to true to mark the invoice as paid |
| location_id | Number | No | Location ID |
| ticket_id | Number | No | Associated ticket ID |
add_invoice_line_item
Adds a line item to an existing invoice.
| Parameter | Type | Required | Description |
|---|---|---|---|
| invoice_id | Number | Yes | The ID of the invoice |
| item | String | Yes | Item identifier |
| name | String | Yes | Item name/description |
| quantity | Number | Yes | Quantity |
| price | Number | Yes | Unit price |
| cost | Number | No | Unit cost |
| taxable | Boolean | No | Whether the item is taxable |
| line_discount_percent | Number | No | Discount percentage |
| discount_dollars | Number | No | Discount amount |
print_invoice
Queues an existing invoice for printing.
| Parameter | Type | Required | Description |
|---|---|---|---|
| invoice_id | Number | Yes | The ID of the invoice to print |
email_invoice
Emails an invoice to the customer.
| Parameter | Type | Required | Description |
|---|---|---|---|
| invoice_id | Number | Yes | The ID of the invoice to email |
list_customer_invoices
Retrieves all invoices for a specific customer Organization, across every page (the complete result set, not paginated).
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | Yes | The ID of the customer |
list_overdue_invoices
Retrieves all unpaid invoices that are past their due date, across every page (the complete set).
list_paid_invoices
Retrieves all paid invoices across every page (the complete set)
list_invoices_by_amount
Retrieves invoices whose total falls within a given amount range. Since Syncro's API doesn't support filtering by amount directly, this tool fetches every invoice and checks the total itself, so it may be slower on accounts with a lot of invoices.
| Parameter | Type | Required | Description |
|---|---|---|---|
| min_amount | Number | Yes | Minimum amount |
| max_amount | Number | Yes | Maximum amount |
list_invoices_by_status
Retrieves invoices filtered by payment status ('paid', 'unpaid', or 'all'), across every page (the complete set).
| Parameter | Type | Required | Description |
|---|---|---|---|
| status | String | Yes | Invoice status (e.g., "paid", "unpaid, all") |
Products
list_products
Retrieves products from Syncro with optional filters.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | Number | No | Page number for pagination |
| query | String | No | Search query |
| category_id | Number | No | Filter by category ID |
get_product
Retrieves details of a specific product by ID.
| Parameter | Type | Required | Description |
|---|---|---|---|
| product_id | Number | Yes | The ID of the product |
create_product
Creates a new product in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | String | Yes | Product name |
| price_retail | Number | Yes | Retail price |
| description | String | No | Product description |
| price_cost | Number | No | Cost price |
| price_wholesale | Number | No | Wholesale price |
| taxable | Boolean | No | Whether the product is taxable |
| product_category | String | No | Product category |
| upc_code | String | No | UPC code |
| notes | String | No | Product notes |
| physical_location | String | No | Physical location |
| maintain_stock | Boolean | No | Whether to maintain stock levels |
| serialized | Boolean | No | Whether the product is serialized |
update_product
Updates an existing product in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| product_id | Number | Yes | The ID of the product to update |
| name | String | No | Product name |
| description | String | No | Product description |
| price_retail | Number | No | Retail price |
| price_cost | Number | No | Cost price |
| price_wholesale | Number | No | Wholesale price |
| taxable | Boolean | No | Whether the product is taxable |
| product_category | String | No | Product category |
| upc_code | String | No | UPC code |
| notes | String | No | Product notes |
| physical_location | String | No | Physical location |
| maintain_stock | Boolean | No | Whether to maintain stock levels |
| serialized | Boolean | No | Whether the product is serialized |
Tickets
list_tickets
Retrieves tickets from Syncro, optionally filtered by customer Organization, assignee, status, ticket number, created/resolved/updated timestamps, or a free-text search across the subject.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | Number | No | Page number for pagination |
| per_page | Number | No | Items per page (max 100, default 50) |
| customer_id | Number | No | Filter by customer ID |
| user_id | Number | No | Filter by assigned user ID |
| status | String | No | Filter by status (e.g., "Open", "Closed", "Not Closed") |
| created_after | String | No | Filter tickets created after this date |
| resolved_after | String | No | Filter tickets resolved after this date |
| since_updated_at | String | No | Filter tickets updated after this date |
| mine | Boolean | No | Show only tickets assigned to the current user |
| term | String | No | Search in ticket subject |
| number | String | No | Filter by ticket number |
get_ticket
Retrieves details of a specific ticket by its ticket ID (the database ID, not the ticket number).
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticket_id | Number | Yes | The ID of the ticket (not the ticket number) |
create_ticket
Creates a new ticket for a customer Organization in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| customer_id | Number | Yes | The ID of the customer |
| subject | String | Yes | The subject of the ticket |
| status | String | No | The status of the ticket |
| priority | String | No | The priority of the ticket |
| problem_type | String | No | The type of problem |
| due_date | String | No | The due date in YYYY-MM-DD format |
| start_at | String | No | Start date and time in ISO format |
| end_at | String | No | End date and time in ISO format |
| location_id | Number | No | The location ID |
| user_id | Number | No | The user ID |
| contact_id | Number | No | The contact ID |
| sla_id | Number | No | The SLA ID |
| asset_ids | Array | No | Array of asset IDs |
| tag_list | Array | No | Array of tags |
| properties | Object | No | Custom properties |
| comment | Object | No | The initial comment for the ticket |
update_ticket
Updates an existing ticket in Syncro.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticket_id | Number | Yes | The ID of the ticket to update |
| customer_id | Number | No | The ID of the customer |
| subject | String | No | The subject of the ticket |
| status | String | No | The status of the ticket |
| priority | String | No | The priority of the ticket |
| problem_type | String | No | The type of problem |
| due_date | String | No | The due date in YYYY-MM-DD format |
| start_at | String | No | Start date and time in ISO format |
| end_at | String | No | End date and time in ISO format |
| location_id | Number | No | The location ID |
| user_id | Number | No | The user ID |
| contact_id | Number | No | The contact ID |
| sla_id | Number | No | The SLA ID |
| asset_ids | Array | No | Array of asset IDs |
| tag_list | Array | No | Array of tags |
| properties | Object | No | Custom properties |
| comment | Object | No | A new comment to add to the ticket |
add_ticket_comment
Adds a comment to an existing ticket.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticket_id | Number | Yes | The ID of the ticket |
| subject | String | Yes | The subject of the comment |
| body | String | Yes | The body of the comment |
| hidden | Boolean | No | Whether the comment is hidden from the customer |
| sms_body | String | No | SMS message content |
| do_not_email | Boolean | No | Don't send email notification |
| is_rich_text | Boolean | No | Whether the comment body is rich text (HTML) |
add_timer_entry
Adds a timer entry to a ticket over a start/end window.
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticket_id | Number | Yes | The ID of the ticket |
| hours | Number | Yes | Hours worked |
| description | String | No | Work description |
| billable | Boolean | No | Whether the time is billable |
| start_at | String | No | Start time in ISO format |
| end_at | String | No | End time in ISO format |
| duration_minutes | Number | No | Duration in minutes (alternative to end_at) |
Users & Accounts
list_users
Retrieves the enabled staff and technician users in the account, returned as ID and name pairs. Use it to look up the user ID accepted by other tools, such as list_tickets.
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | Number | No | Page number for pagination |
| per_page | Number | No | Items per page |
get_current_user
Retrieves information about the current authenticated Syncro user, including name, email, user ID, admin flag, subdomain, and permissions.
Other
search
Searches across multiple entities in Syncro (tickets, customers, assets, invoices, products, contacts).
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | String | Yes | Search query to find across all entities |
| type | String | No | Filter results by entity type (e.g., “tickets”, “customers”, “assets”, “invoices”, “products”, "contacts") |
search_docs
Searches the Syncro Documentation Center and returns ranked matching articles.
| Parameter | Type | Required | Description |
|---|---|---|---|
| question | String | Yes | Natural-language question or search phrase |
get_docs_article
Retrieves the full content of a specific Documentation Center article.
| Parameter | Type | Required | Description |
|---|---|---|---|
| url | String | Yes | URL of the article, typically taken from a search_docs result |