Service Write Tool
service-writeCreate or update services and sync_task_templates. Pricing, recurrence and renewal settings affect future delivery. sync_task_templates replaces the full checklist: read service-read action get_task_templates first and retain IDs that should remain. Deadlines are in HOURS, not days. Relationship collections replace their full lists; omitted fields stay unchanged.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Service name. Required for "create". | |
| price | No | One-time price. Used when recurring=0. | |
| action | Yes | Action to perform. | |
| public | No | Whether service is publicly visible. Defaults to true. | |
| f_price | No | Trial/setup fee price. Used when recurring=2. | |
| r_price | No | Recurring price. Used when recurring>0. | |
| currency | No | 3-letter currency code (e.g. USD, EUR). Required for "create". | |
| deadline | No | Delivery deadline in HOURS (a day is 24 hours — e.g. 3 days = 72). Convert any day-based request to hours before sending. | |
| metadata | No | Array of metadata objects with "title" and "value" keys. | |
| employees | No | Array of employee/staff user IDs to assign to this service. | |
| folder_id | No | Service folder ID for organization. The folder must exist. Set to null to remove the service from its folder; omit to leave it unchanged. | |
| recurring | No | Pricing type. Required for "create". 0 = one-time, 1 = recurring, 2 = trial/setup fee + recurring, 3 = recurring (other). | |
| f_period_l | No | Trial/setup fee period length (1-99). Required when recurring=2. | |
| f_period_t | No | Trial/setup fee period type: D (days), W (weeks), M (months), Y (years). Required when recurring=2. | |
| is_taxable | No | Whether tax applies to this service. Defaults to true. | |
| r_period_l | No | Recurring period length (1-99). Required when recurring>0. | |
| r_period_t | No | Recurring period type: D (days), W (weeks), M (months), Y (years). Required when recurring>0. | |
| service_id | No | Service id. Required when updating an existing record. | |
| description | No | Service description. Max 2000 characters. | |
| multi_order | No | Max orders per client (0 = unlimited). | |
| intake_form_id | No | Intake form ID to associate with this service. | |
| request_orders | No | Enable request-based ordering. 0 = disabled. | |
| task_templates | No | For "sync_task_templates": the FULL replacement list of task templates for the service — this overwrites the existing list, it does not append. Each item supports id (for an existing template on this service), name, description, deadline (in HOURS — a day is 24 hours, so "3 days" = 72; convert day-based requests to hours), sort_order, is_public, for_client, and employee_ids. To keep an existing template, call get_task_templates first and include its id here; any existing template whose id you omit is deleted. Pass an empty array to remove all templates. | |
| parent_services | No | Array of parent service IDs (makes this service an add-on). | |
| group_quantities | No | Group quantities on order forms. | |
| recurring_action | No | What happens on renewal (only when recurring>0). 0 = reopen the same order, 1 = create new order(s), 2 = reset/allow service requests, 3 = no action. | |
| max_active_requests | No | Max active requests at once. Only when request_orders > 0. | |
| onboarding_form_ids | No | Array of onboarding form IDs to attach. |