Browse the manual

Project, purchase, item and report tools

Prepare ordinary business records and read exact reports with current permissions.

On this page

For: developers connecting an HTTP or MCP client. Start with Agent API and AI clients.

AI is optional. You confirm invoice issuance in Pepper.

Projects, purchases and items

These tools use the same records and permissions as the app. Preparation saves the stated reversible change; it does not issue or send anything.

MCP tool HTTP path after /api/v1/ Scope Result
engagements_list GET engagements engagements:read Permitted projects and work counts; money summaries need their own permission
engagements_get GET engagements/{id} engagements:read Project, scopes, milestones and permitted linked records
engagements_create POST engagements engagements:prepare Saved project; no client agreement
engagements_milestone POST engagements/{id}/milestones engagements:prepare Planned milestone against an existing agreement
engagements_close POST engagements/{id}/state engagements:prepare Closed or reopened project; unfinished work prevents closure
engagements_preview_invoice POST engagements/{id}/invoice-preview engagements:read Exact preview of approved milestones; saves nothing
engagements_prepare_invoice POST engagements/{id}/invoice-draft engagements:prepare Saved invoice draft; reserves the selected approved milestones once
purchases_list GET purchases purchases:read Permitted purchases; totals need financial-summary permission
purchases_get GET purchases/{id} purchases:read Purchase and permitted files and project links
purchases_create POST purchases purchases:prepare Saved unpaid purchase with PHP-calculated totals
purchases_update PUT purchases/{id} purchases:prepare Saved purchase changes; keeps existing payment details
items_list GET items items:read Catalog rows with exact prices
items_get GET items/{id} items:read Editor fields and current version; requires item management
items_create POST items items:prepare Saved catalog item
items_update PUT items/{id} items:prepare Saved changes, including archive or restore

Lists accept page, per_page (25, 50 or 100; default 25) and search (100 characters maximum). Pagination returns page numbers and totals.

Use view to filter projects (open, closed), purchases (recorded, unpaid, nofile, voided) or items (all, active, inactive). Purchases also accept period.

Project reads need customers.view. Writes and invoice previews also need invoices.manage. Only a person can record agreement or approve a milestone.

Project creation needs title, customer_id and currency_code. A milestone needs the project id, current version, title, scope_id and unit_price.

Milestones can also include tax_rate_id and due_date. Closing or reopening needs the project id, current version and closed boolean.

Invoice preview and preparation need the project id, issue_date, due_date and milestones. Map each milestone ID to its current version.

Only approved, unreserved milestones qualify. Preparing an invoice does not approve the work. Issuing still needs your approval.

Purchase reads need purchases.view or purchases.view_own. Writes also need purchases.manage and access to that purchase.

Purchase creation needs supplier_id, purchase_date, currency_code and lines. Each line needs entry_mode (net or gross) and amount.

Optional line fields are description, tax, tax_rate_id and category_id. Optional purchase fields are reference, notes and engagement_id.

Purchase updates also need id and the current integer version. The saved currency stays fixed. The tools cannot record or clear payment details.

Item lists need items.view. Item detail and writes need items.manage, because the detail contains fields from the item editor.

Item creation needs name, unit_price, currency_code and unit_type. Unit types are hour, piece, day, kg and custom.

For custom, include custom_unit. Optional fields are sku, description, tax_rate_id, category_id and is_active.

Item updates need id, the current version from items_get, name, unit_price and unit_type. The saved currency stays fixed.

Set is_active to the string "0" to archive an item or "1" to restore it. Issued originals stay unchanged.

Send amounts as exact minor-unit strings: "12345" means EUR 123.45 or USD 123.45. "10001" means BHD 10.001.

Every write needs an idempotency key. An identical retry returns its original receipt after current permission and record checks.

Reports and safe settings

Report tools require reports:read, data.export and current document access. They return exact monetary strings, with integer record counts.

MCP tool HTTP path after /api/v1/ Required inputs
reports_aging GET reports/aging currency_code
reports_tax GET reports/tax currency_code, start_date, end_date
reports_customer_statement GET reports/customer-statement customer_id, currency_code, start_date, end_date
settings_read GET settings/safe None; needs settings:read and settings.manage

Dates use YYYY-MM-DD. Aging and statements accept page and per_page (1–100; default 50). Tax results group the chosen period by rate.

Reports keep currencies separate. They do not convert currencies, file returns or export CSV files.

Settings reads return only these named fields:

  • company.name, company.country, company.currency, company.timezone.
  • localization.default_locale, localization.date_format, localization.time_format, localization.number_format, localization.week_start.
  • invoicing.default_payment_terms, invoicing.einvoice_readiness.

Credentials, keys, tokens, mail passwords and bank details never appear. Settings changes remain in the app.

Installation health

Optional AI access includes the installation.health read tool (installation_health in MCP), also available at GET /api/v1/installation/health. It requires settings:read and a current active owner or administrator.

The response contains checks, checkedAt and version. Each check contains its key, label, state, lastSuccess, message and a fix with label and href. States are working, warning, failing or never_seen. No credential, customer record or filesystem path is returned.

The tool reads the same results as Installation health. It changes no settings and runs no repair. You decide what to change.

Need help with the product?

Contact support