Skip to main content
Glama
Willbrownfield007

kickserv-mcp

kickserv-mcp

An MCP server for Kickserv field service management — lets AI agents (Claude, ChatGPT, and any MCP-compatible client) read and manage customers, jobs, and invoices.

Ask your AI assistant things like:

"Which invoices are overdue and who do I need to call?" "Create a job for Kelly Nakamura — toilet rebuild, estimate $265." "What's my active job pipeline worth right now?"

Zero dependencies. Plain Node 18+. Nothing to install.

Quick start (demo / mock mode)

node src/index.js

With no credentials set, the server runs in mock mode — a realistic sample plumbing-company dataset — so you can demo the full agent experience without touching a live account.

Connect to Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "kickserv": {
      "command": "node",
      "args": ["/absolute/path/to/kickserv-mcp/src/index.js"]
    }
  }
}

Restart Claude Desktop and ask: "What's in my Kickserv account?"

Related MCP server: kaseya-bms-mcp

Live mode

export KICKSERV_ACCOUNT=your-account-slug
export KICKSERV_API_TOKEN=your-api-token
node src/index.js

Live mode targets Kickserv's REST API using HTTP Basic auth with your API token. Verify endpoint paths against your account's developer docs before production use.

Tools

Tool

What it does

list_customers

List/search customers by name, contact, email, or address

get_customer

Full detail for one customer

list_jobs

List jobs, filter by status or customer

get_job

Full detail for one job

create_job

Create a new job for a customer

list_invoices

List invoices, filter by status (open/paid/overdue) or customer

revenue_snapshot

Open, overdue, and paid totals + active job pipeline value

Tests

npm test

Spawns the server over stdio and exercises the full protocol: initialize → tools/list → tool calls. 8 checks.

Why this exists

AI agents are becoming the interface to business software. Field service platforms that agents can't talk to will lose deals to ones they can. This server is a working demonstration of what "agent-ready" looks like for a field service product — built as a portfolio piece by Will Brownfield, who builds MCP integrations for SaaS companies.

Want your product to be agent-ready? Email me: willbrownfield@icloud.com

License

MIT

Available Tools

7 tools
create_jobC

Create a new job for a customer. Returns the created job record.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesShort job title, e.g. 'Kitchen sink clog'
estimateNoEstimated total in dollars
customer_idYes
descriptionNo

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description must bear full load. Only states 'create' (mutation) and 'returns created record', but omits permissions, side effects, or idempotency, leaving agent underinformed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but lacks substance for a 4-parameter creation tool. Appropriate length for minimal clarity but under-specified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema; description mentions return of 'created job record' but provides no detail on fields, errors, or behavior. Incomplete for a mutation tool with complex parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%; only name and estimate have descriptions. The description adds no parameter information beyond schema, failing to cover undocumented customer_id and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'create a new job' with verb and resource, distinguishing from sibling read/list tools. However, lacks specificity on job scope, earning a 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use or prerequisites, and no mention of alternatives. Agent must infer from name alone, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_customerA

Get full details for one customer by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCustomer ID

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description indicates a read-only operation via 'Get', which implies no side effects. For a simple read, this is sufficient, though it lacks explicit statements about authorization or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence front-loads the essential information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description does not specify what 'full details' includes, leaving the agent uncertain about the return structure. For a simple tool, this is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with parameter description 'Customer ID' already present. The description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get full details for one customer by ID', using a specific verb and resource. It distinguishes from sibling tools like list_customers and get_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use versus alternatives. While the action is straightforward, the description does not mention when not to use or provide context for selection among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_jobA

Get full details for one job by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations; description only states action and scope. Lacks details on response format or error behavior, but for a simple get operation, minimal transparency is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Sufficient for a simple retrieval tool with one parameter and no output schema. Could mention error cases or response structure, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% with 'id' described as 'Job ID'. Description adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Get' and resource 'job' with specific identifier 'by ID'. Distinct from sibling list_jobs and create_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implicitly guides to use when specific job details needed, but no explicit when-not or alternatives to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_customersA

