jobkeepr-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JOBKEEPR_URL | No | Override only for self-hosted or staging. | https://jobkeepr.com |
| JOBKEEPR_API_KEY | Yes | From Settings → API Keys. Starts with jk_live_. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_business_contextA | Get this business's name, timezone, working hours, price catalog, lead sources, and — most importantly — today's date plus the resolved YYYY-MM-DD ranges for "today", "tomorrow", "this week", "last week", "this month", "last month", and "this year" in the business's own timezone and week-start convention. Call this FIRST when a request involves any relative date, and pass the returned values to the dateFrom/dateTo arguments of the other tools rather than computing dates yourself. Also call it BEFORE creating a job, estimate, or line items: the returned |
| get_jobsA | Fetch job records with filters. Use for any question about jobs, work performed, job types, job sources, or schedules. Returns raw job data - you calculate totals, counts, and comparisons. |
| get_paymentsA | Fetch payment records. Use for revenue questions, income tracking, payment history. Returns raw payment data - you sum and analyze. |
| get_customersA | Search or list customers. Use for customer lookups, finding contact info, or customer-related questions. |
| get_invoicesB | Fetch invoice records. Use for billing questions, unpaid balances, invoice status tracking. |
| get_estimatesA | Fetch estimates/quotes. Use for pending proposals, conversion tracking, estimate follow-ups. |
| get_line_itemsA | Fetch line items from jobs (services/products sold). Use for questions about which items make money, most popular services, item profitability, catalog usage. |
| get_reference_dataA | Fetch lookup tables: job types, job sources, catalog items. Use when you need to know what types/sources exist, catalog pricing, or to map IDs to names. |
| get_scheduleA | Get scheduled jobs, calendar events (time off, meetings, walkthroughs), and optionally available time slots. Use for 'what's on the calendar', 'when am I free', scheduling questions. |
| create_jobA | Schedule/create a new job for a customer. Pull the date and time from anywhere in the user's message, including pasted or forwarded text (e.g. 'scheduled for Wednesday the 24th at 9am'). Resolve relative dates like 'next monday' or 'the 24th' using the DATE REFERENCE in your instructions. Only ask for a date/time when none appears anywhere in the message — never re-ask for one the user already provided. If the customer is new (doesn't exist yet), pass their contact details here — do NOT call create_customer separately. This tool handles creating the customer AND the job in one step. When user says 'create customer X and schedule a job', use ONLY this tool. |
| create_eventA | Add a calendar event that is NOT a job: time off, a walkthrough, a meeting, a personal appointment, a block of time. Use this when the user says 'event', 'block off', 'time off', 'meeting', or describes something on the calendar that is not billable work. For scheduling billable work for a customer, use create_job instead. An event can optionally be linked to an existing customer and/or a crew member. Pull the date and time from anywhere in the message and resolve relative dates using the DATE REFERENCE. |
| close_jobsA | Mark jobs as complete/done. ALWAYS use this tool when user wants to: close jobs, complete jobs, mark jobs done, finish jobs. Examples: 'close today's jobs', 'mark the Smith job done', 'complete yesterday's jobs'. Do NOT use get_jobs first - this tool finds and closes jobs in one step. |
| reschedule_jobA | Change the date, time, or length of an existing job. Provide customerName (finds most recent scheduled job) OR jobId (exact match). Supply at least one of newDate, newTime, or durationMinutes. When moving the job, provide both newDate and newTime where possible. When the user only wants the appointment to block off more or less time (e.g. 'make Jon's appointment 3 hours', 'that job needs 90 minutes'), pass durationMinutes alone and leave the date and time out so the job stays where it is. |
| cancel_jobA | Cancel a scheduled job by setting its status to CANCELED. No data is deleted. Provide customerName (finds most recent scheduled job) OR jobId (exact match). Use customerName when user mentions a customer. |
| create_customerA | Add a new customer without scheduling a job. For new customers WITH a job, use create_job instead — it handles creating the customer inline. Extract ALL contact details the user provides (name, phone, email, address). |
| create_estimateA | Create an estimate/quote for a customer. When the user specifies a flat rate or custom price (e.g. 'total $250', 'charge $300 flat'), pass lineItems with that custom unitPrice — do NOT use catalog pricing. Only fall back to catalog pricing when no price is specified. For flat rates, use a single line item with the service name and the stated price. |
| add_line_itemsA | Add billable line items to an EXISTING job. Use when the user wants to add services/products to a job that's already scheduled (e.g., 'add a $50 cable management charge to the Smith job'). For brand-new jobs, use create_job with lineItems instead. Pass unitPrice when the user states a price; omit it to fall back to catalog matching by name. |
| create_catalog_itemA | Add a new service or product to the catalog with pricing. Use when user mentions pricing for services/products. This is the ONLY place to store pricing information. |
| set_customer_sourceA | Set or change how a customer found the business (their lead source). The source is stored on the customer, not on individual jobs, and every job they book counts toward it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 19 tools
Most tools have clearly distinct purposes (create_job vs create_event vs create_customer are explicitly differentiated, and add_line_items vs create_job+lineItems is clarified). Minor overlap exists between get_jobs and get_schedule and between get_business_context and get_reference_data, which both return catalog/lookup data, but the descriptions give workable guidance.
Every tool follows a strict snake_case verb_noun convention (get_jobs, create_job, reschedule_job, close_jobs, cancel_job, add_line_items, set_customer_source). No camelCase or naming outliers, making the set highly predictable.
19 tools is on the heavier side but reasonable for a multi-entity domain (jobs, customers, estimates, invoices, payments, catalog, scheduling). Each tool maps to a distinct operation, though a few could plausibly be consolidated (e.g. get_reference_data vs get_business_context).
Job lifecycle is well covered (create, read, reschedule, close, cancel) and estimates/catalog have creation paths, but notable gaps exist: no update_customer, no update/delete for estimates, invoices, or line items, and no way to record payments or convert estimates to jobs. Read-only surfaces for invoices/payments leave dead ends.