Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Job board, repair orders, customers, appointments and texts in your shop. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.
10 tools Read and write
Tekmetric has no MCP server (checked 28 Oct 2026). Its REST API at api.tekmetric.com covers repair orders, customers, vehicles and appointments, but credentials come only after an API Application form and a review of 2 to 3 weeks, which Tekmetric may decline "at Tekmetric's sole discretion". Cotlet runs 10 Tekmetric tools hosted, over MCP for agents and REST for scripts, in your own employee login.
| What you need | Tekmetric API | GitHub MCP server | Cotlet |
|---|---|---|---|
| Read the Job Board, repair orders and customers | Yes | Yes | Yes |
| Book an appointment | Yes | No, read-only | Yes, after your OK |
| Send an estimate to the customer | Marks it shared | No | Yes, after your OK |
| Read and answer customer texts | No endpoint | No | Yes, on Scale |
| What you need first | Approved application, 2 to 3 weeks | Approved API credentials | Your Tekmetric login |
Checked 28 Oct 2026. Sources: Tekmetric API docs · Tekmetric integrations · Tekmetric pricing · Tekmetric Terms of Service
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 Tekmetric password, and no text, estimate or appointment 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.
Enable Tekmetric for agents. Create a Cotlet account, sign in to Tekmetric with your employee login in its Cloud Browser and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as a new MCP server or connector in your agent.
Let the agent in. Chat apps send you to a Cotlet sign-in page. Code editors, n8n and scheduled scripts take an API key from the console.
The address https://cotlet.dev/mcp/v1 is shared: Tekmetric shows up there next to any other app you enable. Turned Tekmetric on after connecting? Refresh the connector to load its tools.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-tekmetric \
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-tekmetric": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-tekmetric]
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: tekmetric_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: tekmetric_write Create a Cotlet API key with access to Tekmetric and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Tekmetric in Cotlet and enable it for agents. Account access: Your own Tekmetric employee login; what your agent can reach follows your employee permissions (texting needs "Can message customers").
curl https://cotlet.dev/api/v1/tekmetric/job-boards \
-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": "tekmetric",
"tool": "list_job_board",
"result": {
"repair_orders": [
{
"repair_order_id": "ro_30412",
"column": "estimates",
"status": "Pending Authorization",
"customer": "Dana Whitfield",
"vehicle": "2017 Honda CR-V",
"jobs": 3,
"total": "$842.10",
"estimate_sent": true,
"estimate_viewed": false
},
{
"repair_order_id": "ro_30415",
"column": "work_in_progress",
"status": "In progress",
"customer": "Luis Ortega",
"vehicle": "2014 Ford F-150",
"jobs": 5,
"total": "$1,620.40",
"estimate_sent": true,
"estimate_viewed": true
},
{
"repair_order_id": "ro_30409",
"column": "completed",
"status": "Completed",
"customer": "Priya Nair",
"vehicle": "2020 Toyota Camry",
"jobs": 2,
"total": "$376.00",
"estimate_sent": true,
"estimate_viewed": true
}
],
"next_cursor": null
}
} Returns one row per repair order with its column, card status, customer, vehicle, job count and total. Each row says whether the estimate was sent or viewed, the same paper airplane and eye icons the Job Board shows.
Declined and deleted repair orders are not in the default view.
cursor: Next page cursor from the previous call.
Keep the same selection when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Reads one repair order with its jobs, parts and authorization state. Use get_repair_order in your configured business report. |
| Make | HTTP > Make a request | Lists appointments on the shop calendar for a date range. Use list_appointments in your configured business report. |
| Python or Node.js | REST API | Reads the messages of one Tekmessage thread. Use get_message_thread in your configured business report. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Tekmetric; 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.
The three board columns, Estimates, Work-in-Progress and Completed, with card status and whether the estimate was sent or viewed. Inspections and photos stay out.
Returns one row per repair order with its column, card status, customer, vehicle, job count and total. Each row says whether the estimate was sent or viewed, the same paper airplane and eye icons the Job Board shows. Declined and deleted repair orders are not in the default view.
MCP calltekmetric_read → list_job_board
REST endpointGET https://cotlet.dev/api/v1/tekmetric/job-boards
| Name | Type | Description |
|---|---|---|
| column string | string | estimates, work_in_progress or completed. Defaults to all three. |
| status string | string | Card status, for example Not Started, Requires Authorization, Pending Authorization or Declined All. |
| employee string | string | Name of an employee, to see only their repair orders. |
| cursor string | string | Next page cursor from the previous call. |
{
"repair_orders": [
{
"repair_order_id": "ro_30412",
"column": "estimates",
"status": "Pending Authorization",
"customer": "Dana Whitfield",
"vehicle": "2017 Honda CR-V",
"jobs": 3,
"total": "$842.10",
"estimate_sent": true,
"estimate_viewed": false
},
{
"repair_order_id": "ro_30415",
"column": "work_in_progress",
"status": "In progress",
"customer": "Luis Ortega",
"vehicle": "2014 Ford F-150",
"jobs": 5,
"total": "$1,620.40",
"estimate_sent": true,
"estimate_viewed": true
},
{
"repair_order_id": "ro_30409",
"column": "completed",
"status": "Completed",
"customer": "Priya Nair",
"vehicle": "2020 Toyota Camry",
"jobs": 2,
"total": "$376.00",
"estimate_sent": true,
"estimate_viewed": true
}
],
"next_cursor": null
} Returns the customer, vehicle, each job with its status and price, the total and how each job was authorized (digital signature, phone call, text message and so on). Inspections and photos are not returned.
MCP calltekmetric_read → get_repair_order
REST endpointGET https://cotlet.dev/api/v1/tekmetric/repair-orders/{repair_order_id}
| Name | Type | Description |
|---|---|---|
| repair_order_id string required | string | Repair order ID from list_job_board. |
{
"repair_order_id": "repair_order_8c41d2"
} {
"repair_order_id": "ro_30412",
"customer": "Dana Whitfield",
"vehicle": "2017 Honda CR-V",
"column": "estimates",
"jobs": [
{
"name": "Front brake pads and rotors",
"price": "$512.30",
"authorized": false
},
{
"name": "Cabin air filter",
"price": "$64.80",
"authorized": false
},
{
"name": "Oil and filter change",
"price": "$265.00",
"authorized": false
}
],
"total": "$842.10"
} Search by name, phone or email; the vehicle ID from a customer record is what an appointment is booked on.
Returns matching customers newest first with their phone numbers and vehicle count. Use customer_id with get_customer for the full record.
MCP calltekmetric_read → list_customers
REST endpointGET https://cotlet.dev/api/v1/tekmetric/customers
| Name | Type | Description |
|---|---|---|
| query string required | string | Name, phone number or email. |
| cursor string | string | Next page cursor from the previous call. |
{
"query": "query"
} {
"customers": [
{
"customer_id": "cu_8841",
"name": "Dana Whitfield",
"phone": "+1 555 0142",
"vehicles": 2
},
{
"customer_id": "cu_8853",
"name": "Dana Whitaker",
"phone": "+1 555 0177",
"vehicles": 1
}
],
"next_cursor": null
} Returns the contact details on the customer profile, each vehicle with its ID, and recent repair orders. The agent uses the vehicle ID to book an appointment.
MCP calltekmetric_read → get_customer
REST endpointGET https://cotlet.dev/api/v1/tekmetric/customers/{customer_id}
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
{
"customer_id": "customer_8c41d2"
} {
"customer_id": "cu_8841",
"name": "Dana Whitfield",
"phones": [
"+1 555 0142"
],
"vehicles": [
{
"vehicle_id": "ve_5520",
"name": "2017 Honda CR-V"
},
{
"vehicle_id": "ve_5521",
"name": "2011 Mazda 3"
}
],
"repair_orders": [
{
"repair_order_id": "ro_30412",
"column": "estimates"
}
]
} Returns appointments in time order with customer, vehicle and the appointment type, which shows who waits at the shop and who drops off the vehicle and returns later.
MCP calltekmetric_read → list_appointments
REST endpointGET https://cotlet.dev/api/v1/tekmetric/appointments
| Name | Type | Description |
|---|---|---|
| from string required | string | First day, YYYY-MM-DD. |
| to string | string | Last day, YYYY-MM-DD. Defaults to the same day. |
| cursor string | string | Next page cursor from the previous call. |
{
"from": "from"
} {
"appointments": [
{
"appointment_id": "ap_2201",
"start": "2026-10-29T08:00:00",
"customer": "Luis Ortega",
"vehicle": "2014 Ford F-150",
"type": "Drop off",
"title": "Brake inspection"
},
{
"appointment_id": "ap_2204",
"start": "2026-10-29T09:00:00",
"customer": "Dana Whitfield",
"vehicle": "2017 Honda CR-V",
"type": "Waiting",
"title": "Oil change"
}
],
"next_cursor": null
} Adds the appointment to the calendar and blocks that time. The customer may be told about it, so the call waits for your OK. It does not check the bay calendar for you: call list_appointments first. By default you confirm each call; you can switch that off for this tool.
MCP calltekmetric_write → create_appointment
REST endpointPOST https://cotlet.dev/api/v1/tekmetric/customers/{customer_id}/appointments
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
| vehicle_id string required | string | Vehicle ID from get_customer. |
| start string required | string | Start time, ISO 8601, in the shop time zone. |
| title string required | string | What the visit is for, for example Oil change. |
| type string | string | Waiting or Drop off. |
{
"customer_id": "customer_8c41d2",
"vehicle_id": "vehicle_8c41d2",
"start": "start",
"title": "title"
} {
"appointment_id": "ap_2209",
"start": "2026-10-29T09:00:00",
"customer": "Dana Whitfield",
"vehicle": "2017 Honda CR-V",
"title": "Oil change",
"type": "Waiting",
"status": "booked"
} Needs Two-Way Texting, which Tekmetric sells on Scale, and the "Can message customers" permission. Reading a thread leaves it unread.
Needs Tekmessage turned on for the shop and the "Can message customers" permission for your employee. Returns the customer, the last message and whether it is unread. Reading does not mark a thread as read.
MCP calltekmetric_read → list_message_threads
REST endpointGET https://cotlet.dev/api/v1/tekmetric/message-threads
| Name | Type | Description |
|---|---|---|
| unread_only boolean | boolean | Only threads with unread messages. |
| cursor string | string | Next page cursor from the previous call. |
{
"threads": [
{
"thread_id": "th_9017",
"customer_id": "cu_8841",
"customer": "Dana Whitfield",
"last_message": "Can you do the brakes but skip the filter?",
"unread": true
},
{
"thread_id": "th_9011",
"customer_id": "cu_8870",
"customer": "Sam Reyes",
"last_message": "What time do you close today?",
"unread": true
}
],
"next_cursor": null
} Returns messages in time order, each marked as from the customer or from the shop, with delivery state. Estimates and invoices shared from the repair order appear as links.
MCP calltekmetric_read → get_message_thread
REST endpointGET https://cotlet.dev/api/v1/tekmetric/threads/{thread_id}/message-thread
| Name | Type | Description |
|---|---|---|
| thread_id string required | string | Thread ID from list_message_threads. |
{
"thread_id": "thread_8c41d2"
} {
"thread_id": "th_9017",
"customer": "Dana Whitfield",
"messages": [
{
"from": "shop",
"text": "Your estimate is ready: https://example.tekmetric.test/e/abc123",
"delivered": true
},
{
"from": "customer",
"text": "Can you do the brakes but skip the filter?",
"delivered": true
}
]
} Sends from the shop number and the text reaches a real person. Tekmetric does not allow deleting a sent message. Needs Tekmessage on and the "Can message customers" permission. By default you confirm each call; you can switch that off for this tool.
MCP calltekmetric_write → send_message
REST endpointPOST https://cotlet.dev/api/v1/tekmetric/customers/{customer_id}/messages
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
| body string required | string | Message text. |
{
"customer_id": "cu_8841",
"body": "Hi Dana, your CR-V is ready for pickup. We close at 6 pm. Thanks, Main Street Auto."
} {
"message_id": "msg_55210",
"customer": "Dana Whitfield",
"thread_id": "th_9017",
"status": "delivered",
"sent_at": "2026-10-28T09:14:00Z"
} Your signed-in Tekmetric profile, AES-256-GCM encrypted, in Finland. No password.
The 10 Tekmetric tools, never your cookie or login.
What your employee role sees: board, customers, phone numbers, texts.
Invoices, inventory, employees, shop settings and deletes.
You get an email with a sign-in link. We never type your password.
Disable for agents, reset the browser, or remove the employee in Tekmetric.
cotlet.dev scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). We have no SOC 2 report and no third-party pentest yet.
"use any robot, spider, crawler, scraper, or other automated means or interface not provided by us to access the Platform or to extract data or to send messages through our Platform; use automated bots or other software to send messages through our Platform"
The same terms let Tekmetric suspend any user "for any reason, at any time", and allow use only "through specific channels provided by us". Tekmetric's own channel is the partner API, which has no texting. So the riskiest tool here is send_message: it is the exact thing the clause names. The shop also stays responsible for consent under the TCPA for every text.
Text customers about their own car, not a promotion. Campaigns belong in Tekmetric Marketing, which handles opt-outs.
When Tekmetric renames a board column or moves a field, the fix happens on our side and the same prompt keeps working. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Send a text | No, Tekmetric cannot delete a sent message |
| Share an estimate | No, the customer has the link |
| Create an appointment | Edit or delete it on the Tekmetric calendar |
| Read the board or a thread | Nothing to undo; threads stay unread |
3 of 10 tools ask first: send_message, share_estimate and create_appointment, the three a customer may notice. The reads run at once. You can switch the wait off per tool for a scheduled run.
create_appointment does not check for a clash. The agent reads list_appointments first.
{
"name": "send_message",
"arguments": {
"customer_id": "cu_8841",
"body": "Hi Dana, your CR-V is ready for pickup. We close at 6 pm. Thanks, Main Street Auto."
}
} curl -X POST https://cotlet.dev/api/v1/tekmetric/customers/cu_8841/messages \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body":"Hi Dana, your CR-V is ready for pickup. We close at 6 pm. Thanks, Main Street Auto."}' {
"message_id": "msg_55210",
"customer": "Dana Whitfield",
"thread_id": "th_9017",
"status": "delivered",
"sent_at": "2026-10-28T09:14:00Z"
} A cron job or script calls the same tools over REST at /api/v1/tekmetric, with one key and one price. Without Tekmessage or the texting permission the text tools fail, and a failed call costs nothing. The tools table lists the REST path of each tool.
About $45 a monthfor one shop writing about 10 repair orders a day, 7,760 credits. Your Tekmetric plan stays billed by Tekmetric.
| Job | Calls | Credits |
|---|---|---|
| Morning briefing: board and today's appointments | 2 × 26 | 520 |
| Chase 2 estimates waiting on authorization | 7 × 26 | 1,820 |
| Car-ready texts, about 4 a day | 6 × 26 | 1,560 |
| Read unread texts, answer the simple ones | 6 × 26 | 1,560 |
| Book an appointment from a text or email | 4 × 20 | 800 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 7,760 |
The month is our example of a single-location shop open 26 days. Tekmetric charges per shop, not per user or repair order: Start $199, Grow $349, Scale $439 a month billed monthly (28 Oct 2026). 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 |
|---|---|---|
| beetlebugorg/tekmetric-mcp | Go server for Claude: customers, vehicles, repair orders, appointments and a service history summary. 7 stars, last commit 19 Oct 2026. | Read-only, 25 records a query, needs approved partner credentials, runs on your computer. |
| prismware/mcp-tekmetric | Python server, MIT, read-only, listed on Glama as patclarke/mcp-tekmetric. | Last commit 9 May 2025, same API credentials needed. |
| Carly | AI assistant that uses your own Tekmetric API key for email follow-ups and morning numbers; agents from $35 a month. | Waits on the same API application; follows up by email, not through Tekmessage. |
| Shopgenie, Steer, Cinch | Approved Tekmetric partners for reminders, campaigns and reactivation. | Fixed marketing flows, not an agent you can ask. |
A GitHub server suits a shop that already holds API credentials and only wants to ask questions. A partner app suits one marketing job. Cotlet suits a shop without a key that wants its agent to text, share estimates and book.
Behind Cotlet is Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273), in business since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Tekmetric tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Tekmetric under Integrations in the console and sign in with your Tekmetric employee login in its Cloud Browser. The trial starts with your first app, with no card.
Sign up at cotlet.dev, log in to Tekmetric 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 Tekmetric account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Tekmetric: chase estimates customers have not approved; text customers when the car is ready; morning briefing of the shop. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Cotlet works in your own signed-in Tekmetric account, so no API application is needed. Tekmetric sends API applicants to api.tekmetric.com and decides who gets access (checked 28 Oct 2026).
Tekmessage must be turned on for the shop, and the employee needs the "Can message customers" permission, according to Tekmetric's help. Without Tekmessage, Tekmetric only lets staff share estimates, invoices and inspections as one-way messages, so send_message and the thread tools fail.
A shop admin can add outbound webhooks under Settings > Integrations for appointment and repair order events (per Carly's guide, 30 Sep 2026). Cotlet does not listen to them. Run your agent on a schedule instead, for example list_job_board every morning.
The Job Board, customer and appointment tools work on any plan. The three text tools need Two-Way Texting, which Tekmetric includes from Scale ($439 a month billed monthly, 28 Oct 2026).
Yes, as far as your employee login reaches. Each call works in the shop your Cloud Browser has open, so name the shop in your prompt if you run several.
Only in how you call it. Both carry the same 10 tools, inputs and answers, one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Tekmetric (Sparkplug Studios LLC).
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