> ## Documentation Index
> Fetch the complete documentation index at: https://docs.infinity.swiss/llms.txt
> Use this file to discover all available pages before exploring further.

# Tools

> Every tool the Infinity MCP server offers, and the scope it needs.

Each tool corresponds to one REST API endpoint and behaves exactly like it, down to validation and error codes. Follow the link on a tool for its fields.

Tools whose name starts with `list_` or `get_` need the `:read` scope of their module; every other tool needs `:write`, which implies read. Tools that create something accept an optional `idempotencyKey`, which works like the [`Idempotency-Key` header](/api/invoices/create#retrying-safely-with-idempotency-keys) of the REST API.

The catalogue is the same for every connection. Calling a tool the connection has no scope for fails with an `insufficient_scope` challenge rather than being hidden.

## Accounting

Scopes `accounting:read` and `accounting:write`.

* [`list_fiscal_years`](/api/accounting/fiscal-years) lists the fiscal years and says which are closed.
* [`list_accounts`](/api/accounting/accounts/find) lists the chart of accounts.
* [`create_account`](/api/accounting/accounts/create) adds an account.
* [`modify_account`](/api/accounting/accounts/modify) changes an account.
* [`delete_account`](/api/accounting/accounts/delete) deletes an account.
* [`list_tax_codes`](/api/accounting/tax-codes) lists the VAT codes available for bookings.
* [`list_ledger_entries`](/api/accounting/find) finds ledger entries.
* [`get_ledger_entry`](/api/accounting/get) reads a single ledger entry.
* [`create_ledger_entry`](/api/accounting/create) posts a ledger entry.
* [`delete_ledger_entry`](/api/accounting/delete) deletes a ledger entry.
* [`upload_receipt`](/api/receipts/upload) uploads a receipt file.
* [`attach_receipt`](/api/receipts/attach) attaches an uploaded receipt to a ledger entry.

## Contacts

Scopes `contacts:read` and `contacts:write`.

* [`list_contacts`](/api/contacts/find) finds contacts.
* [`get_contact`](/api/contacts/get-specific) reads a single contact.
* [`create_contact`](/api/contacts/create) creates a contact.
* [`modify_contact`](/api/contacts/modify) changes a contact.
* [`delete_contact`](/api/contacts/delete) deletes a contact.

## Invoices

Scopes `invoices:read` and `invoices:write`, which cover customer invoices and estimates alike.

* [`list_invoices`](/api/invoices/find) finds invoices.
* [`get_invoice`](/api/invoices/get-specific) reads a single invoice.
* [`create_invoice`](/api/invoices/create) creates an invoice as a draft or posts it.
* [`modify_invoice`](/api/invoices/modify) changes an invoice.
* [`delete_invoice`](/api/invoices/delete) deletes an invoice.
* [`get_invoice_pdf`](/api/invoices/pdf) returns the invoice as a PDF.
* [`record_invoice_payment`](/api/invoices/record-payment) records a payment on an invoice.
* [`send_invoice`](/api/invoices/send) sends an invoice by e-mail.
* [`annul_invoice`](/api/invoices/annul) annuls a posted invoice.
* [`undo_invoice_annulment`](/api/invoices/undo-annulment) takes an annulment back.
* [`list_estimates`](/api/estimates/find) finds estimates.
* [`get_estimate`](/api/estimates/get-specific) reads a single estimate.
* [`create_estimate`](/api/estimates/create) creates an estimate.
* [`modify_estimate`](/api/estimates/modify) changes an estimate.
* [`delete_estimate`](/api/estimates/delete) deletes an estimate.
* [`get_estimate_pdf`](/api/estimates/pdf) returns the estimate as a PDF.
* [`send_estimate`](/api/estimates/send) sends an estimate by e-mail.
* [`set_estimate_status`](/api/estimates/set-status) marks an estimate as accepted or rejected.
* [`convert_estimate_to_invoice`](/api/estimates/convert-to-invoice) turns an estimate into an invoice.

## Projects

Scopes `projects:read` and `projects:write`, which cover projects and work entries.

* [`list_projects`](/api/projects/find) finds projects.
* [`get_project`](/api/projects/get-specific) reads a single project.
* [`list_work_entries`](/api/projects/work-entries/find) finds work entries.
* [`create_work_entry`](/api/projects/work-entries/create) records a work entry.
* [`modify_work_entry`](/api/projects/work-entries/modify) changes a work entry.
* [`delete_work_entry`](/api/projects/work-entries/delete) deletes a work entry.
