# Services Tools

Tools for managing services on buildings.

## Available Tools

| Tool | Description |
| ---- | ----------- |
| [`list_services`](/mcp/tools/services/list_services/) | List all active services for a building |
| [`get_service`](/mcp/tools/services/get_service/) | Get a single service by ID for a building |
| [`add_services`](/mcp/tools/services/add_services/) | Create one or more services for a building |
| [`update_services`](/mcp/tools/services/update_services/) | Update one or more services for a building |
| [`remove_services`](/mcp/tools/services/remove_services/) | Archive one or more services on a building |

## Overview

Services represent additional charges that can be applied to bookings. They are defined at the building level and can
then be assigned to products as either included or optional.

### Service Properties

- **name**: Display name of the service (3-64 characters)
- **amountCents**: Price including VAT, in the smallest currency unit (e.g., pence, cents)
- **amountCurrency**: ISO 4217 currency code (e.g., GBP, EUR)
- **amountType**: `GROSS`. Services are priced gross only; a net service can be moved to gross, but not back
- **applicationUnit**: How the service is charged: `PER_BOOKING` or `PER_UNIT_OF_SERVICE`. Per-billing-period services
  cannot be created through the API, and a service cannot be moved onto that unit
- **occurrenceUnit**, **occurrenceFrequency**: How often a `PER_UNIT_OF_SERVICE` service recurs, given together. A
  monthly charge is `MONTHS` and `1`. Moving a service to another application unit clears its schedule
- **prorationPolicy**: What a partial final occurrence charges: `FULL_OCCURRENCE` or `PRO_RATA`. Without one, every
  occurrence is charged in full
- **vatCodeId**: A VAT code from the building's workspace; the workspace's exempt VAT code when not given
- **generalLedgerId**: The uuid of a general ledger from the building's workspace; required when invoicing is enabled
- **chargeTypeId**: A finance charge type available to the workspace's organisation, which classifies the service

Every tool returns `amountType` and `applicationUnit` in lowercase (`gross`, `per_booking`), while `add_services` and
`update_services` take them in uppercase. `get_service`, `add_services`, `update_services` and `remove_services` use the
catalog GraphQL API. `list_services` still reads the legacy onboarding endpoint, so its `generalLedgerId` is the
ledger's numeric ID, not the uuid the other tools use.

## Related Documentation

- [Tools Overview](/mcp/tools/) - Complete list of all available MCP tools
- [Setup](/mcp/setup/) - Configure the MCP server
