# Holded — MCP server on mcp.ai > Connect your Holded account and use 10 tools for sales and CRM straight from your AI agent. Connect with your own API key. Holded is business management software for managing sales documents, invoices, services, contacts, contact groups, and tags. By: mcp.ai · official Page: https://mcp.ai/holded ## Connect (MCP protocol) Remote MCP endpoint (HTTP, streamable): https://api.mcp.ai/p_holded?ms=1787293560000 Add it as a custom/remote MCP connector, then authenticate when prompted. ## REST API (no MCP client required) Every tool is also a REST endpoint, authed with a workspace API key. Discover: GET https://api.mcp.ai/api/holded/_endpoints # public; lists every endpoint Call: POST https://api.mcp.ai/api/holded/ Authorization: Bearer sk_live_… # create one at https://mcp.ai/settings/api-keys Content-Type: application/json Body: { …args } → { "ok": true, "tool": "", "result": { … } } ## Developer docs How to use (MCP or REST), markdown: https://mcp.ai/holded/skill.md Postman collection (v2.1): https://mcp.ai/holded/postman.json ## Tools - holded_create_contact(name: string, email?: string, phone?: string, mobile?: string, tax_id?: string, website?: string, is_person?: boolean, trade_name?: string, vat_number?: string, contact_type?: string, billing_address?: object) — Create a customer, supplier, lead, debtor, creditor, or unclassified contact and return its new Holded ID. - holded_create_invoice(body?: string, tags?: string[], items: object[], notes?: string, currency?: string, discount?: number, due_date?: string, language?: string, contact_id: string, issue_date?: string, description?: string, currency_change?: number, sales_channel_id?: string, numbering_series_id?: string) — Create a sales invoice for an existing contact and return its ID; this does not send, approve, or record payment for the invoice. - holded_delete_contact(contact_id: string) — Permanently delete one contact by ID; linked documents keep display text but lose the live contact association. - holded_delete_invoice(invoice_id: string) — Permanently delete one invoice and its recorded payments; its document number is not reused. - holded_find_contacts(name?: string, email?: string, limit?: integer, phone?: string, cursor?: string, mobile?: string, tax_id?: string, external_id?: string) — Find Holded contacts by name prefix or an exact email, phone, mobile, tax ID, or external ID. With no filter, return one page of contacts. - holded_find_invoices(sort?: string, limit?: integer, cursor?: string, status?: string, contact_id?: string, due_date_end?: string, due_date_start?: string, issue_date_end?: string, document_number?: string, issue_date_start?: string) — Find Holded invoices by fuzzy document-number prefix or list them by contact, payment status, issue date, or due date. With no filter, return one page of invoices. - holded_get_contact(contact_id: string) — Return the complete profile of one contact by its Holded contact ID. - holded_get_invoice(invoice_id: string) — Return full details, lines, totals, and payment summary for one invoice by its Holded ID. - holded_update_contact(changes: object, contact_id: string) — Safely change selected fields on a contact without clearing unspecified profile data. Reads the contact before updating and returns the verified result. - holded_update_invoice(changes: object, invoice_id: string) — Safely change selected mutable fields on an invoice without clearing unspecified invoice data or altering recorded payments. Reads the invoice before updating and returns the verified result. ## Example prompts - "What can I do in Holded?" - "Show me a summary of my Holded account" ## Links Docs: https://mcp.ai/docs/mcps/holded Website: https://mcp.ai/mcps/holded