Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Enquiries, quotes, jobs, reviews and Opportunities Board leads for your Checkatrade member account. Use MCP with your AI agent or REST with HTTP workflows and scripts, without an account manager or a strategic account.
13 tools Read and write
Checkatrade has an official API, but not for members (checked 31 Oct 2026). The Affiliate API lets a partner create a job for a homeowner, and lead, booking and payment webhooks go to strategic accounts through an account manager. There is no official MCP server. Cotlet runs 13 Checkatrade tools hosted in your own login, over MCP for agents and REST for scripts.
| What you need | Official API and webhooks | Hosted scrapers | Cotlet |
|---|---|---|---|
| Read your new leads | Push webhook, strategic accounts only | Public profiles only | Yes |
| Reply, accept or decline, send a quote | No | No | Yes, after your OK |
| Ask a customer for a review | No | No | Yes, after your OK |
| How you get access | Account manager, or affiliate key | Third-party account | Your own Checkatrade login |
| Works in Claude or ChatGPT | You build it | Some run through a hosted MCP | Yes |
| Allowed by Checkatrade's terms | Yes, official | Reads public pages | Uses the web app; see Terms |
Checked 31 Oct 2026. Sources: Checkatrade API for Affiliates · Checkatrade Webhooks for Trades · Checkatrade Lead Delivery Webhooks · Checkatrade developer docs index · Checkatrade pricing · Checkatrade Acceptable Use Policy
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Checkatrade password, and no message, quote or review request reaches a customer until you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Sign in to Checkatrade in a Cloud Browser. Make a Cotlet account, open Checkatrade in its Cloud Browser, log in with your usual trade account and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 where your agent takes an MCP server or a connector.
Finish the sign-in. Claude and ChatGPT open a Cotlet sign-in page. Cursor, Codex, n8n and scripts use an API key from the console.
One address, https://cotlet.dev/mcp/v1, serves Checkatrade and the other apps you enable. Enabled Checkatrade after you connected? Refresh the connector so the new tools load.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-checkatrade \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-checkatrade": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-checkatrade]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: checkatrade_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: checkatrade_write Create a Cotlet API key with access to Checkatrade and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Checkatrade in Cotlet and enable it for agents. Account access: Your own Checkatrade member account (the trade login you use for the members web app).
curl "https://cotlet.dev/api/v1/checkatrade/leads?unanswered=true&limit=10" \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "checkatrade",
"tool": "list_leads",
"result": {
"leads": [
{
"lead_id": "L-48213",
"customer": "Dana",
"title": "Boiler service",
"postcode_area": "BS6",
"received_at": "2026-10-30T16:20:00Z",
"replied": false
}
]
}
} Returns each enquiry with its ID, customer first name, job title, postcode area, arrival time and whether you replied, newest first. Customer details come only from get_lead.
Quote requests and direct messages both appear. Leave unanswered out to list every enquiry.
Replace limit with your own. Checkatrade's webhooks push leads one way and only to strategic accounts; Cotlet reads from your signed-in session instead.
When you refresh a destination, compare changed values such as replied as well as lead_id: an enquiry changes state after you answer it.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Post unanswered enquiries to Slack each morning. Use list_leads with unanswered set to true on your own schedule. |
| Make | HTTP > Make a request | Log sent quotes with no customer response in a sheet. Use list_quotes and filter on customer_responded. |
| Python or Node.js | REST API | Build a weekly list of jobs without a review. Use list_jobs with since and print it or send it by email. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Checkatrade; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.
Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
Enquiries come from the Messages page, newest first. Accept and decline work as the same actions do there. Notes are private and skip the confirmation.
Returns each enquiry with its ID, the customer first name, the job title, the postcode area, when it arrived and whether you replied, newest first. Customers who used Request a quote and direct messages both appear. Reading does not change the enquiry.
MCP callcheckatrade_read → list_leads
REST endpointGET https://cotlet.dev/api/v1/checkatrade/leads
| Name | Type | Description |
|---|---|---|
| unanswered boolean | boolean | Only enquiries you have not replied to. |
| limit integer | integer | Maximum enquiries to return. |
{
"leads": [
{
"lead_id": "L-48213",
"customer": "Dana",
"title": "Boiler service",
"postcode_area": "BS6",
"received_at": "2026-10-30T16:20:00Z",
"replied": false
},
{
"lead_id": "L-48190",
"customer": "Tom",
"title": "Fence repair",
"postcode_area": "BS7",
"received_at": "2026-10-28T09:05:00Z",
"replied": false
}
]
} Returns the customer message, their contact details, the job description and the notes you saved on the enquiry. It reads the same page you open from Messages.
MCP callcheckatrade_read → get_lead
REST endpointGET https://cotlet.dev/api/v1/checkatrade/leads/{lead_id}
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
{
"lead_id": "lead_8c41d2"
} {
"lead_id": "L-48213",
"customer": "Dana",
"title": "Boiler service",
"message": "Annual service on a combi boiler, any day next week.",
"postcode": "BS6 6XX",
"phone": "07700 900123",
"notes": []
} Sends the message in the enquiry thread, and the customer receives it. It cannot be recalled. By default you confirm each call; you can switch that off for this tool.
MCP callcheckatrade_write → reply_to_lead
REST endpointPOST https://cotlet.dev/api/v1/checkatrade/leads/{lead_id}/replies
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
| text string required | string | Message text. |
{
"lead_id": "L-48213",
"text": "Hi Dana, I can service the boiler on Tuesday afternoon. Does 2 pm suit you?"
} {
"lead_id": "L-48213",
"status": "sent",
"sent_at": "2026-10-31T08:15:00Z"
} Accepts the job in the Messages page, as the Accept action there does. Checkatrade does not publish what the customer sees next, so the tool asks first. By default you confirm each call; you can switch that off for this tool.
MCP callcheckatrade_write → accept_lead
REST endpointPOST https://cotlet.dev/api/v1/checkatrade/leads/{lead_id}/accept
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
{
"lead_id": "lead_8c41d2"
} {
"lead_id": "L-48213",
"status": "accepted"
} Declines the job in the Messages page, as the Decline action there does. Checkatrade does not publish what the customer sees next, so the tool asks first. By default you confirm each call; you can switch that off for this tool.
MCP callcheckatrade_write → decline_lead
REST endpointPOST https://cotlet.dev/api/v1/checkatrade/leads/{lead_id}/decline
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
{
"lead_id": "lead_8c41d2"
} {
"lead_id": "L-48190",
"status": "declined"
} Saves a note on the enquiry that only you see. It reaches no one and you can delete it in the Messages page, so it skips the confirmation.
MCP callcheckatrade_write → add_lead_note
REST endpointPOST https://cotlet.dev/api/v1/checkatrade/leads/{lead_id}/note
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
| text string required | string | Note text. |
{
"lead_id": "lead_8c41d2",
"text": "text"
} {
"lead_id": "L-48190",
"status": "saved"
} A sent quote cannot be recalled, so sending asks first. Listing shows whether the customer has responded.
Returns each quote with its ID, the lead it belongs to, the total, the date sent and whether the customer has responded. Checkatrade lets you follow a quote after it is sent.
MCP callcheckatrade_read → list_quotes
REST endpointGET https://cotlet.dev/api/v1/checkatrade/quotes
| Name | Type | Description |
|---|---|---|
| limit integer | integer | Maximum quotes to return. |
{
"quotes": [
{
"quote_id": "Q-330",
"lead_id": "L-48190",
"total": 420,
"currency": "GBP",
"sent_at": "2026-10-29",
"customer_responded": false
}
]
} Creates the quote with the scope, price and notes you give and sends it to the customer. Costs, time, scope and tax are fields of the quoting tool; this tool fills the scope, total and notes. A sent quote cannot be recalled. By default you confirm each call; you can switch that off for this tool.
MCP callcheckatrade_write → send_quote
REST endpointPOST https://cotlet.dev/api/v1/checkatrade/leads/{lead_id}/quotes
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
| description string required | string | Scope of work. |
| total number required | number | Total price in GBP. |
| notes string | string | Notes for the customer. |
{
"lead_id": "lead_8c41d2",
"description": "description",
"total": 1
} {
"quote_id": "Q-331",
"lead_id": "L-48213",
"total": 95,
"currency": "GBP",
"status": "sent"
} The jobs list is the one you use to request a review. The request goes out by email and text.
Returns each job with its ID, customer first name, title, date and whether a review request was sent or a review came in. It is the recent jobs list you use in the Reviews section.
MCP callcheckatrade_read → list_jobs
REST endpointGET https://cotlet.dev/api/v1/checkatrade/jobs
| Name | Type | Description |
|---|---|---|
| since string | string | Earliest date, YYYY-MM-DD. |
{
"jobs": [
{
"job_id": "J-2210",
"customer": "Priya",
"title": "Bathroom refit",
"date": "2026-10-22",
"review_requested": false,
"review_received": false
},
{
"job_id": "J-2204",
"customer": "Sam",
"title": "Radiator swap",
"date": "2026-10-19",
"review_requested": true,
"review_received": false
}
]
} Returns each review with its date, rating, the job it belongs to and the customer text, newest first. Reading changes nothing on your profile.
MCP callcheckatrade_read → list_reviews
REST endpointGET https://cotlet.dev/api/v1/checkatrade/reviews
| Name | Type | Description |
|---|---|---|
| limit integer | integer | Maximum reviews to return. |
{
"reviews": [
{
"review_id": "R-901",
"job_id": "J-2198",
"date": "2026-10-25",
"rating": 10,
"text": "Neat work and on time."
}
]
} Sends the review request, which goes out by email and text, as Request Review does in the Reviews section. The customer receives it, so it cannot be recalled. By default you confirm each call; you can switch that off for this tool.
MCP callcheckatrade_write → request_review
REST endpointPOST https://cotlet.dev/api/v1/checkatrade/jobs/{job_id}/review/request
| Name | Type | Description |
|---|---|---|
| job_id string required | string | Job ID from list_jobs. |
{
"job_id": "job_8c41d2"
} {
"job_id": "J-2210",
"status": "requested"
} Browsing the board is free. Unlocking a lead is the paid step, so it always asks first.
Returns each lead with its ID, job title, area and age. Browsing the board is free; contact details stay hidden until you unlock a lead with unlock_opportunity.
MCP callcheckatrade_read → list_opportunities
REST endpointGET https://cotlet.dev/api/v1/checkatrade/opportunities
| Name | Type | Description |
|---|---|---|
| limit integer | integer | Maximum leads to return. |
{
"opportunities": [
{
"opportunity_id": "O-7731",
"title": "Kitchen tap replaced",
"area": "Bristol",
"posted_at": "2026-10-31T07:40:00Z"
},
{
"opportunity_id": "O-7729",
"title": "Gas safety certificate",
"area": "Bath",
"posted_at": "2026-10-30T18:10:00Z"
}
]
} Checkatrade charges only when you respond to a board lead, and the price is not published, so the tool asks first. It shows the customer details after unlocking. A lead comes off the board once 3 trades have unlocked it. By default you confirm each call; you can switch that off for this tool.
MCP callcheckatrade_write → unlock_opportunity
REST endpointPOST https://cotlet.dev/api/v1/checkatrade/opportunities/{opportunity_id}/unlock
| Name | Type | Description |
|---|---|---|
| opportunity_id string required | string | Opportunity ID from list_opportunities. |
{
"opportunity_id": "opportunity_8c41d2"
} {
"opportunity_id": "O-7731",
"status": "unlocked",
"lead_id": "L-48240"
} Your signed-in Checkatrade profile, AES-256-GCM, in Finland. Not your password.
The 13 Checkatrade tools. No cookie, no API key.
The enquiries, quotes, jobs and reviews your member account opens.
Plan and billing, Checkatrade Pay, bank details and account settings.
Your agent gets a link and you log in again. We never log in for you.
Disable Checkatrade for agents, reset the browser or delete the API key.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results); no SOC 2 report or third-party pentest yet.
"You may not use our app: ... to reverse engineer, decompile, dissemble, decipher or otherwise derive the code used within the app; to reproduce, duplicate, copy, sub-licence, broadcast, distribute, sell, re-brand or re-sell any part of the app (without our express consent)."
The live terms pages answered 403 when we checked on 31 Oct 2026, so we read the archived policy. It names no bots, scraping or AI agents. It lets Checkatrade deactivate an account that breaches it, and trade members are also bound by a Membership Contract we have not read. We found no public case of a member account closed for automation.
Read the Membership Contract yourself before you connect. Keep each message tied to one customer and one enquiry; the policy bars spam.
Checkatrade added the Opportunities Board in summer 2026, so its screens are still moving. If it moves a screen or renames a field in Messages, Quotes or Reviews, we change the tool and the same prompt keeps working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Reply to an enquiry | No; the customer has it |
| Send a quote | Not through Cotlet; the customer has it |
| Request a review | No; the request goes out by email and text |
| Accept or decline a job | Not through Cotlet; use the Messages page |
| Unlock a board lead | No; Checkatrade charges when you respond |
| Add a note | Yes, delete it in the Messages page |
| Every read | Nothing to undo; reads change nothing |
6 of 13 tools ask first: every write except the private note, because each one reaches a customer or costs money. Turn the wait off per tool for a scheduled run you trust.
Checkatrade does not publish the price of unlocking a board lead, so read the price in the Opportunities Board before you approve.
{
"name": "reply_to_lead",
"arguments": {
"lead_id": "L-48213",
"text": "Hi Dana, I can service the boiler on Tuesday afternoon. Does 2 pm suit you?"
}
} curl -X POST https://cotlet.dev/api/v1/checkatrade/leads/L-48213/replies \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hi Dana, I can service the boiler on Tuesday afternoon. Does 2 pm suit you?"}' {
"lead_id": "L-48213",
"status": "sent",
"sent_at": "2026-10-31T08:15:00Z"
} Scripts and cron jobs reach the same tools over REST at /api/v1/checkatrade, with one key and one price. A write waits for your approval and answers 202 with status pending until you decide. The tools table lists the REST path of each tool.
About $18 a monthfor a sole trader, 3,060 credits. Your Checkatrade plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Unanswered enquiries and their details, daily | 2 × 30 | 600 |
| Replies and notes to enquiries, weekly | 4 × 4 | 160 |
| Quotes without an answer, daily | 1 × 30 | 300 |
| Sending quotes, weekly | 2 × 4 | 80 |
| Review requests for finished jobs, weekly | 3 × 4 | 120 |
| Opportunities Board, daily | 1 × 30 | 300 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 3,060 |
The month is our example: a sole trader on Checkatrade's Approved plan, listed at £30 a month on its pricing page (31 Oct 2026), with daily checks. Checkatrade states no enquiry counts per plan, and the price of unlocking a board lead is not published. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Checkatrade web app and Trades app | Messages, quotes, review requests and the Opportunities Board, with alerts for new enquiries. | You open it yourself; no agent, no schedule. |
| Checkatrade webhooks | Push new leads, bookings and payments into your CRM. | Strategic accounts only, through an account manager; one way. |
| Hosted scrapers | Collect public profiles, ratings and reviews of UK trades. | They do not see your own enquiries and cannot reply. |
If you have a strategic account, the webhooks push leads into your own system. Cotlet fits a sole trader or small firm without one: it works in your own Checkatrade login and puts everything a customer sees behind your OK.
Cotlet belongs to Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273) and trading since 2019. Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing) founded it. Write to contact@cotlet.dev with questions about the Checkatrade tools.
Sign up free at https://cotlet.dev, open Checkatrade under Integrations in the console and log in to Checkatrade in its Cloud Browser. The trial starts with your first app and needs no card.
Sign up at cotlet.dev, log in to Checkatrade once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Checkatrade account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Checkatrade: answer new enquiries fast; accept or decline jobs; send quotes and follow up. You ask in plain words, and anything that reaches other people waits for your OK first.
You need a Checkatrade member account that opens the Messages page. Checkatrade lists a free plan at 0, Approved at 30 pounds a month and Growth from 59 pounds a month (join.checkatrade.com/pricing, checked 31 Oct 2026); which plan shows leads is for Checkatrade to say.
Yes, for strategic accounts only: lead, booking and payment webhooks that you set up with your account manager (checked 31 Oct 2026). Without one, run your agent on a schedule, for example a daily list_leads.
Yes. list_opportunities browses the board, which Checkatrade makes free to browse. unlock_opportunity is the step Checkatrade charges for, so it always asks first.
Only the way in. Both carry the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Checkatrade Ltd or Vetted Limited.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy