---
title: "Holded MCP server for AI agents - actionlake"
description: "Give Claude 324 Holded actions through one MCP server: employees, invoices, sales orders. Your agent never holds the credential. 100,000 calls a month free."
canonical: https://actionlake.com/connectors/holded
updated: 2026-10-23
---

Connectors · Accounting & finance

# Holded MCP server for AI agents.

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

[Connect Holded 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: "holded.invoices.list",
  intent: "check which Holded account is connected"
}
# List invoices · read · 1 upstream call
```

- 324 actions in one signed file
- 127 read look, never change
- 150 write create and update
- 47 wait for a yes destructive, confirmed first

Set up

## Connect Holded 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 Holded.
   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` Holded API key: in Holded go to Settings > API, click Generate new key and copy it
   ```
   account { op: "connections.requirements", service: "holded" }
   # 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: "holded.invoices.list" }
   # list invoices · read · 1 upstream call
   check { action: "holded.invoices.create", input: { … } }
   # free: inputs, permissions, cost and confirmations, nothing sent
   ```

Holded 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`

**Limits we pace to**

60 calls a minute, per connection

**API covered**

Holded API v2`api.holded.com`

**Built from**

Holded's documentation, read 23 October 2026[holded.com](https://www.holded.com/developers/api-reference) [holded.com](https://www.holded.com/developers/authentication)

**Service file**

Version 1.0.0, signed (Ed25519)

**Cached reads**

127 of 127 reads, for up to 5 minutes; a write clears what it affects

**Shared entities**

14, so ask can line Holded up with your other systems

**Data**

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

Capabilities

## What an AI agent can do in Holded.

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

- **127** read look, never change
- **150** write create and update
- **47** destructive wait for a confirmation

1. ### Employees
   18
   7 read · 10 write · 1 destructive
   List all employees · Create an employee · Get an employee · Update an employee
2. ### Invoices
   15
   4 read · 7 write · 4 destructive
   List invoices · Create an invoice · Get an invoice · Update an invoice
3. ### Sales orders
   13
   4 read · 8 write · 1 destructive
   List sales orders · Create a sales order · Get a sales order · Update a sales order
4. ### Leads
   12
   2 read · 8 write · 2 destructive
   List all leads · Create a lead · Get a lead · Update a lead
5. ### Banking accounts
   11
   4 read · 6 write · 1 destructive
   List banking accounts · Create a banking account · Get a banking account by ID · Update a banking account
6. ### Estimates
   11
   3 read · 7 write · 1 destructive
   List estimates · Create an estimate · Get an estimate · Update an estimate
7. ### Products
   11
   7 read · 3 write · 1 destructive
   List all products · Create a product · Get a product by ID · Update a product
8. ### Projects
   11
   5 read · 4 write · 2 destructive
   List projects · Create a project · Get a project · Update a project

**42 more areas · 222 actions**

- Purchase orders **11**
- Purchases **11**
- Contacts **10**
- Credit notes **10**
- Receipt notes **10**
- Sales receipts **10**
- Waybills **10**
- Proformas **9**
- Webhooks **8**
- Payslips **7**
- Recurring invoices **7**
- Inbox **6**
- Purchase shipments **6**
- Salary records **6**
- Warehouses **6**
- Bookings **5**
- Contact groups **5**
- Events **5**
- Expenses accounts **5**
- Funnels **5**
- Invoicing forecasts **5**
- Payment methods **5**
- Payments **5**
- Price lists **5**
- Production orders **5**
- Sales channels **5**
- Services **5**
- Tasks **5**
- Employee times **4**
- Ledger entries **4**
- Numbering series **4**
- Tags **3**
- Accounting accounts **2**
- API usage **2**
- Booking locations **2**
- Remittances **2**
- Taxes **2**
- Business plan goals **1**
- Business plan scenarios **1**
- Documents **1**
- Project times **1**
- Purchase refunds **1**

Top actions

## The Holded API, shaped for agents.

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

| Action | What it does | Effect | Same name in |
| --- | --- | --- | --- |
| `holded.invoices.list` List invoices | List invoices. | read | `finance.invoice.list` 101 connectors |
| `holded.payments.list` List payments | List payments. | read | `finance.payment.list` 75 connectors |
| `holded.estimates.list` List estimates | List estimates. | read | `finance.quote.list` 52 connectors |
| `holded.purchase_orders.list` List purchase orders | List purchase orders. | read | `finance.purchase_order.list` 45 connectors |
| `holded.banking_accounts.list` List banking accounts | List banking accounts. | read | `finance.bank_account.list` 35 connectors |
| `holded.credit_notes.list` List credit notes | List credit notes. | read | `finance.credit_note.list` 33 connectors |
| `holded.purchases.list` List purchases | List purchases. | read | `finance.bill.list` 31 connectors |
| `holded.products.list` List all products | List all products. | read | `commerce.product.list` 112 connectors |
| `holded.invoices.create` Create an invoice | Create an invoice. | write | `finance.invoice.create` 74 connectors |
| `holded.payments.create` Create a payment | Create a payment. | write | `finance.payment.create` 67 connectors |
| `holded.estimates.create` Create an estimate | Create an estimate. | write | `finance.quote.create` 52 connectors |
| `holded.invoices.delete` Delete an invoice | Delete an invoice. | destructive | `finance.invoice.delete` 56 connectors |

Try it

## Prompts to paste into Claude.

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

1. Read read
   Which Holded invoices are more than 30 days overdue? Group them by customer with the total owed.
   calls `holded.invoices.list`
2. Write write
   Create an invoice in Holded. Show me exactly what you will send before you save it.
   calls `holded.invoices.create`
3. Across systems read
   For each customer, how many invoices are in Holded and how many tickets in ConnectWise PSA?
   calls `holded.invoices.list` `connectwise_manage.tickets.list`

Across your systems

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

One `ask` fetches from Holded 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 Holded and how many tickets in ConnectWise PSA?
  `holded.invoices.list` + `connectwise_manage.tickets.list`, on `crm.company` · [ConnectWise PSA](https://actionlake.com/connectors/connectwise-psa)
- For each customer, how many invoices are in Holded and how many tickets in HubSpot CRM?
  `holded.invoices.list` + `hubspot_crm.tickets.list`, on `crm.company` · [HubSpot CRM](https://actionlake.com/connectors/hubspot-crm)

Also mapped by other connectors `crm.company` **227** `work.project` **116** `commerce.product` **109** `work.task` **105** `finance.invoice` **91** `commerce.order` **86** `hr.employee` **63** `finance.payment` **53**

ask

```
ask {
  intent: "for each customer, how many invoices are in Holded and how many tickets in ConnectWise PSA",
  steps: [
    { action: "holded.invoices.list", as: "inv", input: {}, limit: 100, max_pages: 5 },
    { action: "connectwise_manage.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.

Governance for Holded

## Destructive actions wait for a yes.

47 Holded actions are destructive. The first 10:

- Delete an invoice `holded.invoices.delete`
- Delete a payment `holded.payments.delete`
- Delete an estimate `holded.estimates.delete`
- Delete a purchase order `holded.purchase_orders.delete`
- Delete a purchase `holded.purchases.delete`
- Delete a product `holded.products.delete`
- Delete a credit note `holded.credit_notes.delete`
- Delete a banking account `holded.banking_accounts.delete`
- Delete a sales order `holded.sales_orders.delete`
- Delete a task `holded.tasks.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 holded.invoices.delete confirm_policy: **human**

Delete an invoice?

**intent:** the user asked me to delete an invoice

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

In the console, or from an emailed signed link.

a key for this connector

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

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

Cost

## What Holded costs on actionlake.

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

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

**Employees 18**

- `holded.employees.clock_in` Clock in an employee write
- `holded.employees.clock_out` Clock out an employee write
- `holded.employees.create` Create an employee write
- `holded.employees.create_employee_time` Create a time entry for an employee write
- `holded.employees.create_time_off` Create a time off request (absence / holiday) write
- `holded.employees.delete` Delete an employee destructive
- `holded.employees.get` Get an employee read
- `holded.employees.get_employee_contract` Get active contract read
- `holded.employees.get_time_off` Get a time off request (absence / holiday) read
- `holded.employees.list` List all employees read
- `holded.employees.list_all_time_offs` List all time off requests (absences / holidays) read
- `holded.employees.list_employee_time_offs` List time off requests for an employee (absences / holidays) read
- `holded.employees.list_employee_times` List time entries for an employee read
- `holded.employees.pause` Pause an employee time session write
- `holded.employees.unpause` Resume an employee time session write
- `holded.employees.update` Update an employee write
- `holded.employees.update_employee_contract` Update active contract write
- `holded.employees.update_time_off` Update time off end date (absence / holiday) write

**Invoices 15**

- `holded.invoices.approve_invoice` Approve an invoice write
- `holded.invoices.bulk_approve_invoices` Bulk approve invoices write
- `holded.invoices.bulk_cancel_invoices` Bulk cancel invoices destructive
- `holded.invoices.bulk_delete_invoices` Bulk delete invoices destructive
- `holded.invoices.cancel_invoice` Cancel an invoice destructive
- `holded.invoices.create` Create an invoice write
- `holded.invoices.create_invoice_payment` Create a payment for an invoice write
- `holded.invoices.delete` Delete an invoice destructive
- `holded.invoices.find_invoices_by_document_number` Find invoices by document number read
- `holded.invoices.get` Get an invoice read
- `holded.invoices.list` List invoices read
- `holded.invoices.list_invoice_attachments` List invoice attachments read
- `holded.invoices.send_invoice` Send an invoice by email write
- `holded.invoices.set_invoice_pipeline` Set invoice pipeline write
- `holded.invoices.update` Update an invoice write

**Sales orders 13**

- `holded.sales_orders.approve_sales_order` Approve a sales order write
- `holded.sales_orders.create` Create a sales order write
- `holded.sales_orders.delete` Delete a sales order destructive
- `holded.sales_orders.get` Get a sales order read
- `holded.sales_orders.get_sales_order_shipped_items` Get shipped items for a sales order read
- `holded.sales_orders.list` List sales orders read
- `holded.sales_orders.list_sales_order_attachments` List sales order attachments read
- `holded.sales_orders.send_sales_order` Send a sales order by email write
- `holded.sales_orders.set_sales_order_pipeline` Set sales order pipeline write
- `holded.sales_orders.ship_sales_order` Ship all items in a sales order write
- `holded.sales_orders.ship_sales_order_by_lines` Ship specific lines in a sales order write
- `holded.sales_orders.update` Update a sales order write
- `holded.sales_orders.update_sales_order_tracking` Update sales order tracking information write

**Leads 12**

- `holded.leads.create` Create a lead write
- `holded.leads.create_lead_note` Create a lead note write
- `holded.leads.create_lead_task` Create a lead task write
- `holded.leads.delete` Delete a lead destructive
- `holded.leads.delete_lead_task` Delete a lead task destructive
- `holded.leads.get` Get a lead read
- `holded.leads.list` List all leads read
- `holded.leads.update` Update a lead write
- `holded.leads.update_lead_dates` Update lead dates write
- `holded.leads.update_lead_note` Update a lead note write
- `holded.leads.update_lead_stage` Update a lead stage write
- `holded.leads.update_lead_task` Update a lead task write

**Banking accounts 11**

- `holded.banking_accounts.archive_banking_account` Archive a banking account write
- `holded.banking_accounts.create` Create a banking account write
- `holded.banking_accounts.create_bank_movement` Create one or multiple manual bank movements write
- `holded.banking_accounts.create_bank_movements_bulk` Create bank movements in bulk write
- `holded.banking_accounts.delete` Delete a banking account destructive
- `holded.banking_accounts.get` Get a banking account by ID read
- `holded.banking_accounts.list` List banking accounts read
- `holded.banking_accounts.list_banking_account_bank_movements` List banking account movements read
- `holded.banking_accounts.list_banking_account_cash_movements` List banking account cash movements read
- `holded.banking_accounts.reconcile_transaction_with_document` Reconcile a bank movement write
- `holded.banking_accounts.update` Update a banking account write

**Estimates 11**

- `holded.estimates.accept_estimate` Accept an estimate write
- `holded.estimates.approve_estimate` Approve an estimate write
- `holded.estimates.create` Create an estimate write
- `holded.estimates.delete` Delete an estimate destructive
- `holded.estimates.get` Get an estimate read
- `holded.estimates.list` List estimates read
- `holded.estimates.list_estimate_attachments` List estimate attachments read
- `holded.estimates.reject_estimate` Reject an estimate write
- `holded.estimates.send_estimate` Send an estimate by email write
- `holded.estimates.set_estimate_pipeline` Set estimate pipeline write
- `holded.estimates.update` Update an estimate write

**Products 11**

- `holded.products.create` Create a product write
- `holded.products.delete` Delete a product destructive
- `holded.products.get` Get a product by ID read
- `holded.products.get_product_image` Get a product image by ID read
- `holded.products.get_product_main_image` Get the main product image read
- `holded.products.get_product_stock` Get stock availability for a product read
- `holded.products.get_product_stock_transit` Get stock in transit for a product read
- `holded.products.list` List all products read
- `holded.products.list_product_images` List product images read
- `holded.products.update` Update a product write
- `holded.products.update_product_stock` Update stock for a product write

**Projects 11**

- `holded.projects.create` Create a project write
- `holded.projects.create_project_time` Create a time entry for a project write
- `holded.projects.delete` Delete a project destructive
- `holded.projects.delete_project_time` Delete a project time entry destructive
- `holded.projects.get` Get a project read
- `holded.projects.get_project_summary` Get a project summary read
- `holded.projects.get_project_time` Get a project time entry read
- `holded.projects.list` List projects read
- `holded.projects.list_project_times` List time entries for a project read
- `holded.projects.update` Update a project write
- `holded.projects.update_project_time` Update a project time entry write

**Purchase orders 11**

- `holded.purchase_orders.approve_purchase_order` Approve a purchase order write
- `holded.purchase_orders.create` Create a purchase order write
- `holded.purchase_orders.delete` Delete a purchase order destructive
- `holded.purchase_orders.get` Get a purchase order read
- `holded.purchase_orders.get_purchase_order_received_items` Get received items for a purchase order read
- `holded.purchase_orders.list` List purchase orders read
- `holded.purchase_orders.list_purchase_order_attachments` List purchase order attachments read
- `holded.purchase_orders.receive_purchase_order` Receive units of a purchase order write
- `holded.purchase_orders.send_purchase_order` Send a purchase order by email write
- `holded.purchase_orders.set_purchase_order_pipeline` Set purchase order pipeline write
- `holded.purchase_orders.update` Update a purchase order write

**Purchases 11**

- `holded.purchases.approve_purchase` Approve a purchase write
- `holded.purchases.create` Create a purchase write
- `holded.purchases.create_purchase_payment` Create a payment for a purchase write
- `holded.purchases.create_purchase_refund` Create a purchase refund write
- `holded.purchases.delete` Delete a purchase destructive
- `holded.purchases.get` Get a purchase read
- `holded.purchases.get_purchase_refund` Get a purchase refund read
- `holded.purchases.list` List purchases read
- `holded.purchases.list_purchase_attachments` List purchase attachments read
- `holded.purchases.set_purchase_pipeline` Set purchase pipeline write
- `holded.purchases.update` Update a purchase write

**Contacts 10**

- `holded.contacts.bulk_archive_contacts` Bulk archive contacts write
- `holded.contacts.bulk_delete_contacts` Bulk delete contacts destructive
- `holded.contacts.create` Create a contact write
- `holded.contacts.delete` Delete a contact destructive
- `holded.contacts.get` Get a contact by ID read
- `holded.contacts.get_contact_portal_link` Get client portal link for a contact read
- `holded.contacts.list` List contacts read
- `holded.contacts.list_contact_attachments` List contact attachments read
- `holded.contacts.search_contacts` Search contacts by name read
- `holded.contacts.update` Update a contact write

**Credit notes 10**

- `holded.credit_notes.approve_credit_note` Approve a credit note write
- `holded.credit_notes.create` Create a credit note write
- `holded.credit_notes.create_credit_note_payment` Create a payment for a credit note write
- `holded.credit_notes.delete` Delete a credit note destructive
- `holded.credit_notes.get` Get a credit note read
- `holded.credit_notes.list` List credit notes read
- `holded.credit_notes.list_credit_note_attachments` List credit note attachments read
- `holded.credit_notes.send_credit_note` Send a credit note by email write
- `holded.credit_notes.set_credit_note_pipeline` Set credit note pipeline write
- `holded.credit_notes.update` Update a credit note write

**Receipt notes 10**

- `holded.receipt_notes.approve_receipt_note` Approve a receipt note write
- `holded.receipt_notes.create` Create a receipt note write
- `holded.receipt_notes.create_receipt_note_payment` Create a payment for a receipt note write
- `holded.receipt_notes.delete` Delete a receipt note destructive
- `holded.receipt_notes.get` Get a receipt note read
- `holded.receipt_notes.list` List receipt notes read
- `holded.receipt_notes.list_receipt_note_attachments` List receipt note attachments read
- `holded.receipt_notes.send_receipt_note` Send a receipt note by email write
- `holded.receipt_notes.set_receipt_note_pipeline` Set receipt note pipeline write
- `holded.receipt_notes.update` Update a receipt note write

**Sales receipts 10**

- `holded.sales_receipts.approve_sales_receipt` Approve a sales receipt write
- `holded.sales_receipts.create` Create a sales receipt write
- `holded.sales_receipts.create_sales_receipt_payment` Create a payment for a sales receipt write
- `holded.sales_receipts.delete` Delete a sales receipt destructive
- `holded.sales_receipts.get` Get a sales receipt read
- `holded.sales_receipts.list` List sales receipts read
- `holded.sales_receipts.list_sales_receipt_attachments` List sales receipt attachments read
- `holded.sales_receipts.send_sales_receipt` Send a sales receipt by email write
- `holded.sales_receipts.set_sales_receipt_pipeline` Set sales receipt pipeline write
- `holded.sales_receipts.update` Update a sales receipt write

**Waybills 10**

- `holded.waybills.approve_waybill` Approve a waybill write
- `holded.waybills.create` Create a waybill write
- `holded.waybills.delete` Delete a waybill destructive
- `holded.waybills.get` Get a waybill read
- `holded.waybills.list` List waybills read
- `holded.waybills.list_waybill_attachments` List waybill attachments read
- `holded.waybills.send_waybill` Send a waybill by email write
- `holded.waybills.set_waybill_pipeline` Set waybill pipeline write
- `holded.waybills.update` Update a waybill write
- `holded.waybills.update_waybill_tracking` Update waybill tracking information write

**Proformas 9**

- `holded.proformas.approve_proforma` Approve a proforma write
- `holded.proformas.create` Create a proforma write
- `holded.proformas.delete` Delete a proforma destructive
- `holded.proformas.get` Get a proforma read
- `holded.proformas.list` List proformas read
- `holded.proformas.list_proforma_attachments` List proforma attachments read
- `holded.proformas.send_proforma` Send a proforma by email write
- `holded.proformas.set_proforma_pipeline` Set proforma pipeline write
- `holded.proformas.update` Update a proforma write

**Webhooks 8**

- `holded.webhooks.create` Create a webhook write
- `holded.webhooks.delete` Delete a webhook destructive
- `holded.webhooks.disable_webhook` Disable a webhook write
- `holded.webhooks.enable_webhook` Enable a webhook write
- `holded.webhooks.get` Get a webhook read
- `holded.webhooks.get_webhook_events` List supported webhook event types read
- `holded.webhooks.list` List webhooks read
- `holded.webhooks.update` Update a webhook write

**Payslips 7**

- `holded.payslips.approve_payslip` Approve a payslip write
- `holded.payslips.create` Create payslips in bulk write
- `holded.payslips.create_payslip_payment` Create a payment for a payslip write
- `holded.payslips.delete` Delete a payslip destructive
- `holded.payslips.delete_payslip_payment` Delete a payment from a payslip destructive
- `holded.payslips.get` Get a payslip read
- `holded.payslips.list` List payslips read

**Recurring invoices 7**

- `holded.recurring_invoices.create` Create a recurring invoice write
- `holded.recurring_invoices.delete` Delete a recurring invoice destructive
- `holded.recurring_invoices.get` Get a recurring invoice read
- `holded.recurring_invoices.get_recurring_schedule` Get recurring invoice schedule read
- `holded.recurring_invoices.list` List recurring invoices read
- `holded.recurring_invoices.skip_recurring_occurrence` Skip a recurring invoice occurrence write
- `holded.recurring_invoices.update` Update a recurring invoice write

**Inbox 6**

- `holded.inbox.attach_inbox` Attach incoming document to a document write
- `holded.inbox.delete` Delete an incoming document destructive
- `holded.inbox.export_inbox` Convert incoming document into a purchase document write
- `holded.inbox.get` Get an incoming document by ID read
- `holded.inbox.list` List inbox incoming documents read
- `holded.inbox.update` Update an incoming document write

**Purchase shipments 6**

- `holded.purchase_shipments.approve_purchase_shipment` Approve a purchase shipment write
- `holded.purchase_shipments.create` Create a purchase shipment write
- `holded.purchase_shipments.delete` Delete a purchase shipment destructive
- `holded.purchase_shipments.get` Get a purchase shipment read
- `holded.purchase_shipments.list` List purchase shipments read
- `holded.purchase_shipments.update` Update a purchase shipment write

**Salary records 6**

- `holded.salary_records.create` Create a salary record write
- `holded.salary_records.delete` Delete a salary record destructive
- `holded.salary_records.get` Get a salary record read
- `holded.salary_records.get_salary_record_form_data` Get salary record form data read
- `holded.salary_records.list` List salary records read
- `holded.salary_records.update` Update a salary record write

**Warehouses 6**

- `holded.warehouses.create` Create a warehouse write
- `holded.warehouses.delete` Delete a warehouse destructive
- `holded.warehouses.get` Get a warehouse by ID read
- `holded.warehouses.get_warehouse_stock` Get stock levels for a warehouse read
- `holded.warehouses.list` List all warehouses read
- `holded.warehouses.update` Update a warehouse write

**Bookings 5**

- `holded.bookings.create` Create a booking write
- `holded.bookings.delete` Cancel a booking destructive
- `holded.bookings.get` Get a booking by ID read
- `holded.bookings.list` List all bookings read
- `holded.bookings.update` Update a booking write

**Contact groups 5**

- `holded.contact_groups.create` Create a contact group write
- `holded.contact_groups.delete` Delete a contact group destructive
- `holded.contact_groups.get` Get a contact group read
- `holded.contact_groups.list` List contact groups read
- `holded.contact_groups.update` Update a contact group write

**Events 5**

- `holded.events.create` Create an event write
- `holded.events.delete` Delete an event destructive
- `holded.events.get` Get an event by ID read
- `holded.events.list` List all events read
- `holded.events.update` Update an event write

**Expenses accounts 5**

- `holded.expenses_accounts.create` Create an expenses account write
- `holded.expenses_accounts.delete` Delete an expenses account destructive
- `holded.expenses_accounts.get` Get an expenses account by ID read
- `holded.expenses_accounts.list` List all expenses accounts read
- `holded.expenses_accounts.update` Update an expenses account write

**Funnels 5**

- `holded.funnels.create` Create a funnel write
- `holded.funnels.delete` Delete a funnel destructive
- `holded.funnels.get` Get a funnel read
- `holded.funnels.list` List all funnels read
- `holded.funnels.update` Update a funnel write

**Invoicing forecasts 5**

- `holded.invoicing_forecasts.create` Create an invoicing forecast write
- `holded.invoicing_forecasts.delete` Delete an invoicing forecast destructive
- `holded.invoicing_forecasts.get` Get an invoicing forecast read
- `holded.invoicing_forecasts.list` List invoicing forecasts read
- `holded.invoicing_forecasts.update` Edit an invoicing forecast write

**Payment methods 5**

- `holded.payment_methods.create` Create a payment method write
- `holded.payment_methods.delete` Delete a payment method destructive
- `holded.payment_methods.get` Get a payment method by ID read
- `holded.payment_methods.list` List payment methods read
- `holded.payment_methods.update` Update a payment method write

**Payments 5**

- `holded.payments.create` Create a payment write
- `holded.payments.delete` Delete a payment destructive
- `holded.payments.get` Get a payment by ID read
- `holded.payments.list` List payments read
- `holded.payments.update` Update a payment write

**Price lists 5**

- `holded.price_lists.create` Create a price list write
- `holded.price_lists.delete` Delete a price list destructive
- `holded.price_lists.get` Get a price list by ID read
- `holded.price_lists.list` List price lists read
- `holded.price_lists.update` Update a price list write

**Production orders 5**

- `holded.production_orders.create` Create a production order write
- `holded.production_orders.delete` Delete a production order destructive
- `holded.production_orders.get` Get a production order read
- `holded.production_orders.list` List production orders read
- `holded.production_orders.update` Update a production order write

**Sales channels 5**

- `holded.sales_channels.create` Create a sales channel write
- `holded.sales_channels.delete` Delete a sales channel destructive
- `holded.sales_channels.get` Get a sales channel by ID read
- `holded.sales_channels.list` List all sales channels read
- `holded.sales_channels.update` Update a sales channel write

**Services 5**

- `holded.services.create` Create a service write
- `holded.services.delete` Delete a service destructive
- `holded.services.get` Get a service read
- `holded.services.list` List services read
- `holded.services.update` Update a service write

**Tasks 5**

- `holded.tasks.create` Create a task write
- `holded.tasks.delete` Delete a task destructive
- `holded.tasks.get` Get a task read
- `holded.tasks.list` List all tasks read
- `holded.tasks.update` Update a task write

**Employee times 4**

- `holded.employee_times.delete` Delete an employee time entry destructive
- `holded.employee_times.get` Get an employee time entry read
- `holded.employee_times.list` List all employee time entries read
- `holded.employee_times.update` Update an employee time entry write

**Ledger entries 4**

- `holded.ledger_entries.create` Create a ledger entry write
- `holded.ledger_entries.delete` Delete a ledger entry destructive
- `holded.ledger_entries.get` Get a ledger entry read
- `holded.ledger_entries.list` List ledger entries read

**Numbering series 4**

- `holded.numbering_series.create` Create a numbering series write
- `holded.numbering_series.delete` Delete a numbering series destructive
- `holded.numbering_series.list` List numbering series by document type read
- `holded.numbering_series.update` Update a numbering series write

**Tags 3**

- `holded.tags.create` Create a tag write
- `holded.tags.delete` Delete a tag destructive
- `holded.tags.list` List all tags read

**Accounting accounts 2**

- `holded.accounting_accounts.create` Create an accounting account write
- `holded.accounting_accounts.list` List chart of accounts read

**API usage 2**

- `holded.api_usage.get` Get API usage by type read
- `holded.api_usage.get_usage` Get API usage (automation token) read

**Booking locations 2**

- `holded.booking_locations.get_booking_location_slots` Get available slots for a location read
- `holded.booking_locations.list` List all booking locations read

**Remittances 2**

- `holded.remittances.get` Get a remittance read
- `holded.remittances.list` List remittances read

**Taxes 2**

- `holded.taxes.get_tax_per_country_sorted_keys` Get sorted tax keys by country and section read
- `holded.taxes.list` List all taxes read

**Business plan goals 1**

- `holded.business_plan_goals.list` List business plan goals vs actuals read

**Business plan scenarios 1**

- `holded.business_plan_scenarios.list` List business plan scenarios read

**Documents 1**

- `holded.documents.convert_document` Convert a document to another type write

**Project times 1**

- `holded.project_times.list` List all project time entries read

**Purchase refunds 1**

- `holded.purchase_refunds.list` List purchase refunds read

Questions

## The Holded MCP server, answered.

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

Yes. actionlake is an MCP gateway: a remote MCP server that gives Claude, or another MCP client, 324 Holded actions across employees, invoices, sales orders and leads, through the same eight tools it uses for every other connector. actionlake is independent; it is not made or endorsed by Holded.

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

Holded API key: in Holded go to Settings > API, click Generate new key and copy it. The free call account { op: "connections.requirements", service: "holded" } lists exactly what to paste.

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

Only if its key allows it, and only with an explicit confirmation. 47 Holded actions are destructive, including delete an invoice, delete a payment and delete an estimate. 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 Holded API limit?**

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

**What does a Holded action cost?**

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

The Holded API v2 at api.holded.com. It is built from Holded's documentation as read on 23 October 2026. 324 actions in 50 areas, each one in the signed service file (version 1.0.0).

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

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

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

actionlake processes and stores data in Sydney, Australia; there is no US region yet. Reads may be cached for up to 5 minutes, 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 Holded 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 Holded

Shares the most action names with

- [ERPNext (Frappe) 79](https://actionlake.com/connectors/erpnext-frappe)
- [Microsoft Dynamics 365 Business Central 66](https://actionlake.com/connectors/microsoft-dynamics-365-business-central)
- [Exact Online 62](https://actionlake.com/connectors/exact-online)
- [SAP Business One 52](https://actionlake.com/connectors/sap-business-one)
- [FreeAgent 47](https://actionlake.com/connectors/freeagent)
- [Epicor Kinetic 45](https://actionlake.com/connectors/epicor-kinetic)

Joins with, on shared entities

- [HaloPSA 9](https://actionlake.com/connectors/halopsa)
- [Zoho Inventory 8](https://actionlake.com/connectors/zoho-inventory)
- [Zoho CRM 8](https://actionlake.com/connectors/zoho-crm)
- [Microsoft Dynamics 365 7](https://actionlake.com/connectors/microsoft-dynamics-365)
- [Kaseya BMS 7](https://actionlake.com/connectors/kaseya-bms)
- [ConnectWise PSA 6](https://actionlake.com/connectors/connectwise-psa)

Browse

- [All Accounting & finance connectors](https://actionlake.com/connectors/category/accounting-and-finance)
- [All connectors](https://actionlake.com/connectors)
- [How actionlake compares](https://actionlake.com/compare)

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

## Give your agent Holded today.

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