Skip to navigation

MCP server

Connect Claude, Cursor, or ChatGPT to your Lucanto workspace
View as Markdown

Lucanto ships a built-in Model Context Protocol server, so AI agents can read and act on your workspace data — invoices and other documents, expenses, contacts, projects, bank transactions — with the same scopes as the REST API.

  • Endpoint: POST https://app.lucanto.eu/api/mcp/v1
  • Transport: Streamable HTTP (stateless)
  • Auth: OAuth 2.1 sign-in (Claude.ai), or Authorization: Bearer lct_pat_... / Bearer lct_live_...

Claude.ai

Claude.ai (web, mobile and Cowork) signs you in instead of taking a token.

  1. In Claude, open Customize > Connectors (Team and Enterprise owners: Organization settings > Connectors) and choose Add custom connector.
  2. Enter https://app.lucanto.eu/api/mcp/v1 and click Connect.
  3. Sign in to Lucanto and approve the requested access. What you grant is capped by your workspace role, exactly like a personal access token.

The connection appears in Lucanto under Settings > Personal API access, where you can revoke it; it expires after one year. OAuth tokens issued this way work only on the MCP endpoint, not on the REST API.

Claude Desktop

Add Lucanto to claude_desktop_config.json:

{
"mcpServers": {
"lucanto": {
"url": "https://app.lucanto.eu/api/mcp/v1",
"headers": {
"Authorization": "Bearer lct_pat_xxxxxxxxxxxx"
}
}
}
}

Restart Claude Desktop, then ask: “List my Lucanto workspaces” — the agent will call lucanto_list_workspaces and go from there.

Tools & scopes

The tool catalog is filtered by your token’s scopes — a read:invoices token never sees write tools. Tool execution and returned records are also limited by the user’s current workspace role, so an employee sees only its own records and a suspended membership cannot resolve the workspace. Each tool carries behavior hints so clients prompt appropriately (e.g. lucanto_delete_invoice is marked destructive, lucanto_send_invoice reaches outside Lucanto). lucanto_send_invoice also follows the workspace’s plan and trial send limits, the same ones the web app and the REST API apply, and returns a subscription error with a reason when a limit blocks the send.

Every list tool paginates with cursor / next_cursor (25 per page, 100 max).

AreaToolsScope
Workspaceslucanto_list_workspaces, lucanto_get_workspacenone
Invoiceslucanto_list_invoices, lucanto_get_invoice, lucanto_get_invoice_pdf_urlread:invoices
lucanto_create_invoice, lucanto_update_invoicewrite:invoices
lucanto_issue_invoice, lucanto_mark_invoice_sent, lucanto_cancel_invoice, lucanto_lock_invoice, lucanto_reopen_invoice, lucanto_mark_invoice_paid, lucanto_send_invoice, lucanto_delete_invoicemanage:invoices
Quoteslucanto_list_quotes, lucanto_get_quote / lucanto_create_quote, lucanto_update_quoteread:quotes / write:quotes
Proformaslucanto_list_proformas, lucanto_get_proforma / lucanto_create_proforma, lucanto_update_proformaread:proformas / write:proformas
Credit noteslucanto_list_credit_notes, lucanto_get_credit_note / lucanto_create_credit_note, lucanto_update_credit_noteread:credit_notes / write:credit_notes
Sales orderslucanto_list_sales_orders, lucanto_get_sales_orderread:sales_orders
Expenseslucanto_list_expenses, lucanto_get_expense / lucanto_create_expense, lucanto_update_expenseread:expenses / write:expenses
Projectslucanto_list_projects, lucanto_get_project / lucanto_create_project, lucanto_update_projectread:projects / write:projects
Contactslucanto_list_contacts, lucanto_get_contact / lucanto_create_contact, lucanto_update_contactread:contacts / write:contacts
Document settingslucanto_get_document_settings / lucanto_update_document_settingsread:document_settings / write:document_settings
Bank accountslucanto_list_bank_accounts, lucanto_get_bank_accountread:bank_accounts
Transactionslucanto_list_transactions, lucanto_get_transactionread:transactions
Loanslucanto_list_loans, lucanto_get_loan, lucanto_get_loan_scheduleread:loans

Lifecycle actions for quotes, proformas and credit notes (issue, send, mark paid, convert) are not exposed over MCP yet; use the REST API. lucanto_get_invoice_pdf_url names the file .isdoc.pdf when the invoice is served as an ISDOC.PDF.

Start with a narrowly-scoped token. Give an agent read:* to explore, and only grant write/manage scopes once you trust the workflow.