Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,519Letters: 13Defects: 1,321counted 3 min ago
teppi

Server definition

Hash
sha256:3e2d3dba58d64398796bc1b62fa3e1aaf865b172d40036a9b21431c445cc6293
What it is
What a remote MCP server returned when asked what it offers: 20 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "WRITE: add a note to a customer. Set `public` to true to make it visible to the customer. Kickserv: POST /{account}/customers/{customer_number}/notes.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_number": { "description": "Customer number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "note": { "description": "Note text.", "maxLength": 20000, "minLength": 1, "type": "string" }, "public": { "description": "True to make the note public (customer-visible).", "type": "boolean" } }, "required": [ "customer_number", "note" ], "type": "object" }, "name": "kickserv_add_customer_note", "outputSchema": null }, { "description": "WRITE: add a charge (line item — a product, service or part) to a job. This changes the job's estimate/invoice total; it does NOT charge the customer's card. Pick `item_id` from kickserv_list_items. Kickserv: POST /{account}/jobs/{job_number}/job_charges.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "description": { "description": "Line-item description.", "maxLength": 1000, "type": "string" }, "details": { "description": "Line-item details.", "maxLength": 5000, "type": "string" }, "discount": { "description": "Discount.", "maximum": 10000000, "minimum": 0, "type": "number" }, "item_id": { "description": "Item `id` from kickserv_list_items.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "job_charge_type_id": { "description": "Job charge type id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "job_number": { "description": "Job number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "price_per_unit": { "description": "Unit price.", "maximum": 10000000, "minimum": 0, "type": "number" }, "quantity": { "description": "Quantity.", "maximum": 1000000, "minimum": 0, "type": "number" } }, "required": [ "job_number", "job_charge_type_id" ], "type": "object" }, "name": "kickserv_add_job_charge", "outputSchema": null }, { "description": "WRITE: add a note to a job. Set `public` to true to make it visible to the customer. Kickserv: POST /{account}/jobs/{job_number}/notes.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "job_number": { "description": "Job number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "note": { "description": "Note text.", "maxLength": 20000, "minLength": 1, "type": "string" }, "public": { "description": "True to make the note public (customer-visible).", "type": "boolean" } }, "required": [ "job_number", "note" ], "type": "object" }, "name": "kickserv_add_job_note", "outputSchema": null }, { "description": "WRITE: create a new customer. Kickserv assigns the customer number. Kickserv: POST /{account}/customers.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "account_number": { "description": "Your own account number for the customer.", "maxLength": 64, "type": "string" }, "alt_contact": { "description": "Alternate contact name.", "maxLength": 255, "type": "string" }, "alt_phone_number": { "description": "Alternate phone number.", "maxLength": 64, "type": "string" }, "billing_address": { "description": "Billing address (where invoices go), line 1.", "maxLength": 255, "type": "string" }, "billing_address_2": { "description": "Billing address line 2.", "maxLength": 255, "type": "string" }, "billing_city": { "description": "Billing city.", "maxLength": 128, "type": "string" }, "billing_country": { "description": "Billing country.", "maxLength": 64, "type": "string" }, "billing_state": { "description": "Billing state.", "maxLength": 64, "type": "string" }, "billing_zip_code": { "description": "Billing ZIP/postal code.", "maxLength": 32, "type": "string" }, "company": { "description": "True if the customer is a company rather than a person.", "type": "boolean" }, "company_name": { "description": "Company name.", "maxLength": 255, "type": "string" }, "contact": { "description": "Primary contact name.", "maxLength": 255, "type": "string" }, "customer_source_id": { "description": "Customer source (lead source) id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "customer_type_id": { "description": "Customer type id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "email_address": { "description": "Email address.", "format": "email", "maxLength": 255, "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "fax": { "description": "Fax number.", "maxLength": 64, "type": "string" }, "first_name": { "description": "Contact first name.", "maxLength": 255, "type": "string" }, "is_active": { "description": "False to mark the customer inactive (reversible).", "type": "boolean" }, "last_name": { "description": "Contact last name.", "maxLength": 255, "type": "string" }, "mobile": { "description": "Mobile number.", "maxLength": 64, "type": "string" }, "name": { "description": "Customer name (required).", "maxLength": 255, "minLength": 1, "type": "string" }, "notify_via_email": { "description": "Send the customer email notifications.", "type": "boolean" }, "notify_via_sms": { "description": "Send the customer SMS notifications.", "type": "boolean" }, "phone_number": { "description": "Phone number.", "maxLength": 64, "type": "string" }, "service_address": { "description": "Service address (where the work happens), line 1.", "maxLength": 255, "type": "string" }, "service_address_2": { "description": "Service address line 2.", "maxLength": 255, "type": "string" }, "service_city": { "description": "Service city.", "maxLength": 128, "type": "string" }, "service_country": { "description": "Service country (2-letter code).", "maxLength": 64, "type": "string" }, "service_state": { "description": "Service state (2-letter abbreviation in the US).", "maxLength": 64, "type": "string" }, "service_zip_code": { "description": "Service ZIP/postal code.", "maxLength": 32, "type": "string" }, "special_instructions": { "description": "Special instructions shown to technicians.", "maxLength": 5000, "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "kickserv_create_customer", "outputSchema": null }, { "description": "WRITE: create a job (work order) for a customer. `customer_id` is the customer's internal `id` (from kickserv_get_customer), not the customer number; `job_type_id` is the job category. Set `estimate` to create it as an estimate. Kickserv: POST /{account}/jobs.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_id": { "description": "The customer's internal `id` (NOT the customer_number).", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "description": { "description": "Job description / work to be done.", "maxLength": 10000, "type": "string" }, "duration": { "description": "Job duration.", "maximum": 100000, "minimum": 0, "type": "number" }, "employee_ids": { "description": "Employee `id`s (from kickserv_list_employees) to assign. Replaces the current assignment.", "items": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "maxItems": 50, "type": "array" }, "ends_at": { "description": "When the job ends. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.", "maxLength": 64, "minLength": 1, "type": "string" }, "estimate": { "description": "True to create the job as an estimate.", "type": "boolean" }, "job_type_id": { "description": "Job category (job type) id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "name": { "description": "Job name/title.", "maxLength": 255, "type": "string" }, "po_number": { "description": "Customer purchase-order number.", "maxLength": 64, "type": "string" }, "scheduled_on": { "description": "When the job is scheduled. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.", "maxLength": 64, "minLength": 1, "type": "string" } }, "required": [ "customer_id", "job_type_id" ], "type": "object" }, "name": "kickserv_create_job", "outputSchema": null }, { "description": "WRITE: create a task (appointment / to-do) on a job and optionally assign employees. `job_id` is the job's internal `id` (from kickserv_get_job), not the job number. Kickserv: POST /{account}/tasks.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_id": { "description": "The customer's internal `id`.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "description": { "description": "Task description.", "maxLength": 10000, "type": "string" }, "duration": { "description": "Task duration.", "maximum": 100000, "minimum": 0, "type": "integer" }, "employee_ids": { "description": "Employee `id`s (from kickserv_list_employees) to assign. Replaces the current assignment.", "items": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "maxItems": 50, "type": "array" }, "ends_at": { "description": "When the task ends. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.", "maxLength": 64, "minLength": 1, "type": "string" }, "job_id": { "description": "The job's internal `id` (NOT the job_number).", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "name": { "description": "Task name.", "maxLength": 255, "minLength": 1, "type": "string" }, "scheduled_at": { "description": "When the task is scheduled. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.", "maxLength": 64, "minLength": 1, "type": "string" }, "task_type_id": { "description": "Task type id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "job_id", "name", "task_type_id" ], "type": "object" }, "name": "kickserv_create_task", "outputSchema": null }, { "description": "Fetch one customer by customer number, optionally with related contacts, jobs, tasks and notes. The result's `id` is what job/task create calls need as `customer_id`. Kickserv: GET /{account}/customers/{customer_number}.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_number": { "description": "Customer number (as shown in Kickserv).", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "include": { "description": "Related data to embed: contacts, jobs, tasks, notes, tax_entity, custom_field_assignments.", "items": { "enum": [ "contacts", "jobs", "tasks", "notes", "tax_entity", "custom_field_assignments" ], "type": "string" }, "type": "array" } }, "required": [ "customer_number" ], "type": "object" }, "name": "kickserv_get_customer", "outputSchema": null }, { "description": "Fetch one job by job number, optionally with its customer, assigned employees, job charges (line items), time entries and notes. Kickserv: GET /{account}/jobs/{job_number}.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "include": { "description": "Related data to embed: customer, employees, job_charges, time_entries, notes, job_type, job_status, tax_entity, custom_field_assignments.", "items": { "enum": [ "customer", "employees", "job_charges", "time_entries", "notes", "job_type", "job_status", "tax_entity", "custom_field_assignments" ], "type": "string" }, "type": "array" }, "job_number": { "description": "Job number (as shown in Kickserv).", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "job_number" ], "type": "object" }, "name": "kickserv_get_job", "outputSchema": null }, { "description": "Fetch one task (appointment / to-do attached to a job) by id. Kickserv: GET /{account}/tasks/{task_id}.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "task_id": { "description": "Task id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "task_id" ], "type": "object" }, "name": "kickserv_get_task", "outputSchema": null }, { "description": "List the jobs for one customer, 30 per page. Kickserv: GET /{account}/customers/{customer_number}/jobs.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_number": { "description": "Customer number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "include": { "description": "Related data to embed: customer, employees, job_charges, time_entries, notes, job_type, job_status, tax_entity, custom_field_assignments.", "items": { "enum": [ "customer", "employees", "job_charges", "time_entries", "notes", "job_type", "job_status", "tax_entity", "custom_field_assignments" ], "type": "string" }, "type": "array" }, "only": { "description": "Comma-separated list of columns to return, e.g. `customer_number,name`. Kickserv recommends this: it makes responses much smaller and faster.", "pattern": "^[a-z0-9_]+(,[a-z0-9_]+)*$", "type": "string" }, "page": { "description": "Page number (Kickserv returns 30 records per page). Omit for page 1.", "maximum": 10000, "minimum": 1, "type": "integer" } }, "required": [ "customer_number" ], "type": "object" }, "name": "kickserv_list_customer_jobs", "outputSchema": null }, { "description": "List the notes on one customer. Kickserv: GET /{account}/customers/{customer_number}/notes.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "customer_number": { "description": "Customer number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "customer_number" ], "type": "object" }, "name": "kickserv_list_customer_notes", "outputSchema": null }, { "description": "List or search customers, 30 per page. Every filter is an exact match on that field. Use `only` to keep the response small. Kickserv: GET /{account}/customers.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "billing_city": { "description": "Billing city.", "maxLength": 128, "type": "string" }, "billing_state": { "description": "Billing state.", "maxLength": 64, "type": "string" }, "customer_number": { "description": "Customer number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "email_address": { "description": "Exact email address.", "maxLength": 255, "type": "string" }, "include": { "description": "Related data to embed: contacts, jobs, tasks, notes, tax_entity, custom_field_assignments.", "items": { "enum": [ "contacts", "jobs", "tasks", "notes", "tax_entity", "custom_field_assignments" ], "type": "string" }, "type": "array" }, "name": { "description": "Exact customer name.", "maxLength": 255, "type": "string" }, "only": { "description": "Comma-separated list of columns to return, e.g. `customer_number,name`. Kickserv recommends this: it makes responses much smaller and faster.", "pattern": "^[a-z0-9_]+(,[a-z0-9_]+)*$", "type": "string" }, "page": { "description": "Page number (Kickserv returns 30 records per page). Omit for page 1.", "maximum": 10000, "minimum": 1, "type": "integer" }, "phone_number": { "description": "Exact phone number, e.g. 800-555-1212.", "maxLength": 64, "type": "string" }, "service_city": { "description": "Service city.", "maxLength": 128, "type": "string" }, "service_state": { "description": "Service state (2-letter abbreviation).", "maxLength": 64, "type": "string" }, "service_zip_code": { "description": "Service ZIP (full zip+4 if the record has one).", "maxLength": 32, "type": "string" } }, "type": "object" }, "name": "kickserv_list_customers", "outputSchema": null }, { "description": "List all employees (technicians and office staff), active and inactive. Use their `id` for job/task assignment and time entries, and `employee_number` to filter jobs. Kickserv: GET /{account}/employees.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "kickserv_list_employees", "outputSchema": null }, { "description": "List products/services (the price list used for job charges), 30 per page. Active items only by default. Kickserv: GET /{account}/items.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "name": { "description": "Filter by item name.", "maxLength": 255, "type": "string" }, "page": { "description": "Page number (Kickserv returns 30 records per page). Omit for page 1.", "maximum": 10000, "minimum": 1, "type": "integer" }, "which": { "description": "Which items to return: active (default), inactive, or all.", "enum": [ "active", "inactive", "all" ], "type": "string" } }, "type": "object" }, "name": "kickserv_list_items", "outputSchema": null }, { "description": "List the notes on one job. Kickserv: GET /{account}/jobs/{job_number}/notes.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "job_number": { "description": "Job number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "job_number" ], "type": "object" }, "name": "kickserv_list_job_notes", "outputSchema": null }, { "description": "List the time entries (hours logged by technicians) on one job. Kickserv: GET /{account}/jobs/{job_number}/time_entries.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "job_number": { "description": "Job number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "job_number" ], "type": "object" }, "name": "kickserv_list_job_time_entries", "outputSchema": null }, { "description": "List jobs (work orders, estimates, invoices), 30 per page, filterable by schedule window, status, assigned employee, category (job type) or job status. Kickserv: GET /{account}/jobs.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "employee_number": { "description": "Only jobs assigned to this employee number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "include": { "description": "Related data to embed: customer, employees, job_charges, time_entries, notes, job_type, job_status, tax_entity, custom_field_assignments.", "items": { "enum": [ "customer", "employees", "job_charges", "time_entries", "notes", "job_type", "job_status", "tax_entity", "custom_field_assignments" ], "type": "string" }, "type": "array" }, "job_status_id": { "description": "Only jobs with this custom job status id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "job_type_id": { "description": "Only jobs in this category (job type id).", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "only": { "description": "Comma-separated list of columns to return, e.g. `customer_number,name`. Kickserv recommends this: it makes responses much smaller and faster.", "pattern": "^[a-z0-9_]+(,[a-z0-9_]+)*$", "type": "string" }, "page": { "description": "Page number (Kickserv returns 30 records per page). Omit for page 1.", "maximum": 10000, "minimum": 1, "type": "integer" }, "scheduled": { "description": "Scheduled-date window, e.g. today or this_week.", "enum": [ "today", "tomorrow", "yesterday", "this_week", "next_week", "last_week", "this_month", "next_month", "last_month", "this_year", "last_year" ], "type": "string" }, "status": { "description": "Job status.", "enum": [ "unscheduled", "scheduled", "in_progress", "on_hold", "canceled", "complete" ], "type": "string" } }, "type": "object" }, "name": "kickserv_list_jobs", "outputSchema": null }, { "description": "WRITE: log hours worked by an employee on a job. `employee_id` is the employee's `id` from kickserv_list_employees. Kickserv: POST /{account}/jobs/{job_number}/time_entries.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "billable": { "description": "Whether the time is billable.", "type": "boolean" }, "employee_id": { "description": "The employee's `id`.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "ended_on": { "description": "When the work ended. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.", "maxLength": 64, "minLength": 1, "type": "string" }, "job_number": { "description": "Job number.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "mileage": { "description": "Mileage driven.", "maximum": 100000, "minimum": 0, "type": "number" }, "note": { "description": "Note about the work.", "maxLength": 5000, "type": "string" }, "number_of_hours": { "description": "Hours worked, e.g. 1.25.", "exclusiveMinimum": 0, "maximum": 1000, "type": "number" }, "started_on": { "description": "When the work started, e.g. `2026-10-02 13:00` or `10/02/2026 01:00pm`.", "maxLength": 64, "minLength": 1, "type": "string" }, "time_entry_type_id": { "description": "Time entry type id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" } }, "required": [ "job_number", "employee_id", "started_on", "number_of_hours" ], "type": "object" }, "name": "kickserv_log_time_entry", "outputSchema": null }, { "description": "WRITE: update fields on an existing customer. Only the fields you pass change. Balances, credit limit and custom fields are not settable here. Kickserv: PATCH /{account}/customers/{customer_number}.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "account_number": { "description": "Your own account number for the customer.", "maxLength": 64, "type": "string" }, "alt_contact": { "description": "Alternate contact name.", "maxLength": 255, "type": "string" }, "alt_phone_number": { "description": "Alternate phone number.", "maxLength": 64, "type": "string" }, "billing_address": { "description": "Billing address (where invoices go), line 1.", "maxLength": 255, "type": "string" }, "billing_address_2": { "description": "Billing address line 2.", "maxLength": 255, "type": "string" }, "billing_city": { "description": "Billing city.", "maxLength": 128, "type": "string" }, "billing_country": { "description": "Billing country.", "maxLength": 64, "type": "string" }, "billing_state": { "description": "Billing state.", "maxLength": 64, "type": "string" }, "billing_zip_code": { "description": "Billing ZIP/postal code.", "maxLength": 32, "type": "string" }, "company": { "description": "True if the customer is a company rather than a person.", "type": "boolean" }, "company_name": { "description": "Company name.", "maxLength": 255, "type": "string" }, "contact": { "description": "Primary contact name.", "maxLength": 255, "type": "string" }, "customer_number": { "description": "Customer number to update.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "customer_source_id": { "description": "Customer source (lead source) id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "customer_type_id": { "description": "Customer type id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "email_address": { "description": "Email address.", "format": "email", "maxLength": 255, "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "type": "string" }, "fax": { "description": "Fax number.", "maxLength": 64, "type": "string" }, "first_name": { "description": "Contact first name.", "maxLength": 255, "type": "string" }, "is_active": { "description": "False to mark the customer inactive (reversible).", "type": "boolean" }, "last_name": { "description": "Contact last name.", "maxLength": 255, "type": "string" }, "mobile": { "description": "Mobile number.", "maxLength": 64, "type": "string" }, "name": { "description": "New customer name.", "maxLength": 255, "minLength": 1, "type": "string" }, "notify_via_email": { "description": "Send the customer email notifications.", "type": "boolean" }, "notify_via_sms": { "description": "Send the customer SMS notifications.", "type": "boolean" }, "phone_number": { "description": "Phone number.", "maxLength": 64, "type": "string" }, "service_address": { "description": "Service address (where the work happens), line 1.", "maxLength": 255, "type": "string" }, "service_address_2": { "description": "Service address line 2.", "maxLength": 255, "type": "string" }, "service_city": { "description": "Service city.", "maxLength": 128, "type": "string" }, "service_country": { "description": "Service country (2-letter code).", "maxLength": 64, "type": "string" }, "service_state": { "description": "Service state (2-letter abbreviation in the US).", "maxLength": 64, "type": "string" }, "service_zip_code": { "description": "Service ZIP/postal code.", "maxLength": 32, "type": "string" }, "special_instructions": { "description": "Special instructions shown to technicians.", "maxLength": 5000, "type": "string" } }, "required": [ "customer_number" ], "type": "object" }, "name": "kickserv_update_customer", "outputSchema": null }, { "description": "WRITE: update an existing job — reschedule it, rename it, change its description, category or custom job status, or reassign employees (employee_ids replaces the assignment). Totals, tax and payment fields are not settable here. Kickserv: PATCH /{account}/jobs/{job_number}.xml.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "description": { "description": "Job description / work to be done.", "maxLength": 10000, "type": "string" }, "duration": { "description": "Job duration.", "maximum": 100000, "minimum": 0, "type": "number" }, "employee_ids": { "description": "Employee `id`s (from kickserv_list_employees) to assign. Replaces the current assignment.", "items": { "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "maxItems": 50, "type": "array" }, "ends_at": { "description": "When the job ends. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.", "maxLength": 64, "minLength": 1, "type": "string" }, "job_number": { "description": "Job number to update.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "job_status_id": { "description": "New custom job status id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "job_type_id": { "description": "New job category (job type) id.", "exclusiveMinimum": 0, "maximum": 9007199254740991, "type": "integer" }, "name": { "description": "Job name/title.", "maxLength": 255, "type": "string" }, "po_number": { "description": "Customer purchase-order number.", "maxLength": 64, "type": "string" }, "scheduled_on": { "description": "When the job is scheduled. A date/time string Kickserv can parse, e.g. `2026-10-02 09:30` or `10/2/2026 09:30am`.", "maxLength": 64, "minLength": 1, "type": "string" } }, "required": [ "job_number" ], "type": "object" }, "name": "kickserv_update_job", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:3e2d3dba58d64398796bc1b62fa3e1aaf865b172d40036a9b21431c445cc6293 | sha256sum