Look up Kickserv customers, jobs, notes and time entries, and create jobs, tasks and charges. Hosted by usefulapi — connect from Claude, Cursor, or any MCP client.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"kickserv": {
"url": "https://kickserv.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
kickserv_list_customers | read | List customers 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. |
kickserv_get_customer | read | Get a customer 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. |
kickserv_list_customer_jobs | read | List a customer's jobs List the jobs for one customer, 30 per page. Kickserv: GET /{account}/customers/{customer_number}/jobs.xml. |
kickserv_list_jobs | read | List jobs 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. |
kickserv_get_job | read | Get a job 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. |
kickserv_list_customer_notes | read | List a customer's notes List the notes on one customer. Kickserv: GET /{account}/customers/{customer_number}/notes.xml. |
kickserv_list_job_notes | read | List a job's notes List the notes on one job. Kickserv: GET /{account}/jobs/{job_number}/notes.xml. |
kickserv_list_job_time_entries | read | List a job's time entries List the time entries (hours logged by technicians) on one job. Kickserv: GET /{account}/jobs/{job_number}/time_entries.xml. |
kickserv_get_task | read | Get a task Fetch one task (appointment / to-do attached to a job) by id. Kickserv: GET /{account}/tasks/{task_id}.xml. |
kickserv_list_employees | read | List employees 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. |
kickserv_list_items | read | List items List products/services (the price list used for job charges), 30 per page. Active items only by default. Kickserv: GET /{account}/items.xml. |
kickserv_create_customer | write | Create a customer WRITE: create a new customer. Kickserv assigns the customer number. Kickserv: POST /{account}/customers.xml. |
kickserv_update_customer | write | Update a customer 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. |
kickserv_add_customer_note | write | Add a note to a customer 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. |
kickserv_create_job | write | Create a job 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. |
kickserv_update_job | write | Update a job 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. |
kickserv_add_job_note | write | Add a note to a job 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. |
kickserv_create_task | write | Create a task 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. |
kickserv_log_time_entry | write | Log time on a job 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. |
kickserv_add_job_charge | write | Add a charge to a job 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. |
kickserv_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. Read-only; does not count against the meter. | |
kickserv_upgrade | Upgrade to Pro (unlimited) Subscribe to the Pro plan for UNLIMITED Kickserv tool calls (the free tier caps monthly usage). Choose monthly ($9/month) or yearly ($90/year — 2 months free) billing. Returns a Stripe Checkout link to open in your browser; after payment your account upgrades automatically. Read-only; does not count against the meter. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Proper user | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.