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

Connectors · MSP & PSA

# RepairShopr MCP server for AI agents.

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

[Connect RepairShopr 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: "repairshopr.invoices.list",
  intent: "check which RepairShopr account is connected"
}
# Returns a paginated list of Invoices · read · 1 upstream call
```

- 186 actions in one signed file
- 74 read look, never change
- 87 write create and update
- 25 wait for a yes destructive, confirmed first

Set up

## Connect RepairShopr 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 RepairShopr.
   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` RepairShopr API key (your user profile page > API Tokens)
   - `subdomain_host` Where your RepairShopr lives: your subdomain host
   ```
   account { op: "connections.requirements", service: "repairshopr" }
   # 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: "repairshopr.invoices.list" }
   # returns a paginated list of invoices · read · 1 upstream call
   check { action: "repairshopr.invoices.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

RepairShopr 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**

RepairShopr API v1, at your own repairshopr.com address, set when you connect

**Built from**

RepairShopr's documentation, read 20 September 2026[api-docs.repairshopr.com](https://api-docs.repairshopr.com/swagger.json)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

74 of 74 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 RepairShopr up with your other systems

**Data**

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

Capabilities

## What an AI agent can do in RepairShopr.

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

- **74** read look, never change
- **87** write create and update
- **25** 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. ### 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
3. ### RMM
   17
   9 read · 7 write · 1 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
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

**13 more areas · 57 actions**

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

Top actions

## The RepairShopr API, shaped for agents.

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

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `repairshopr.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 |
| `repairshopr.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 |
| `repairshopr.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 |
| `repairshopr.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 |
| `repairshopr.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 |
| `repairshopr.invoices.create` Creates an Invoice | Creates an Invoice. | write | `finance.invoice.create` 74 connectors |
| `repairshopr.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 |
| `repairshopr.payments.create` Creates a Payment | Creates a Payment. | write | `finance.payment.create` 67 connectors |
| `repairshopr.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 |
| `repairshopr.users.get` Retrieves an existing User by ID | Retrieves an existing User by ID. | read | `identity.user.get` 399 connectors |
| `repairshopr.estimates.create` Creates an Estimate | Creates an Estimate. | write | `finance.quote.create` 52 connectors |
| `repairshopr.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 RepairShopr actions it will call, so you know what it reads and what it changes before you send it.

1. Read read
   Which RepairShopr invoices are more than 30 days overdue? Group them by customer with the total owed.
   calls `repairshopr.invoices.list`
2. Plan write
   Book an onsite visit against a ticket in RepairShopr. Ask me before anything is sent or changed.
   calls `repairshopr.tickets.get` `repairshopr.customers.get` `repairshopr.appointments.list` `repairshopr.appointments.create` `repairshopr.tickets.comments_create`
3. Plan write
   Convert an accepted estimate into an invoice in RepairShopr. Ask me before anything is sent or changed.
   calls `repairshopr.estimates.get` `repairshopr.line_items.list` `repairshopr.estimates.convert_to_invoice` `repairshopr.invoices.publish` `repairshopr.invoices.email`
4. Write write
   Creates an Invoice in RepairShopr. Show me exactly what you will send before you save it.
   calls `repairshopr.invoices.create`
5. Across systems read
   For each customer, how many invoices are in RepairShopr and how many tickets in HubSpot CRM?
   calls `repairshopr.invoices.list` `hubspot_crm.tickets.list`

Across your systems

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

One `ask` fetches from RepairShopr 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 RepairShopr and how many tickets in HubSpot CRM?
  `repairshopr.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 RepairShopr and how many tickets in ServiceNow?
  `repairshopr.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 RepairShopr and how many tickets in HubSpot CRM",
  steps: [
    { action: "repairshopr.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 RepairShopr.

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. ### Report on tickets with no recent comment
   Use it when Someone wants to see which open tickets have gone quiet and how much time is logged on them.
   **Effect**
   read
   **Steps**
   3 · loops
   **Needs**
   created after
   **Install**
   `repairshopr-stale-ticket-report`
2. ### Triage new RMM alerts into tickets
   Use it when New monitoring alerts have arrived and each needs a ticket raised and the alert silenced.
   **Effect**
   write
   **Steps**
   3 · loops
   **Needs**
   created after
   **Install**
   `repairshopr-rmm-alert-triage`
3. ### Charge unbilled ticket time to the ticket
   Use it when Logged technician time needs reviewing and charging onto tickets before invoicing.
   A person decides Charge _number of billable_ billable timer entries onto their tickets.
   **Effect**
   write
   **Steps**
   4 · loops
   **Needs**
   created at gt
   **Install**
   `repairshopr-billable-timer-charge`
4. ### Chase unpaid invoices by email
   Use it when Someone wants to send a reminder email for every outstanding RepairShopr invoice.
   A person decides Email a payment reminder for _chase count_ unpaid RepairShopr invoices.
   **Effect**
   write
   **Steps**
   4 · loops
   **Install**
   `repairshopr-unpaid-invoice-chase`
5. ### Onboard a new customer record
   Use it when A new client has signed up and needs a customer record, contact, phone and portal login created.
   **Effect**
   write
   **Steps**
   5
   **Needs**
   business name and email
   **Install**
   `repairshopr-new-customer-onboarding`
6. ### Book an onsite visit against a ticket
   Use it when A ticket needs an onsite visit scheduled and the customer told about it.
   A person decides Book an onsite visit for _business name_ at _start at_ against ticket _number_, with _number of items_ appointments already in that window.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   ticket id and start at
   **Install**
   `repairshopr-appointment-from-ticket`
7. ### Convert an accepted estimate into an invoice
   Use it when A customer has accepted an estimate and it should become a published, emailed invoice.
   A person decides Convert estimate _number_ with _number of items_ line items into an invoice and email it.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   estimate id
   **Install**
   `repairshopr-estimate-to-invoice`
8. ### Write a wiki page documenting a customer asset
   Use it when An asset needs its configuration and installed software written up as customer documentation.
   **Effect**
   write
   **Steps**
   6
   **Needs**
   asset id
   **Install**
   `repairshopr-wiki-page-for-asset`

install a plan

```
account { op: "plans.install", slug: "repairshopr-stale-ticket-report" }
# then ask for it by name; a schedule can run it on a timetable
```

Governance for RepairShopr

## Destructive actions wait for a yes.

25 RepairShopr actions are destructive. These are all of them:

- Deletes an invoice by ID `repairshopr.invoices.delete`
- Deletes an Estimate by ID `repairshopr.estimates.delete`
- Deletes a Portal User by ID `repairshopr.portal_users.delete`
- Deletes a Ticket by ID `repairshopr.tickets.delete`
- Deletes a Contact `repairshopr.contacts.delete`
- Deletes a Customer by ID `repairshopr.customers.delete`
- Deletes a Contract by ID `repairshopr.contracts.delete`
- Deletes a Payment Profile `repairshopr.payment_profiles.delete`
- Deletes a Ticket Line Item `repairshopr.tickets.line_items_delete`
- Deletes an a line item of an invoice by ID `repairshopr.invoices.line_items_delete`
- Removes a Line Item from an Invoice Schedule `repairshopr.schedules.line_items_delete`
- Removes a Line Item from an Invoice Schedule (deprecated) `repairshopr.schedules.remove_line_item_legacy`
- Deletes/Clears an RMM Alert by ID `repairshopr.rmm_alerts.delete`
- Deletes a Schedule by ID `repairshopr.schedules.delete`
- Deletes a Line Item `repairshopr.estimates.line_items_delete`
- Deletes a Canned Response `repairshopr.canned_responses.delete`
- Deletes an Appointment by ID `repairshopr.appointments.delete`
- Deletes a Ticket Timer `repairshopr.tickets.delete_timer_entry`
- Deletes a Ticket Attachment `repairshopr.tickets.delete_attachment`
- Deletes a Product SKU by ID `repairshopr.product_skus.delete`
- Deletes a Phone by ID `repairshopr.phones.delete`
- Deletes a Wiki Page by ID `repairshopr.wiki_pages.delete`
- Deletes a Product Image `repairshopr.products.delete_image`
- Deletes a Worksheet Result `repairshopr.worksheet_results.delete`
- Deletes an Appointment Type by ID `repairshopr.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 repairshopr.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 _repairshopr-agent_ cannot confirm itself

