Use this skill when the user asks for a quote, estimate, price, or "how much" for a UK trades job – electrical, plumbing, locksmith, glazing, carpentry, hand...
A drop-in skill that lets your AI agent quote UK trades jobs in real time, and pop the user out to the browser to complete the booking.
JustFix is a UK home-services platform. The skill talks to the public JustFix Estimator MCP server, returns a price breakdown for any of 13 service categories, and produces a tappable booking link the user can complete in their browser.
Trigger on any of these intents, in any phrasing:
If the user is outside the UK, mention that JustFix is UK-only and only quote if they confirm they're in the UK or want a UK quote anyway.
Three tools are available on the MCP. Use them in this order depending on intent:
list_services (when user asks what's available)#Returns the 13 service categories with their hourly rates. Use when:
call_out_fee (when user asks about the booking fee)#Returns the flat call-out fee that applies to every booking. Use when:
service-estimate-card (the main one – generates a quote)#Required arguments:
service_code (string) – one of the codes from the service-code map belowbooking_description (string) – a clear one-sentence description of the workOptional arguments:
estimate (number, default 1) – hours estimated to complete the jobwork_items (array of strings) – optional list of specific tasks within the jobReturns the cost breakdown and a unique booking URL the user can tap to complete the booking on https://my.justfix.app.
Map natural-language descriptions to the right service_code:
User saysservice_code£/hrelectrician, electrical, sockets, lights, wiring, fuse box, fuseelectrical£90plumber, plumbing, leak, dripping tap, blocked sink, water pressureplumbing£90locksmith, lock, locked out, change locks, keylocksmith£90glazier, glazing, broken window, broken glass, replace glassglazing£80carpenter, carpentry, wooden door, skirting, floorboards, joinerycarpentry£90handyman, handyperson, odd jobs, mounting, assembly, picture hanginghandyman£80heating, gas heating, boiler not working, radiator, central heatingheating_and_gas£90gas appliance, gas hob, gas oven, gas cooker, gas safetygas_appliances£90roofer, roofing, roof leak, slipped tiles, guttersroofing£80drains, blocked drain, sewer, drainage, blocked toiletdrains£90white goods, dishwasher, washing machine, tumble dryer, fridgewhite_goods£55boiler service, annual boiler check, gas safety certificate, CP12boiler_service£70anything else / unsuresomething_else£80
If the user describes a job that could fit two codes (e.g. "my dishwasher is leaking" – could be plumbing or white_goods), pick the more specific one ( white_goods) and mention you assumed that.
If the user doesn't say how long the job is, use these sensible defaults:
ServiceDefault hoursNotesboiler_service1Fixed-scope annual check, 1 hour is standardlocksmith1Lock changes take ~1hrgas_appliances1-2Simple install / safety checkwhite_goods1Most diagnostics + repairselectrical2Variable – ask if scope is biggerplumbing2Variable – ask if scope is biggerglazing2Small window replacementcarpentry2Standard repair / installhandyman2Catch-allheating_and_gas2Diagnostics + simple fixdrains2Clearance + camera survey if neededroofing3Minimum useful site visitsomething_else2Catch-all default
Always tell the user how many hours you've estimated so they can correct you. The estimate is just a starting point.
After calling service-estimate-card, render the response as a clean, channel-appropriate card. Always include:
[Complete booking →](URL) if your channel renders markdown, otherwise the raw URLmarkdown
🔧 **[Service Name] Estimate**
**Scope:** [booking_description]
**Estimated duration:** [estimate] hour(s)
| Line | Amount |
|---|---|
| Labour ([hrs] × £[rate]/hr) | £[hrs × rate] |
| Call-out fee | £50.00 |
| **Total estimate** | **£[total]** |
📅 **[Tap to complete booking →]([booking_url])**
_The final invoice will reflect actual time spent on the job._
text
JustFix [Service Name] estimate
Scope: [booking_description]
Estimated duration: [estimate] hour(s)
Labour: £[hrs × rate]
Call-out fee: £50.00
Total estimate: £[total]
Complete booking: [booking_url]
Final invoice reflects actual time spent.
If your channel exposes inline buttons (Telegram inlinebuttons, Slack blocks, Discord buttons), render the booking URL as a button labelled "📅 Book this job" pointing at the booking_url. The URL is unique per estimate – use exactly what the MCP returns.
CAN:
my.justfix.app)estimateCAN'T:
my.justfix.app)When the user is ready to book, send them the URL. The booking page asks for their details, postcode, preferred date, and payment.
Each service-estimate-card call returns a URL with a unique chatgpt_booking_link_id UUID query parameter. JustFix uses this to attribute MCP-driven bookings. Don't strip or modify the URL – pass it through to the user exactly as returned.
User: How much for someone to come and fix my dripping kitchen tap?
Agent: Calls service-estimate-card with service_code=plumbing, estimate=1, booking_description="Diagnose and repair dripping kitchen tap, replace washers or cartridge if needed."
🔧 Plumbing Estimate
Scope: Diagnose and repair dripping kitchen tap, replace washers or cartridge if needed. Estimated duration: 1 hour
LineAmountLabour (1 hr × £90/hr)£90.00Call-out fee£50.00Total estimate****£140.00
The final invoice will reflect actual time spent on the job. If you'd like a bigger or smaller estimate, just say.
See the install/ folder of the repo for per-harness setup:
install/openclaw.mdinstall/hermes.mdinstall/claude-code.mdinstall/cursor.mdinstall/codex-cli.mdinstall/gemini-cli.mdAll harnesses follow the same pattern: register the MCP endpoint, then put this SKILL.md somewhere the agent's skill discovery can find it.
MIT – see LICENSE in the repo. You can use, modify, distribute, and embed this skill anywhere, commercially or not, with attribution.