List customers, optionally filtered by a search term (name, contact, email, or address).

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoFree-text filter, e.g. 'Rivera' or 'Austin'

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description is minimal, stating only 'List customers' which implies a read operation. It lacks details on return limits, pagination, or side effects, but is adequate for a simple list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, front-loaded sentence with no wasted words; every part is informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description does not mention return structure or count. However, for a list tool, the description is acceptable but could hint at the response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes the 'search' parameter (100% coverage), but the description adds value by specifying the fields searched (name, contact, email, address), providing context beyond the schema's 'Free-text filter'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'customers', and specifies the optional filtering capability with fields (name, contact, email, or address), distinguishing it from the sibling get_customer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage when listing customers with optional filtering, but provides no when-not-to-use guidance or explicit alternatives like get_customer for a single record.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_invoicesA

List invoices, filterable by status (open | paid | overdue) and/or customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
customer_idNo

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states it lists invoices (a read operation) but lacks details on pagination, ordering, data limits, or any side effects. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action and resource, no superfluous details. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two parameters and no output schema, the description covers the core functionality. However, it omits typical list behavior like pagination or return format, which could be important for agent usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates by explaining the status filter with its enum values and customer_id as a filter. It adds meaning beyond the bare schema but does not clarify if filters are combinable or customer_id is optional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'List', resource 'invoices', and specific filters (status with enum values and customer). It distinguishes from sibling tools like list_customers and list_jobs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing invoices with optional filters, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_jobsA

List jobs, filterable by status and/or customer.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
customer_idNo

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states 'List jobs, filterable by status and/or customer' without disclosing any behavioral traits such as pagination, sorting, permissions, or side effects. For a list tool, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, succinct sentence with no extraneous words. It conveys the essential information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, the description provides basic understanding but lacks details about the return format (e.g., array of job objects) or potential limitations. With no output schema, more context would be beneficial for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage. The description adds context that the parameters are filters ('filterable by status and/or customer'), which clarifies their purpose. However, it does not explain the enum values for 'status' or the meaning of 'customer_id', leaving gaps in understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the verb 'List', resource 'jobs', and filtering options 'by status and/or customer'. This clearly defines the tool's purpose and differentiates it from sibling tools like create_job or get_job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when or when not to use this tool versus alternatives such as 'get_job' for a single job or other list tools. It only mentions filtering capabilities, which implicitly suggests usage but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

revenue_snapshotA

Summarize money state: total open, overdue, and paid invoice amounts, plus pipeline value of unfinished jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It describes the output but lacks details on data freshness, permissions, or performance. Adequate but could be richer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with the main action, no extraneous words. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with no output schema, the description is minimal but sufficient. It could mention output format or data recency for better completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so baseline 4 is appropriate. The description does not need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: summarizing money state including open, overdue, paid invoices, and pipeline value. It distinguishes from sibling tools which focus on individual entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for a quick financial overview, but does not explicitly state when to use versus alternatives like list_invoices. Context makes it clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedcreate_job
    • First observedget_customer
    • First observedget_job
    • First observedlist_customers
    • First observedlist_invoices
    • First observedlist_jobs
    • First observedrevenue_snapshot

TDQS

A3.5/5.0

Scored across 7 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: creating jobs, fetching individual customers or jobs, listing entities with filters, and a revenue summary. No two tools overlap in function.

Naming Consistency4/5

All tools use lowercase with underscores; most follow verb_noun pattern (e.g., create_job, list_customers). 'revenue_snapshot' is a noun_noun exception, but the overall style is consistent and predictable.

Tool Count5/5

With 7 tools covering customers, jobs, invoices, and a revenue report, the count is well-scoped for a focused business management service. It's neither too sparse nor overwhelming.

Completeness2/5

The tool set lacks update and delete operations for all entities, and there is no way to create a customer or invoice. This creates significant gaps in typical CRUD workflows that agents would likely need.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for Kaseya BMS PSA — tickets, accounts, time entries, and contracts. Enables AI assistants to manage service desk operations via the Kaseya BMS API.
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for GoHighLevel sub-accounts, enabling management of CRM contacts, pipelines, calendars, invoices, and more via natural language.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to read and manage a Jobkeepr field service business including jobs, customers, scheduling, estimates, invoices, and payments via MCP.
    MIT