In the console, or from an emailed signed link.

a key for this connector

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

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

Cost

## What RepairShopr costs on actionlake.

Every RepairShopr action is one upstream call, the only thing actionlake bills. Searching, `check`, `cost`, `account` and any call RepairShopr 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 186 RepairShopr actions
- 186 actions page each page of a long list is one call
- 74 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 RepairShopr action.

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

**PSA 43**

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

**Catalog 17**

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

**RMM 17**

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

**Invoicing 12**

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

**Quoting 11**

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

**Recurring 10**

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

**Scheduling 10**

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

**Contacts 9**

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

**Payments 9**

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

**Accounts 7**

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

**Purchasing 7**

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

**Portal 5**

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

**Knowledge 5**

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

**Contracts 5**

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

**Leads 4**

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

**Users 4**

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

**Vendors 4**

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

**Settings 3**

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

**Invoicing 2**

- `repairshopr.invoices.convert_to_draft` Converts a published Invoice back to a draft write
- `repairshopr.invoices.publish` Publishes a draft Invoice write

**Telephony 1**

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

**Global 1**

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

Questions

## The RepairShopr MCP server, answered.

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

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

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

RepairShopr API key (your user profile page > API Tokens). Plus your subdomain host. The free call account { op: "connections.requirements", service: "repairshopr" } lists exactly what to paste.

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

Only if its key allows it, and only with an explicit confirmation. 25 RepairShopr 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 RepairShopr API limit?**

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

**What does a RepairShopr action cost?**

One upstream call, the only unit actionlake bills. A list that pages bills one call per page (186 RepairShopr actions page). Cache hits, searches, dry runs and calls RepairShopr 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 RepairShopr API does it cover?**

The RepairShopr API v1 at your own repairshopr.com address, set when you connect. It is built from RepairShopr's documentation as read on 20 September 2026. 186 actions in 21 areas, each one in the signed service file (version 1.0.0).

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

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

**Does actionlake keep my RepairShopr 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 RepairShopr 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 RepairShopr

Shares the most action names with

- [Syncro 154](https://actionlake.com/connectors/syncro)
- [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 RepairShopr; the name is the vendor's own. Counts are from the RepairShopr service file, version 1.0.0.

## Give your agent RepairShopr today.

[Connect RepairShopr 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/repairshopr
More: https://actionlake.com/llms.txt
