---
title: "Syncro MCP server for AI agents - actionlake"
description: "Give Claude 190 Syncro actions through one MCP server: PSA, RMM, catalog, invoicing. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/syncro
updated: 2026-10-10
---

Connectors · MSP & PSA

# Syncro MCP server for AI agents.

actionlake is an MCP gateway: one remote MCP server that connects Claude and other MCP clients to Syncro and the rest of your systems. It gives your agent 190 Syncro actions (76 reads, 88 writes and 26 that wait for a confirmation) and holds the Syncro credential itself, so the agent never does. It paces Syncro's limits and records every call.

[Connect Syncro free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.

`claude mcp add --transport http actionlake https://connect.actionlake.com/mcp`

the first call

```
do {
  action: "syncro.invoices.list",
  intent: "check which Syncro account is connected"
}
# Returns a paginated list of Invoices · read · 1 upstream call
```

- 190 actions in one signed file
- 76 read look, never change
- 88 write create and update
- 26 wait for a yes destructive, confirmed first

Set up

## Connect Syncro in three steps.

1. 01
   ### Add actionlake to Claude.
   Run the command once in Claude Code; its consent page can create a free sandbox: 100,000 calls a month, no card. In the Claude app, add a custom connector with the URL below and paste your key on the consent page. Creating a new sandbox from the Claude app is not yet tested by us.
   `https://connect.actionlake.com/mcp`
2. 02
   ### Connect Syncro.
   Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead. actionlake stores what you paste write-only, sealed under your tenant's key.
   - `api_key` Syncro API token
   - `subdomain_host` Where your Syncro lives: your subdomain host
   ```
   account { op: "connections.requirements", service: "syncro" }
   # free: exactly what to paste, and what is found for you
   ```
3. 03
   ### Make the first call. Check before a write.
   Ask in plain words; Claude picks the action. Before anything changes, `check` validates the call and prices it, for free.
   ```
   do    { action: "syncro.invoices.list" }
   # returns a paginated list of invoices · read · 1 upstream call
   check { action: "syncro.invoices.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Syncro at a glance

**Sign-in**

Bearer token. No consent screen: your agent can connect it for you, but the key then passes through your chat. To keep it out of the model's context, paste it in the console instead.

**You provide**

`api_key`

**Setup fields**

`subdomain_host`

**Limits we pace to**

180 calls a minute, per connection

**API covered**

Syncro API 1, at your own syncromsp.com address, set when you connect

**Built from**

Syncro's documentation, read 15 September 2026[api-docs.syncromsp.com](https://api-docs.syncromsp.com/swagger.json)

**Service file**

Version 2.0.0, signed (Ed25519)

**Cached reads**

76 of 76 reads, for up to an hour; a write clears what it affects

**Ready-made plans**

8 in the store

**Shared entities**

15, so ask can line Syncro up with your other systems

**Data**

Processed and stored in Sydney, Australia. No US region yet

Capabilities

## What an AI agent can do in Syncro.

190 actions in 20 areas. Every one carries its effect, so a key can allow the reads and hold the rest.

- **76** read look, never change
- **88** write create and update
- **26** destructive wait for a confirmation

1. ### PSA
   43
   15 read · 22 write · 6 destructive
   Returns a paginated list of Tickets · Creates a new Ticket for a Ticket Form · Creates tickets from a Blueprint · Creates a Ticket
2. ### RMM
   22
   11 read · 9 write · 2 destructive
   Returns a paginated list of Assets · Returns a paginated list of RMM Alerts · Returns a list of Assets for a specific contact · Retrieves an Asset by ID
3. ### Catalog
   17
   6 read · 9 write · 2 destructive
   Returns a paginated list of Products · Creates a Product · Returns a Product by Barcode · Retrieves a Product by ID
4. ### Invoicing
   12
   4 read · 6 write · 2 destructive
   Returns a paginated list of Invoices · Creates an Invoice · Retrieves an Invoice by ID or Number · Updates an existing invoice by ID
5. ### Quoting
   11
   2 read · 7 write · 2 destructive
   Returns a paginated list of Estimates · Creates an Estimate · Retrieves an Estimate by ID or number · Updates an existing Estimate by ID
6. ### Recurring
   10
   2 read · 5 write · 3 destructive
   Returns a paginated list of Invoice Schedules · Creates an Invoice Schedule · Adds a Line Item to an Invoice Schedule (deprecated) · Adds a Line Item to an Invoice Schedule
7. ### Scheduling
   10
   4 read · 4 write · 2 destructive
   Returns a paginated list of Appointments · Creates an Appointment · Retrieves an Appointment by ID · Updates an existing Appointment by ID
8. ### Contacts
   9
   3 read · 4 write · 2 destructive
   Returns a paginated list of Contacts · Creates a Contact · Retrieves a Contact by ID · Updates an existing Contact

**12 more areas · 56 actions**

- Payments **9**
- Purchasing **8**
- Accounts **7**
- Portal **5**
- Knowledge **5**
- Contracts **5**
- Leads **4**
- Users **4**
- Vendors **4**
- Settings **3**
- Telephony **1**
- Global **1**

Top actions

## The Syncro API, shaped for agents.

The ids your agent types, what each does, and the one name it shares with other systems. 159 of Syncro's 160 action names are shared with at least one other connector, so an agent learns them once.

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `syncro.invoices.list` Returns a paginated list of Invoices | Returns a paginated list of Invoices. Paged; each page is one upstream call. | read | `finance.invoice.list` 101 connectors |
| `syncro.payments.list` Returns a paginated list of Payments | Returns a paginated list of Payments. Paged; each page is one upstream call. | read | `finance.payment.list` 75 connectors |
| `syncro.estimates.list` Returns a paginated list of Estimates | Returns a paginated list of Estimates. Paged; each page is one upstream call. | read | `finance.quote.list` 52 connectors |
| `syncro.purchase_orders.list` Returns a paginated list of Purchase Orders | Returns a paginated list of Purchase Orders. Paged; each page is one upstream call. | read | `finance.purchase_order.list` 45 connectors |
| `syncro.tickets.list` Returns a paginated list of Tickets | Returns a paginated list of Tickets. Paged; each page is one upstream call. | read | `service.ticket.list` 56 connectors |
| `syncro.invoices.create` Creates an Invoice | Creates an Invoice. | write | `finance.invoice.create` 74 connectors |
| `syncro.contacts.list` Returns a paginated list of Contacts | Returns a paginated list of Contacts. Paged; each page is one upstream call. | read | `crm.contact.list` 177 connectors |
| `syncro.payments.create` Creates a Payment | Creates a Payment. | write | `finance.payment.create` 67 connectors |
| `syncro.customers.list` Returns a paginated list of customers | Returns a paginated list of customers. Paged; each page is one upstream call. | read | `crm.company.list` 162 connectors |
| `syncro.users.get` Retrieves an existing User by ID | Retrieves an existing User by ID. | read | `identity.user.get` 399 connectors |
| `syncro.estimates.create` Creates an Estimate | Creates an Estimate. | write | `finance.quote.create` 52 connectors |
| `syncro.invoices.delete` Deletes an invoice by ID | Deletes an invoice by ID. | destructive | `finance.invoice.delete` 56 connectors |

Try it

## Prompts to paste into Claude.

Each one names the Syncro actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Which Syncro invoices are more than 30 days overdue? Group them by customer with the total owed.
   calls `syncro.invoices.list`
2. Plan write
   Bill logged time on a resolved ticket in Syncro. Ask me before anything is sent or changed.
   calls `syncro.tickets.get` `syncro.ticket_timers.list` `syncro.ticket_timers.patch` `syncro.tickets.charge_timer_entry` `syncro.invoices.create` +1 more
3. Plan write
   Audit patch status across a customer's assets in Syncro.
   calls `syncro.customers.get` `syncro.assets.list` `syncro.assets.patches_get` `syncro.assets.installed_applications_list` `syncro.wiki_pages.create`
4. Write write
   Creates an Invoice in Syncro. Show me exactly what you will send before you save it.
   calls `syncro.invoices.create`
5. Across systems read
   For each customer, how many invoices are in Syncro and how many tickets in HubSpot CRM?
   calls `syncro.invoices.list` `hubspot_crm.tickets.list`

Across your systems

## Syncro, joined to the rest of your business.

One `ask` fetches from Syncro and another system, joins the rows on the same customer on our side, and hands your agent the answer, not every row.

- For each customer, how many invoices are in Syncro and how many tickets in HubSpot CRM?
  `syncro.invoices.list` + `hubspot_crm.tickets.list`, on `crm.company` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)
- For each customer, how many invoices are in Syncro and how many tickets in ServiceNow?
  `syncro.invoices.list` + `servicenow_table.incidents.list`, on `crm.company` · [ServiceNow](https://actionlake.com/connectors/servicenow)

Also mapped by other connectors `identity.user` **517** `crm.company` **227** `crm.contact` **192** `commerce.product` **109** `finance.invoice` **91** `device.endpoint` **69** `service.ticket` **62** `monitoring.alert` **56**

ask

```
ask {
  intent: "for each customer, how many invoices are in Syncro and how many tickets in HubSpot CRM",
  steps: [
    { action: "syncro.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 },
    { action: "hubspot_crm.tickets.list", as: "tix", input: {}, limit: 100, max_pages: 5 },
    { join: {
        left: "inv",
        right: "tix",
        on: "crm.company",
        group_by: "inv.company_name",
        select: ["inv.company_name", "count(inv.id) as invoices", "count(tix.id) as tickets"]
    } }
  ]
}
```

Example. Run it through check first: it validates the steps and prices them, and it is free.

The plan store

## Ready-made plans for Syncro.

8 plans in the store. Install one and your agent runs it by name; the reply says which connections are still missing. A schedule can run a plan on a timetable. There are no triggers or webhooks, by design.

1. ### Turn active RMM alerts into tickets
   Use it when Monitoring alerts have piled up and each one needs a ticket a technician can pick up.
   **Effect**
   write
   **Steps**
   3 · loops
   **Needs**
   since
   **Install**
   `syncro-rmm-alert-triage`
2. ### Find and nudge stale open tickets
   Use it when The service desk wants stale tickets surfaced and nudged without anyone reading every queue by hand.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   status
   **Install**
   `syncro-stale-ticket-report`
3. ### Chase unpaid invoices by email
   Use it when Accounts receivable wants to send a reminder to every customer with an open invoice.
   A person decides Email a payment reminder for _chase count_ unpaid Syncro invoices.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   max invoices
   **Install**
   `syncro-unpaid-invoice-chase`
4. ### Audit patch status across a customer's assets
   Use it when Somebody asks how well patched a particular customer's fleet is.
   **Effect**
   write
   **Steps**
   5 · loops
   **Needs**
   customer id
   **Install**
   `syncro-asset-patch-audit`
5. ### Convert an accepted estimate into an invoice
   Use it when A customer has accepted an estimate and it should become a real invoice.
   A person decides Convert estimate _number_ with _number of items_ line items into an invoice and email it.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   estimate id
   **Install**
   `syncro-estimate-to-invoice`
6. ### Onboard a new customer record
   Use it when A new client has signed and needs a complete Syncro record rather than a bare customer row.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   business name, contact name, email and phone
   **Install**
   `syncro-new-customer-onboarding`
7. ### Receive a purchase order into stock
   Use it when A shipment has arrived against a purchase order and stock needs booking in.
   A person decides Receive _received quantity_ units against purchase order _number_ from _name_.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   line item id, po id, received quantity and serial numbers
   **Install**
   `syncro-purchase-order-receive`
8. ### Bill logged time on a resolved ticket
   Use it when A technician has finished a ticket and the tracked time needs turning into an invoice.
   A person decides Bill _number of items_ timer entries on ticket _number_ to customer _customer id_.
   **Effect**
   write
   **Steps**
   7 · loops
   **Needs**
   invoice number and ticket id
   **Install**
   `syncro-ticket-time-billing`

install a plan

```
account { op: "plans.install", slug: "syncro-rmm-alert-triage" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for Syncro

## Destructive actions wait for a yes.

26 Syncro actions are destructive. These are all of them:

- Deletes an invoice by ID `syncro.invoices.delete`
- Deletes an Estimate by ID `syncro.estimates.delete`
- Deletes a Portal User by ID `syncro.portal_users.delete`
- Deletes a Ticket by ID `syncro.tickets.delete`
- Deletes a Contact `syncro.contacts.delete`
- Deletes a Customer by ID `syncro.customers.delete`
- Deletes a Contract by ID `syncro.contracts.delete`
- Deletes a Payment Profile `syncro.payment_profiles.delete`
- Deletes a Ticket Line Item `syncro.tickets.line_items_delete`
- Deletes an a line item of an invoice by ID `syncro.invoices.line_items_delete`
- Removes a Line Item from an Invoice Schedule `syncro.schedules.line_items_delete`
- Removes a Line Item from an Invoice Schedule (deprecated) `syncro.schedules.remove_line_item_legacy`
- Deletes/Clears an RMM Alert by ID `syncro.rmm_alerts.delete`
- Deletes a Schedule by ID `syncro.schedules.delete`
- Deletes a Line Item `syncro.estimates.line_items_delete`
- Deletes a Canned Response `syncro.canned_responses.delete`
- Deletes a Policy Folder by ID `syncro.policy_folders.delete`
- Deletes an Appointment by ID `syncro.appointments.delete`
- Deletes a Ticket Timer `syncro.tickets.delete_timer_entry`
- Deletes a Ticket Attachment `syncro.tickets.delete_attachment`
- Deletes a Product SKU by ID `syncro.product_skus.delete`
- Deletes a Phone by ID `syncro.phones.delete`
- Deletes a Wiki Page by ID `syncro.wiki_pages.delete`
- Deletes a Product Image `syncro.products.delete_image`
- Deletes a Worksheet Result `syncro.worksheet_results.delete`
- Deletes an Appointment Type by ID `syncro.appointment_types.delete`

A destructive action runs only with `confirm: true`. Under the `human` policy the agent cannot confirm for itself: the run stops until a named person approves, in the console or from a signed link in an email. The cap on a key is refused before the call is sent, never after.

do syncro.invoices.delete confirm_policy: **human**

Deletes an invoice by ID?

**intent:** the user asked me to deletes an invoice by ID

run suspended · waiting for a named person · key _syncro-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

```
account {
  op: "keys.create", name: "syncro-agent",
  allowed_actions: ["syncro.*"], cap_calls: 2000,
  confirm_policy: "human_for_writes",
  approval_rules: [
    { match: "syncro.invoices.delete", approver: "lead@example.com" },
    { match: "syncro.estimates.delete", approver: "lead@example.com" },
    { match: "syncro.portal_users.delete", approver: "lead@example.com" }
  ]
}
```

Illustrative. Scoped to Syncro only, capped at 2,000 upstream calls, every write confirmed, and the destructive ones approved by a named person.

Cost

## What Syncro costs on actionlake.

Every Syncro action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call Syncro refused with 401, 403, 429 or a 5xx are free. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

- 1 upstream call per action all 190 Syncro actions
- 190 actions page each page of a long list is one call
- 76 reads can be cached a cache hit costs nothing
- 100,000 calls a month, free paid plans from US$49 a month for 250,000

[See pricing](https://actionlake.com/pricing)

Action index

## Every Syncro action.

190 actions by area: the id your agent calls, what it does, and its effect.

**PSA 43**

- `syncro.canned_responses.create` Creates a new Canned Response write
- `syncro.canned_responses.delete` Deletes a Canned Response destructive
- `syncro.canned_responses.list` Returns a list of Canned Responses with a query read
- `syncro.canned_responses.patch` Updates a Canned Response write
- `syncro.canned_responses.settings_get` Returns the settings for Canned Responses read
- `syncro.new_ticket_forms.get` Retrieves a Ticket Form read
- `syncro.new_ticket_forms.list` Returns a paginated list of Ticket Forms read
- `syncro.new_ticket_forms.process_form` Creates a new Ticket for a Ticket Form write
- `syncro.ticket_blueprints.apply` Creates tickets from a Blueprint write
- `syncro.ticket_blueprints.list` Returns a paginated list of Ticket Blueprints read
- `syncro.ticket_comments.list` Returns a paginated flat list of comments across multiple tickets read
- `syncro.ticket_timers.create` Creates a Ticket Timer that starts running write
- `syncro.ticket_timers.list` Returns a paginated list of Ticket Timers read
- `syncro.ticket_timers.patch` Updates an existing Ticket Timer by ID write
- `syncro.ticket_timers.pause` Pauses a running Ticket Timer write
- `syncro.ticket_timers.start` Starts (or resumes a paused) Ticket Timer write
- `syncro.ticket_timers.stop` Stops a running or paused Ticket Timer write
- `syncro.tickets.attach_file_url` Attach a file to a Ticket write
- `syncro.tickets.charge_timer_entry` Charges a Ticket Timer write
- `syncro.tickets.comments_create` Adds a Comment to a Ticket write
- `syncro.tickets.comments_list` Returns Comments for a Ticket read
- `syncro.tickets.create` Creates a Ticket write
- `syncro.tickets.delete` Deletes a Ticket by ID destructive
- `syncro.tickets.delete_attachment` Deletes a Ticket Attachment destructive
- `syncro.tickets.delete_timer_entry` Deletes a Ticket Timer destructive
- `syncro.tickets.get` Retrieves a Ticket by ID read
- `syncro.tickets.line_items_create` Creates a Ticket Line Item write
- `syncro.tickets.line_items_delete` Deletes a Ticket Line Item destructive
- `syncro.tickets.line_items_update` Updates an existing Ticket Line Item write
- `syncro.tickets.list` Returns a paginated list of Tickets read
- `syncro.tickets.print` Prints a Ticket by ID write
- `syncro.tickets.settings_get` Returns Tickets Settings read
- `syncro.tickets.timer_entry_create` Create a Ticket Timer for a Ticket write
- `syncro.tickets.timer_entry_update` Updates an existing Ticket Timer write
- `syncro.tickets.update` Updates an existing Ticket by ID write
- `syncro.timelogs.last_get` Returns last Timelog read
- `syncro.timelogs.list` Returns a paginated list of Timelogs read
- `syncro.timelogs.update` Updates a Timelog write
- `syncro.worksheet_results.create` Creates Worksheet Result write
- `syncro.worksheet_results.delete` Deletes a Worksheet Result destructive
- `syncro.worksheet_results.get` Retrieves a Worksheet Result by ID read
- `syncro.worksheet_results.list` Returns a paginated list of Worksheet Results read
- `syncro.worksheet_results.update` Updates a Worksheet Result write

**RMM 22**

- `syncro.assets.chat_information` Retrieves Assets by ID read
- `syncro.assets.create` Creates an Asset write
- `syncro.assets.get` Retrieves an Asset by ID read
- `syncro.assets.installed_applications_list` Retrieves installed applications for an Asset read
- `syncro.assets.list` Returns a paginated list of Assets read
- `syncro.assets.list_by_contact` Returns a list of Assets for a specific contact read
- `syncro.assets.patches_get` Retrieves Windows patch data for an Asset read
- `syncro.assets.update` Updates an existing Asset by ID write
- `syncro.policy_folders.create` Creates a Policy Folder write
- `syncro.policy_folders.delete` Deletes a Policy Folder by ID destructive
- `syncro.policy_folders.get` Retrieves a Policy Folder by ID read
- `syncro.policy_folders.list` Returns a paginated list of Policy Folders read
- `syncro.policy_folders.update` Updates an existing Policy Folder by ID write
- `syncro.rmm_alerts.create` Creates an RMM Alert write
- `syncro.rmm_alerts.delete` Deletes/Clears an RMM Alert by ID destructive
- `syncro.rmm_alerts.get` Retrieves an RMM Alert by ID read
- `syncro.rmm_alerts.list` Returns a paginated list of RMM Alerts read
- `syncro.rmm_alerts.mute` Mutes an RMM Alert by ID write
- `syncro.rmm_scripts.schedule` Schedules a Script on an Asset write
- `syncro.user_devices.create` Creates a User Device write
- `syncro.user_devices.get` Retrieves an existing User Device by UUID read
- `syncro.user_devices.update` Updates an existing User Device by UUID write

**Catalog 17**

- `syncro.product_serials.attach_to_line_item` Adds Product Serials to a Line Item write
- `syncro.product_serials.create` Creates a Product Serial write
- `syncro.product_serials.list` Returns a paginated list of Product_serials read
- `syncro.product_serials.update` Updates an existing Product Serial by ID write
- `syncro.product_skus.create` Creates a Product SKU write
- `syncro.product_skus.delete` Deletes a Product SKU by ID destructive
- `syncro.product_skus.list` Returns a list of Product SKUs read
- `syncro.product_skus.update` Updates an existing Product SKU by ID write
- `syncro.products.add_images` Creates a Product Image write
- `syncro.products.barcode_get` Returns a Product by Barcode read
- `syncro.products.categories_list` Returns a paginated list of Product Categories read
- `syncro.products.create` Creates a Product write
- `syncro.products.delete_image` Deletes a Product Image destructive
- `syncro.products.get` Retrieves a Product by ID read
- `syncro.products.list` Returns a paginated list of Products read
- `syncro.products.location_quantities_update` Updates a Location Quantity write
- `syncro.products.update` Updates an existing Product by ID write

**Invoicing 12**

- `syncro.invoices.create` Creates an Invoice write
- `syncro.invoices.delete` Deletes an invoice by ID destructive
- `syncro.invoices.email` Sends invoice to customer write
- `syncro.invoices.get` Retrieves an Invoice by ID or Number read
- `syncro.invoices.line_items_create` Creates a new line item write
- `syncro.invoices.line_items_delete` Deletes an a line item of an invoice by ID destructive
- `syncro.invoices.line_items_update` Updates an a line item of an invoice by ID write
- `syncro.invoices.list` Returns a paginated list of Invoices read
- `syncro.invoices.print` Queues a print job for an invoice write
- `syncro.invoices.ticket_get` Returns the associated ticket for an invoice read
- `syncro.invoices.update` Updates an existing invoice by ID write
- `syncro.line_items.list` Returns a paginated list of Line Items read

**Quoting 11**

- `syncro.estimates.convert_to_invoice` Convert an Estimate to an Invoice write
- `syncro.estimates.create` Creates an Estimate write
- `syncro.estimates.delete` Deletes an Estimate by ID destructive
- `syncro.estimates.email` Sends an Estimate to a Customer write
- `syncro.estimates.get` Retrieves an Estimate by ID or number read
- `syncro.estimates.line_items_create` Adds a Line Item to an Estimate write
- `syncro.estimates.line_items_delete` Deletes a Line Item destructive
- `syncro.estimates.line_items_update` Updates a Line Item write
- `syncro.estimates.list` Returns a paginated list of Estimates read
- `syncro.estimates.print` Queues a print job for an Estimate write
- `syncro.estimates.update` Updates an existing Estimate by ID write

**Recurring 10**

- `syncro.schedules.add_line_item_legacy` Adds a Line Item to an Invoice Schedule (deprecated) write
- `syncro.schedules.create` Creates an Invoice Schedule write
- `syncro.schedules.delete` Deletes a Schedule by ID destructive
- `syncro.schedules.get` Retrieves a Schedule by ID read
- `syncro.schedules.line_items_create` Adds a Line Item to an Invoice Schedule write
- `syncro.schedules.line_items_delete` Removes a Line Item from an Invoice Schedule destructive
- `syncro.schedules.line_items_update` Updates a Line Item write
- `syncro.schedules.list` Returns a paginated list of Invoice Schedules read
- `syncro.schedules.remove_line_item_legacy` Removes a Line Item from an Invoice Schedule (deprecated) destructive
- `syncro.schedules.update` Updates an existing Invoice Schedule by ID write

**Scheduling 10**

- `syncro.appointment_types.create` Creates an Appointment Type write
- `syncro.appointment_types.delete` Deletes an Appointment Type by ID destructive
- `syncro.appointment_types.get` Retrieves an Appointment Type by ID read
- `syncro.appointment_types.list` Returns a paginated list of Appointment Types read
- `syncro.appointment_types.update` Updates an existing Appointment Type by ID write
- `syncro.appointments.create` Creates an Appointment write
- `syncro.appointments.delete` Deletes an Appointment by ID destructive
- `syncro.appointments.get` Retrieves an Appointment by ID read
- `syncro.appointments.list` Returns a paginated list of Appointments read
- `syncro.appointments.update` Updates an existing Appointment by ID write

**Contacts 9**

- `syncro.contacts.create` Creates a Contact write
- `syncro.contacts.delete` Deletes a Contact destructive
- `syncro.contacts.get` Retrieves a Contact by ID read
- `syncro.contacts.list` Returns a paginated list of Contacts read
- `syncro.contacts.update` Updates an existing Contact write
- `syncro.phones.create` Creates a Phone write
- `syncro.phones.delete` Deletes a Phone by ID destructive
- `syncro.phones.list` Returns a paginated list of Phones read
- `syncro.phones.update` Updates an existing Phone by ID write

**Payments 9**

- `syncro.payment_methods.list` Returns a paginated list of Payment Methods read
- `syncro.payment_profiles.create` Creates a Payment Profile write
- `syncro.payment_profiles.delete` Deletes a Payment Profile destructive
- `syncro.payment_profiles.get` Retrieves a Payment Profile by ID read
- `syncro.payment_profiles.list` Returns a paginated list of Payment Profiles read
- `syncro.payment_profiles.update` Updates a Payment Profile write
- `syncro.payments.create` Creates a Payment write
- `syncro.payments.get` Retrieves a Payment by ID read
- `syncro.payments.list` Returns a paginated list of Payments read

**Purchasing 8**

- `syncro.items.list` Returns a paginated list of Part Orders read
- `syncro.purchase_orders.attachments_create` Upload an attachment to a Purchase Order write
- `syncro.purchase_orders.create` Creates a Purchase Order write
- `syncro.purchase_orders.get` Retrieves a Purchase Order by ID read
- `syncro.purchase_orders.line_items_create` Adds a Product to a Purchase Order write
- `syncro.purchase_orders.list` Returns a paginated list of Purchase Orders read
- `syncro.purchase_orders.receive` Receive purchase_order write
- `syncro.purchase_orders.update` Updates a Purchase Order write

**Accounts 7**

- `syncro.customers.autocomplete` Returns a paginated list of customers for autocomplete query read
- `syncro.customers.create` Creates a Customer write
- `syncro.customers.delete` Deletes a Customer by ID destructive
- `syncro.customers.get` Retrieves a Customer by ID read
- `syncro.customers.latest_get` Returns latest Customer read
- `syncro.customers.list` Returns a paginated list of customers read
- `syncro.customers.update` Updates an existing Customer by ID write

**Portal 5**

- `syncro.portal_users.create` Creates a Portal User write
- `syncro.portal_users.create_invitation` Creates an Invitation for a Portal User write
- `syncro.portal_users.delete` Deletes a Portal User by ID destructive
- `syncro.portal_users.list` Returns a paginated list of Portal Users read
- `syncro.portal_users.update` Updates an existing Portal User by ID write

**Knowledge 5**

- `syncro.wiki_pages.create` Creates a Wiki Page write
- `syncro.wiki_pages.delete` Deletes a Wiki Page by ID destructive
- `syncro.wiki_pages.get` Retrieves a Wiki Page read
- `syncro.wiki_pages.list` Returns a paginated list of Wiki Pages read
- `syncro.wiki_pages.update` Updates an existing Wiki Page by ID write

**Contracts 5**

- `syncro.contracts.create` Creates a Contract write
- `syncro.contracts.delete` Deletes a Contract by ID destructive
- `syncro.contracts.get` Retrieves a Contract by ID read
- `syncro.contracts.list` Returns a paginated list of Contracts read
- `syncro.contracts.update` Updates an existing Contract by ID write

**Leads 4**

- `syncro.leads.create` Creates a Lead write
- `syncro.leads.get` Retrieves a Lead by ID read
- `syncro.leads.list` Returns a paginated list of Leads read
- `syncro.leads.update` Updates an existing Lead by ID write

**Users 4**

- `syncro.users.get` Retrieves an existing User by ID read
- `syncro.users.list` Returns a paginated list of Users read
- `syncro.users.me_get` Returns the current user read
- `syncro.users.otp_login` Authorize a User with One Time Password write

**Vendors 4**

- `syncro.vendors.create` Creates a Vendor write
- `syncro.vendors.get` Retrieves a Vendor Page read
- `syncro.vendors.list` Returns a paginated list of Vendors read
- `syncro.vendors.update` Updates an existing Vendor page by ID write

**Settings 3**

- `syncro.settings.get` Returns a list of Account Settings with rollout read
- `syncro.settings.printing_get` Returns Printing Settings read
- `syncro.settings.tabs_get` Returns Tabs Settings read

**Telephony 1**

- `syncro.callerid.get` Get Caller ID read

**Global 1**

- `syncro.search.query` Search all the things read

Questions

## The Syncro MCP server, answered.

**Is there a Syncro MCP server for Claude?**

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 190 Syncro actions across PSA, RMM, catalog and invoicing, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Syncro.

**What do I need to connect Syncro?**

Syncro API token. Plus your subdomain host. The free call account { op: "connections.requirements", service: "syncro" } lists exactly what to paste.

**Can an AI agent delete or change things in Syncro?**

Only if its key allows it, and only with an explicit confirmation. 26 Syncro actions are destructive, including deletes an invoice by ID, deletes an Estimate by ID and deletes a Portal User by ID. Each runs only with confirm: true. Under the human confirm policy, or an approval rule on the key, the run waits until a named person approves it.

**Will an AI agent use up my Syncro API limit?**

actionlake paces every call to the limits in the Syncro service file: 180 calls a minute per connection. Repeated reads are answered from cache (76 Syncro actions can be), which never reaches Syncro.

**What does a Syncro action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (190 Syncro actions page). Cache hits, searches, dry runs and calls Syncro refused with 401, 403, 429 or a 5xx are free. The Free plan includes 100,000 calls a month with no card. Paid plans start at US$49 a month for 250,000 calls, with overage from US$0.30 down to US$0.18 per 1,000.

**Which Syncro API does it cover?**

The Syncro API 1 at your own syncromsp.com address, set when you connect. It is built from Syncro's documentation as read on 15 September 2026. 190 actions in 20 areas, each one in the signed service file (version 2.0.0).

**Can I combine Syncro with my other systems?**

Yes. ask joins Syncro to HubSpot CRM or ServiceNow on the same customer and returns the answer rather than every row. Syncro maps crm.company, which 227 other connectors also map.

**Does actionlake keep my Syncro data, and where?**

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to an hour, and a write clears the reads it affects. Each run's request and response is kept, sealed, for your plan's trace window: 1 day on Free, 3 days on Starter, 7 days on Pro, 14 days on Team, 30 days on Business and 30 days on Enterprise. Your Syncro credential is sealed under your tenant's key, never logged and never returned. Your traffic is not used to train models.

**Which AI clients can use it?**

Claude Code, tested by us end to end, and the Claude app as a custom connector, tested by us with an existing key. Other MCP clients that support remote servers over Streamable HTTP (MCP revisions 2025-06-18 and 2025-11-25) and OAuth dynamic client registration, or a bearer header, should connect the same way; we have not tested them. Or plain REST, under the same action names.

## More connectors like Syncro

Shares the most action names with

- [RepairShopr 154](https://actionlake.com/connectors/repairshopr)
- [HaloPSA 90](https://actionlake.com/connectors/halopsa)
- [Kaseya BMS 50](https://actionlake.com/connectors/kaseya-bms)
- [Gorelo 34](https://actionlake.com/connectors/gorelo)
- [Atera 32](https://actionlake.com/connectors/atera)
- [SuperOps RMM+PSA 30](https://actionlake.com/connectors/superops-rmm-psa)

Joins with, on shared entities

- [ERPNext (Frappe) 10](https://actionlake.com/connectors/erpnext-frappe)
- [Microsoft Dynamics 365 10](https://actionlake.com/connectors/microsoft-dynamics-365)
- [ServiceTitan 10](https://actionlake.com/connectors/servicetitan)
- [Zoho CRM 10](https://actionlake.com/connectors/zoho-crm)
- [Odoo 9](https://actionlake.com/connectors/odoo)
- [Salesforce Sales Cloud 8](https://actionlake.com/connectors/salesforce-sales-cloud)

Browse

- [All MSP & PSA connectors](https://actionlake.com/connectors/category/msp-and-psa)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

actionlake is independent. It is not made or endorsed by Syncro; the name is the vendor's own. Counts are from the Syncro service file, version 2.0.0.

## Give your agent Syncro today.

[Connect Syncro free](https://actionlake.com/console?start=sandbox) [See pricing](https://actionlake.com/pricing)

Start free - 100,000 calls/month, no card. No signup. Hard caps on every key. Cached answers are free.

---

Source: https://actionlake.com/connectors/syncro
More: https://actionlake.com/llms.txt
