Holded MCP server
MCP server for Holded — invoicing, accounting, CRM, projects, and team
Usage numbers are collected on the next scan
Reviews
Write oneNobody has reviewed Holded yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Holded tools (63, 30 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
holded_accounting_create_entrywrite actionholded_accounting_list_account_balancesholded_accounting_list_daily_ledgerholded_crm_create_lead_notewrite actionAdd a note to a lead in Holded CRM. Args: - lead_id (string): The lead ID to add the note to (required) - title (string): Note title (required) - desc (string): Note description/body Returns: The created note.
holded_crm_create_lead_taskwrite actionCreate a new task for a lead in Holded CRM. Args: - lead_id (string): The lead ID to add the task to (required) - name (string): Task name (required) Returns: The created task.
holded_crm_delete_lead_taskwrite actionDelete a task associated with a lead in Holded CRM. Args: - lead_id (string): The lead ID (required) - task_id (string): The task ID to delete (required) Returns: Confirmation of task deletion.
holded_crm_get_available_slotsGet available time slots for a specific booking location from Holded CRM. Args: - location_id (string): The location ID (required) - serviceId (string): Service ID (required) - day (string): Day in yyyy-mm-dd format (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of available time slots for the location with dateTime, from, to, and duration.
holded_crm_list_booking_locationsList all booking locations from Holded CRM. Args: - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of booking locations with id, name, description, active status, and availableServices.
holded_crm_update_lead_dateswrite actionUpdate the creation date of a lead in Holded CRM. Args: - lead_id (string): The lead ID (required) - date (number): Lead creation date as Unix timestamp (required) Returns: Confirmation of date update.
holded_crm_update_lead_notewrite actionUpdate a note associated with a lead in Holded CRM. Args: - lead_id (string): The lead ID (required) - note_id (string): The note ID to update (required) - title (string): Note title (required) - desc (string): Note description/body Returns: The updated note.
holded_crm_update_lead_stagewrite actionMove a lead to a different stage in the sales funnel. Args: - lead_id (string): The lead ID to move (required) - stage_id (string): The target stage ID (required) Returns: Confirmation of stage update.
holded_crm_update_lead_taskwrite actionUpdate a task associated with a lead in Holded CRM. Args: - lead_id (string): The lead ID (required) - task_id (string): The task ID to update (required) - name (string): Task name Returns: The updated task.
holded_invoicing_attach_document_fileholded_invoicing_create_documentwrite actionholded_invoicing_create_numbering_seriewrite actionCreate a new numbering series for a document type in Holded. Args: - doc_type (string): Document type (required) - name (string): Series name (required) - format (string): Format string for document numbers (e.g., 'F17%%%%') - last (integer): Last number used in the series - type (string): Document type (optional, already in path) Returns: The created numbering series.
holded_invoicing_create_paymentwrite actionCreate a standalone payment in Holded. To record a payment for a document, use holded_invoicing_pay_document instead. Args: - contact_id (string): The contact ID to apply the payment to - amount (number): Payment amount (required) - date (number): Payment date as Unix timestamp - account_id (string): Treasury/Bank account ID - desc (string): Payment description Returns: The created payment confirm
holded_invoicing_create_treasurywrite actionCreate a new treasury/bank account in Holded. Args: - name (string): Treasury account name (required) - id (string): Treasury account ID (optional, auto-generated if not provided) - type (string): Account type (e.g., 'bank', 'cash', 'creditcard') - balance (integer): Initial balance - accountNumber (integer): Accounting account number. If blank, a new account with prefix 572 will be created - iban
holded_invoicing_delete_documentwrite actionDelete a document from Holded. Args: - doc_type (string): Document type (required) - document_id (string): The document ID to delete (required) Returns: Confirmation of deletion.
holded_invoicing_delete_numbering_seriewrite actionDelete a numbering series from Holded. Args: - doc_type (string): Document type (required) - numbering_series_id (string): The numbering series ID to delete (required) Returns: Confirmation of deletion.
holded_invoicing_get_contact_attachmentGet a specific attachment for a contact from Holded. Args: - contact_id (string): The contact ID (required) - filename (string): The attachment filename (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Attachment file data (binary format, base64 encoded or URL).
holded_invoicing_get_documentGet a specific document by ID from Holded. Args: - doc_type (string): Document type (required) - document_id (string): The document ID to retrieve (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Document details including line items, totals, and payment status.
holded_invoicing_get_document_pdfGet the PDF version of a document from Holded. Args: - doc_type (string): Document type (required) - document_id (string): The document ID to get PDF for (required) Returns: PDF file data (base64 encoded or URL).
holded_invoicing_get_numbering_seriesGet numbering series for a document type in Holded. Args: - doc_type (string): Document type (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of numbering series with id, name, prefix, suffix, and next number.
holded_invoicing_get_product_imageGet the main image of a specific product from Holded. Args: - product_id (string): The product ID to get the main image for (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Product main image data (URL or base64 encoded).
holded_invoicing_get_product_secondary_imageGet a specific secondary image of a product from Holded. Args: - product_id (string): The product ID (required) - image_file_name (string): The image file name (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Product secondary image data (URL or base64 encoded).
holded_invoicing_get_shipped_itemsFor each item included in a sales or purchase order, get the number of units shipped or received. Args: - doc_type ('salesorder' | 'order'): Document type (required) - document_id (string): The document ID to get shipped items for (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of items with name, sku, total, sent, and pending quantities.
holded_invoicing_get_taxesGet all taxes information from Holded. Args: - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of taxes with id, name, and rate information.
holded_invoicing_get_treasuryGet a specific treasury/bank account by ID from Holded. Args: - treasury_id (string): The treasury account ID to retrieve (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Treasury account details including balance and bank information.
holded_invoicing_list_contact_attachmentsGet attachments list for a given contact from Holded. Args: - contact_id (string): The contact ID to list attachments for (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of attachment file names.
holded_invoicing_list_documentsholded_invoicing_list_payment_methodsList all payment methods from Holded. Args: - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of payment methods with id, name, and configuration.
holded_invoicing_list_product_imagesList all secondary product images from Holded. Args: - product_id (string): The product ID to list images for (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of product image file names or image data.
holded_invoicing_list_products_stockList stock levels for products in a specific warehouse in Holded. Args: - warehouse_id (string): The warehouse ID to list stock for (required) - page (number): Page number for pagination (default: 1, max 500 items per page) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of products with their stock levels for the specified warehouse.
holded_invoicing_list_treasuriesList all treasury/bank accounts from Holded. Args: - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of treasury accounts with id, name, type, currency, and balance.
holded_invoicing_pay_documentwrite actionRecord a payment for a document in Holded. Args: - doc_type (string): Document type (required) - document_id (string): The document ID to pay (required) - amount (number): Payment amount (if different from document total) - account_id (string): Treasury/Bank account ID - date (number): Payment date as Unix timestamp Returns: Confirmation of payment.
holded_invoicing_send_documentwrite actionSend a document via email in Holded. Args: - doc_type (string): Document type (required) - document_id (string): The document ID to send (required) - emails (string): Recipient email(s), comma-separated (required) - subject (string): Email subject - message (string): Email message body Returns: Confirmation of sending.
holded_invoicing_ship_all_itemsShip all the items of a specific sales order in Holded. Args: - document_id (string): The sales order document ID to ship all items for (required) Returns: Confirmation of shipping with status and info.
holded_invoicing_ship_items_by_lineShip specific items of a sales order by line position in Holded. Args: - document_id (string): The sales order document ID to ship items for (required) - lines (array): Array of item lines to ship, each with: - itemLinePosition (number): Item line position (starts at 0) - units (number): Number of units to ship Returns: Confirmation of shipping with status and info.
holded_invoicing_update_documentwrite actionholded_invoicing_update_document_pipelinewrite actionUpdate the pipeline stage for a document in Holded. Note: This endpoint only works with 'salesorder' and 'waybill' document types. Args: - doc_type ('salesorder' | 'waybill'): Document type (required) - document_id (string): The document ID to update pipeline for (required) - pipeline (string): Pipeline stage identifier (required) Returns: Confirmation of pipeline update.
holded_invoicing_update_document_trackingwrite actionholded_invoicing_update_numbering_seriewrite actionUpdate an existing numbering series in Holded. Args: - doc_type (string): Document type (required) - numbering_series_id (string): The numbering series ID to update (required) - name (string): Series name - format (string): Format string for document numbers - last (string): Last number used in the series (string format) Returns: The updated numbering series.
holded_invoicing_update_paymentwrite actionUpdate an existing payment in Holded. Args: - payment_id (string): The payment ID to update (required) - amount (number): Payment amount - date (number): Payment date as Unix timestamp - account_id (string): Treasury/Bank account ID - desc (string): Payment description Returns: The updated payment.
holded_invoicing_update_product_stockwrite actionUpdate stock level for a product in Holded. Args: - product_id (string): The product ID to update stock for (required, path parameter) - stock (object): Nested object structure: stock[warehouseId][productId/variantId] = quantity Example: { "warehouse1": { "product123": 10, "variant456": 5 } } Returns: Confirmation of stock update.
holded_invoicing_upload_product_imagewrite actionholded_projects_create_project_time_trackingwrite actionCreate a new time-tracking entry for a project in Holded. Args: - project_id (string): The project ID (required) - duration (number): Duration in seconds (required) - costHour (number): Cost per hour (required) - desc (string): Description of work (optional) - userId (string): User/Employee ID (required) - taskId (string): Task ID (optional) Returns: The created time-tracking with its assigned ID.
holded_projects_create_taskwrite actionCreate a new task in Holded Projects. According to Holded Projects API v1.2, task creation requires: - name (string): Task name (required) - project_id (string): Project ID to associate the task with (required) - list_id (string): Task list/column ID within the project (required). Get available listIds from the project details. Returns: The created task with its assigned ID.
holded_projects_delete_project_time_trackingwrite actionDelete a time-tracking entry from a project in Holded. Args: - project_id (string): The project ID (required) - time_id (string): The time-tracking ID to delete (required) Returns: Confirmation of deletion.
holded_projects_get_project_summaryGet a summary/overview of a project from Holded. Args: - project_id (string): The project ID to get summary for (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Project summary including projectEvolution, profitability, economicStatus, and task statistics.
holded_projects_get_project_time_trackingGet a specific time-tracking entry for a project from Holded. Args: - project_id (string): The project ID (required) - time_id (string): The time-tracking ID to retrieve (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Time-tracking details including duration, description, cost, and other fields.
holded_projects_list_all_timesList time trackings in projects not archived from 18 months on. Args: - start (number): Start date as Unix timestamp (optional) - end (number): End date as Unix timestamp (optional) - archived (boolean): Include archived projects (optional) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of projects with their time-tracking entries.
holded_projects_list_project_time_trackingsList all time-trackings for a specific project from Holded. Args: - project_id (string): The project ID (required) - page (number): Page number for pagination (default: 1, max 500 items per page) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of time-trackings for the project.
holded_projects_update_project_time_trackingwrite actionUpdate an existing time-tracking entry for a project in Holded. Args: - project_id (string): The project ID (required) - time_id (string): The time-tracking ID to update (required) - duration (number): Duration in seconds (optional) - costHour (number): Cost per hour (optional) - desc (string): Description of work (optional) - userId (string): User/Employee ID (optional) - taskId (string): Task ID
holded_team_create_employee_time_trackingwrite actionCreate a new time-tracking entry for an employee in Holded. Args: - employee_id (string): The employee ID (required) - startTmp (string): Start time as Unix timestamp string (required) - endTmp (string): End time as Unix timestamp string (required) Returns: The created time-tracking with its assigned ID.
holded_team_delete_time_trackingwrite actionDelete a time-tracking from Holded. Args: - time_id (string): The time-tracking ID to delete (required) Returns: Confirmation of deletion.
holded_team_employee_clock_inStart counting employee time-tracking in Holded. Args: - employee_id (string): The employee ID to clock in (required) - location (string): Location name (optional) Returns: Confirmation with status, info, and time-tracking ID.
holded_team_employee_clock_outEnd counting employee time-tracking in Holded. Args: - employee_id (string): The employee ID to clock out (required) - latitude (string): Latitude (e.g., -7.45556) (optional) - longitude (string): Longitude (e.g., 55.55765) (optional) Returns: Confirmation with status, info, and time-tracking ID.
holded_team_employee_pausePause employee time-tracking in Holded. Args: - employee_id (string): The employee ID to pause (required) - latitude (string): Latitude (e.g., -7.45556) (optional) - longitude (string): Longitude (e.g., 55.55765) (optional) Returns: Confirmation with status, info, and time-tracking ID.
holded_team_employee_unpauseUnpause employee time-tracking in Holded. Args: - employee_id (string): The employee ID to unpause (required) - latitude (string): Latitude (e.g., -7.45556) (optional) - longitude (string): Longitude (e.g., 55.55765) (optional) Returns: Confirmation with status, info, and time-tracking ID.
holded_team_get_time_trackingGet a specific time-tracking by ID from Holded. Args: - time_id (string): The time-tracking ID to retrieve (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Time-tracking details including employee, time, and status.
holded_team_list_all_time_trackingsList all time-trackings for all employees from Holded. Args: - page (number): Page number for pagination (default: 1, max 500 items per page) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of time-trackings with id, employee, time, and status.
holded_team_list_employee_time_trackingsList all time-trackings for a specific employee from Holded. Args: - employee_id (string): The employee ID (required) - response_format ('json' | 'markdown'): Output format (default: 'json') Returns: Array of time-trackings for the employee with id, time, and status.
holded_team_update_time_trackingwrite actionUpdate an existing time-tracking in Holded. Args: - time_id (string): The time-tracking ID to update (required) - startTmp (string): Start time as Unix timestamp string (required) - endTmp (string): End time as Unix timestamp string (required) Returns: The updated time-tracking.
Public scan report
scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it
- Code scan131 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancerepository not readable: repo not found3/15
- Maintainer identityno repository or website to verify2/10
Install directly
Runs npx -y @energio/holded-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add holded-mcp -- npx -y @energio/holded-mcp
Holded: common questions
- Is Holded MCP server safe?
- With care: it is graded C, so read the findings first (65/100). Read the Holded safety report
- How do I install Holded?
- It runs on your machine. Copy the Claude Code, Claude Desktop or Cursor config from the install section.
- Does Holded need an API key?
- No secret keys are declared. It reads 4 settings from the environment.
- Is Holded maintained?
- The latest release is v1.5.1.
- What can I use instead of Holded?
- Servers from other publishers that do the same job: MCP Holded MCP server, SUNAGO Matrix MCP server and FavCRM MCP server. Compare all Holded alternatives.
Alternatives to Holded
Same job from other publishers: the closest match first, then the best rated.
- MCP HoldedMCP server for Holded (Spanish ERP): invoicing, accounting, treasury, CRM, projects, payroll.not reviewedGrowingB
SUNAGO MatrixProject management, CRM, time tracking and project economy for consulting and engineering firmsnot reviewedGrowingA- FavCRMAgentic CRM for service businesses — bookings, customers, WhatsApp, loyalty, invoicing.not reviewedGrowingA
BoondManager MCP ServerMCP Server for BoondManager API - 185 tools, 13 prompts, 22 resources (ERP/CRM)not reviewedGrowingA
BoondManager MCP ServerMCP Server for BoondManager API - 182 tools, 12 prompts, 22 resources (ERP/CRM)not reviewedGrowingA