Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Your AI agent schedules visits from calls, moves a rained-out day, finds subscriptions due and chases past-due tickets. Sign in to FieldRoutes once in your own Cloud Browser. No API key, no developer.
9 tools Read and write
FieldRoutes has no MCP server and no ChatGPT or Claude app. Its API keys come through FieldRoutes support for each office, and the free tier allows "up to 50 API read requests" a day per office (FieldRoutes knowledge base, checked 8 Nov 2026). Cotlet runs 9 FieldRoutes tools hosted, over MCP for agents and REST for scripts, in your own FieldRoutes login.
| What you need | FieldRoutes API | By hand | Cotlet |
|---|---|---|---|
| Customers and subscriptions | 50 reads a day free | Yes, one by one | Yes |
| Schedule or move a visit | With a key | Yes, one by one | Yes, after your OK |
| Past-due tickets | With a key | Report export | Yes |
| Ask in ChatGPT or Claude | No | No | Yes |
| Developer needed | Yes | No | No |
Checked 8 Nov 2026. Sources: FieldRoutes knowledge base: API access · FieldRoutes API overview · FieldRoutes API integrations
Once, in a browser we host for you.
One address in its settings.
It drafts the work, you OK what customers get.
We never keep your FieldRoutes password, and no appointment is scheduled or moved until you approve it. Who can see your session
Sign in to FieldRoutes in a Cloud Browser. Create a Cotlet account, open FieldRoutes in its Cloud Browser, sign in with your FieldRoutes office login and press Enable for agents.
Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.
Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.
FieldRoutes shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned FieldRoutes on after connecting? Refresh the connector and the 9 tools appear.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet \
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": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet]
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: fieldroutes_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: fieldroutes_write Search matches name, phone, street and account number. New customers and notes reach no one, so they run at once.
Returns customers with ID, service address, active subscriptions and balance. Pass the customer_id to the other tools.
MCP callfieldroutes_read → list_customers
REST endpointGET https://cotlet.dev/api/v1/fieldroutes/customers
| Name | Type | Description |
|---|---|---|
| query string | string | Name, phone, street or account number. |
| page integer | integer | Page number. Default: 1. |
{
"customers": [
{
"customer_id": "104822",
"name": "Dale Whitaker",
"address": "2214 Peachtree Ln, Marietta, GA",
"subscriptions": [
"Quarterly pest"
],
"balance": "0.00"
}
],
"page": 1
} Returns the customer record: subscriptions with next service date, past and upcoming appointments, open tickets and notes.
MCP callfieldroutes_read → get_customer
REST endpointGET https://cotlet.dev/api/v1/fieldroutes/customers/{customer_id}
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
{
"customer_id": "customer_8c41d2"
} {
"customer_id": "104822",
"name": "Dale Whitaker",
"subscriptions": [
{
"type": "Quarterly pest",
"next_service": "2026-12-03"
}
],
"open_tickets": 0,
"notes": [
"Dog in back yard"
]
} Creates the customer record. Search list_customers first so a returning customer does not become a duplicate. Reaches no one, so it runs at once.
MCP callfieldroutes_write → create_customer
REST endpointPOST https://cotlet.dev/api/v1/fieldroutes/customers
| Name | Type | Description |
|---|---|---|
| first_name string required | string | First name. |
| last_name string required | string | Last name. |
| address string required | string | Service address. |
| phone string | string | Phone. |
| email string | string | Email. |
{
"first_name": "first name",
"last_name": "last name",
"address": "address"
} {
"customer_id": "105031",
"name": "Tasha Moore",
"address": "88 Roswell Rd, Atlanta, GA"
} Appends a note, for example gate code or a pet in the yard, for office and technicians. Reaches no customer, so it runs at once.
MCP callfieldroutes_write → add_customer_note
REST endpointPOST https://cotlet.dev/api/v1/fieldroutes/customers/{customer_id}/note
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
| note string required | string | Note text. |
{
"customer_id": "customer_8c41d2",
"note": "note"
} {
"customer_id": "104822",
"note_added": "Gate code 4417"
} New and moved appointments wait for your OK; your reminder settings decide what the customer hears. Subscriptions due show what still needs a slot.
Returns appointments with customer, service type, technician, route, time window and status.
MCP callfieldroutes_read → list_appointments
REST endpointGET https://cotlet.dev/api/v1/fieldroutes/appointments
| Name | Type | Description |
|---|---|---|
| date_from string required | string | ISO date. |
| date_to string | string | ISO date. Default: date_from. |
| tech string | string | Technician name. |
| status string | string | Pending, Completed, Cancelled. |
| page integer | integer | Page number. Default: 1. |
{
"date_from": "date from"
} {
"appointments": [
{
"appointment_id": "881204",
"customer": "Monica Reyes",
"service": "Mosquito treatment",
"tech": "Brandon P.",
"date": "2026-11-10",
"window": "AM",
"status": "Pending"
}
],
"page": 1
} Creates the appointment for the service type on the day and window you choose. Your FieldRoutes reminder settings decide whether the customer hears about it. By default you confirm each call; you can switch that off for this tool.
MCP callfieldroutes_write → schedule_appointment
REST endpointPOST https://cotlet.dev/api/v1/fieldroutes/customers/{customer_id}/appointment/schedule
| Name | Type | Description |
|---|---|---|
| customer_id string required | string | Customer ID from list_customers. |
| service string required | string | Service type as in your office settings. |
| date string required | string | ISO date. |
| window string | string | AM, PM or a time. |
| tech string | string | Technician name. |
{
"customer_id": "customer_8c41d2",
"service": "service",
"date": "date"
} {
"appointment_id": "881377",
"customer": "Dale Whitaker",
"service": "Re-service",
"date": "2026-11-11",
"window": "PM",
"status": "Pending"
} Moves the appointment, for example off a rained-out day. Your reminder settings decide whether the customer hears about it. By default you confirm each call; you can switch that off for this tool.
MCP callfieldroutes_write → reschedule_appointment
REST endpointPOST https://cotlet.dev/api/v1/fieldroutes/appointments/{appointment_id}/reschedule
| Name | Type | Description |
|---|---|---|
| appointment_id string required | string | Appointment ID from list_appointments. |
| date string required | string | New ISO date. |
| window string | string | AM, PM or a time. |
| tech string | string | New technician. Default: unchanged. |
{
"appointment_id": "881204",
"date": "2026-11-12",
"window": "AM"
} {
"appointment_id": "881204",
"date": "2026-11-12",
"window": "AM",
"tech": "Brandon P.",
"status": "Pending"
} Returns active subscriptions whose next service falls in the range and has no appointment yet, by area.
MCP callfieldroutes_read → list_subscriptions_due
REST endpointGET https://cotlet.dev/api/v1/fieldroutes/subscriptions-dues
| Name | Type | Description |
|---|---|---|
| date_from string required | string | ISO date. |
| date_to string required | string | ISO date. |
| zip string | string | Only this ZIP code. |
{
"date_from": "date from",
"date_to": "date to"
} {
"due": [
{
"customer_id": "104990",
"customer": "Ray Gentry",
"subscription": "Bi-monthly lawn",
"due": "2026-11-14",
"zip": "30062"
}
]
} Unpaid tickets by days past due. Taking payments stays in FieldRoutes.
Returns tickets with a balance, oldest first, with customer, amount and days past due.
MCP callfieldroutes_read → list_unpaid_tickets
REST endpointGET https://cotlet.dev/api/v1/fieldroutes/unpaid-tickets
| Name | Type | Description |
|---|---|---|
| min_days_past_due integer | integer | Only tickets at least this many days past due. |
{
"tickets": [
{
"ticket_id": "T-552901",
"customer": "Monica Reyes",
"balance": "129.00",
"days_past_due": 34
}
]
} Your signed-in FieldRoutes profile, AES-256-GCM encrypted, in Finland. No password.
The 9 FieldRoutes tools, never the session cookie.
What your login sees: customers, subscriptions, schedule, tickets.
Payments, refunds, routes optimization, payroll, deletes.
You sign in again yourself, in the same Cloud Browser.
Disable for agents, reset the browser, or change your FieldRoutes password.
Cotlet never types your password: you sign in yourself, and the agent only uses the session. Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results).
When FieldRoutes moves a button on the scheduling screen or renames a customer tab, we fix the tool and your agent calls it the same way. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Schedule an appointment | Yes, cancel it in FieldRoutes |
| Move an appointment | Move it back; a reminder already sent stays sent |
| Add a customer or note | Yes, edit it in FieldRoutes |
2 of 9 tools ask first: schedule_appointment, reschedule_appointment. New customers and customer notes reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.
{
"name": "reschedule_appointment",
"arguments": {
"appointment_id": "881204",
"date": "2026-11-12",
"window": "AM"
}
} curl -X POST https://cotlet.dev/api/v1/fieldroutes/appointments/881204/reschedule \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-11-12","window":"AM"}' {
"appointment_id": "881204",
"date": "2026-11-12",
"window": "AM",
"tech": "Brandon P.",
"status": "Pending"
} A cron job or n8n flow can call the same tools over REST at /api/v1/fieldroutes with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.
About $31 a monthfor a pest and lawn company with 6 technicians, 5,350 credits. Your FieldRoutes plan stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Appointment scheduled from a call | 2 × 90 | 1,800 |
| Rain day moved | 15 × 3 | 450 |
| Subscriptions due, weekly | 2 × 4 | 80 |
| Past-due tickets, weekly | 8 × 4 | 320 |
| Customer note logged | 2 × 60 | 1,200 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 5,350 |
FieldRoutes publishes no stop counts, so the month is our example. 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 |
|---|---|---|
| FieldRoutes API | Customers, appointments, subscriptions and tickets for your own developer. | Key per office through support; 50 reads a day on the free tier; you build and host the code. |
| Third-party MCP servers | Community servers on GitHub built on the API. | Need the same office API key first; you run them yourself. |
| By hand | Every screen of FieldRoutes, one stop at a time. | Your office's time. |
If you already have a Premium API key and a developer, building on the API is cheaper for syncing data. To schedule, move rain days and chase tickets from ChatGPT or Claude this week, Cotlet works in the FieldRoutes account you already have.
Take Group sp. z o.o. runs Cotlet. It is a software company registered in Poland, EU (VAT PL6342984273), in business since 2019, led by its founders Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the FieldRoutes tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open FieldRoutes under Integrations in the console and sign in to FieldRoutes in its Cloud Browser. The trial starts with your first app and asks for no card.
Sign up at cotlet.dev, log in to FieldRoutes 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 FieldRoutes account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in FieldRoutes: move a rained-out day; book re-services from calls; fill next week's routes. You ask in plain words, and anything that reaches other people waits for your OK first.
No. FieldRoutes has no ChatGPT or Claude connector of its own and FieldRoutes has no official MCP server (checked 8 Nov 2026). Cotlet is an independent one that works in ChatGPT, Claude, Cursor and any MCP client, on your signed-in account.
Yes, with Cotlet. ChatGPT finds the customer and schedules the service on the day and window you want, for example a re-service after a call. Scheduling waits for your OK by default.
Yes, with Cotlet. ChatGPT reads the day's appointments for a technician and moves them to the day you name, after your OK, and lists what does not fit.
Yes, with Cotlet. ChatGPT lists tickets with a balance by days past due, with the customer's contact details, so your office knows whom to call.
No. Cotlet works through your own FieldRoutes login, so you do not need an office key from support or the Premium tier. It can do what your login can do in FieldRoutes.
No. Cotlet schedules and moves appointments; route building and optimization stay in FieldRoutes, the way your office runs them today.
Only in how it is called. Both carry the same 9 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with FieldRoutes or its owner ServiceTitan.
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