Markate MCP server Let your AI agent run the Markate office.

Your AI agent drafts estimates from inquiries, schedules and moves work orders, invoices finished jobs and chases what is overdue. Sign in to Markate once in your own Cloud Browser. No API request, no developer.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Markate
Markate logo Markate Cloud Browser

12 tools Read and write

Inquiry to paid

What can your AI agent do in Markate? The office work between the inquiry and the payment.

  • Draft estimates from inquiries

  • Schedule one-off and recurring jobs

  • Move a rained-out day

  • Invoice finished work orders

  • Chase overdue invoices

  • Find customers and their history

API on approval

Does Markate have an MCP server or an API? An API after approval, and no MCP server.

Markate has no MCP server and no ChatGPT or Claude app. Its API key comes only after Markate reviews a request form ("Once approved, you receive your API key", Markate developer page, checked 8 Nov 2026). Cotlet runs 12 Markate tools hosted, over MCP for agents and REST for scripts, in your own Markate login.

  • Markate asks for your business, industry and purpose before it approves API access.
  • Markate documents no webhooks on its developer page.
  • Markate has no connector in the ChatGPT apps directory or in Claude.
The Markate API, other options and Cotlet compared
What you need Markate APIZapier appCotlet
Customers and estimates After approval Some triggers and actions Yes
Schedule or move a job After approval Limited Yes, after your OK
Invoices and overdue list After approval Limited Yes
Ask in ChatGPT or Claude No No Yes
Developer needed Yes Zap setup No

Checked 8 Nov 2026. Sources: Markate developer page: Request API Access · Markate pricing · Markate help: job schedule, calendar and map view

Set up once

How does the Markate MCP server work? Your agent works in your own Markate login.

  1. 1Sign in to Markate

    Once, in a browser we host for you.

  2. 2Connect your AI agent

    One address in its settings.

  3. 3Hand it the busywork

    It drafts the work, you OK what customers get.

We never keep your Markate password, and no estimate, invoice or schedule change reaches a customer until you approve it. Who can see your session

Any MCP client

How to connect Markate to your AI agent

  1. 1

    Sign in to Markate in a Cloud Browser. Create a Cotlet account, open Markate in its Cloud Browser, sign in with your Markate business login and press Enable for agents.

  2. 2

    Add the Cotlet address. Enter https://cotlet.dev/mcp/v1 as the MCP server or connector URL in your agent.

  3. 3

    Let the agent in. Chat apps open a Cotlet sign-in page. Editors, n8n and scripts send an API key made in the console.

Markate shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Markate on after connecting? Refresh the connector and the 12 tools appear.

Claude
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"
ChatGPT
Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth
Cursor
// ~/.cursor/mcp.json
{
  "mcpServers": {
    "cotlet": {
      "url": "https://cotlet.dev/mcp/v1",
      "headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
    }
  }
}
Codex
# ~/.codex/config.toml
[mcp_servers.cotlet]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY"
n8n
MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: markate_read
Make, Zapier
Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: markate_write
4 read, 8 write

All 12 Markate MCP tools

Customers3

Search matches name, phone, email and street, so a returning customer is found before a duplicate is made.

  • list_customers Customers, searchable by name, phone, email or address. read

    Returns customers with ID, contact details, service address and open balance. Pass the customer_id to the other tools.

    MCP callmarkate_read → list_customers

    REST endpointGET https://cotlet.dev/api/v1/markate/customers

    Parameters

    Parameters: list_customers
    NameTypeDescription
    query string string Name, phone, email or street.
    page integer integer Page number. Default: 1.

    Example response

    {
      "customers": [
        {
          "customer_id": "C-21877",
          "name": "Karen Whitfield",
          "phone": "(480) 555-0142",
          "address": "7140 E Main St, Scottsdale, AZ",
          "balance": "0.00"
        }
      ],
      "page": 1
    }
  • get_customer One customer with estimates, work orders and invoices. read

    Returns the customer record with notes, past and upcoming work orders, open estimates and unpaid invoices.

    MCP callmarkate_read → get_customer

    REST endpointGET https://cotlet.dev/api/v1/markate/customers/{customer_id}

    Parameters

    Parameters: get_customer
    NameTypeDescription
    customer_id string required string Customer ID from list_customers.

    Example input

    {
      "customer_id": "customer_8c41d2"
    }

    Example response

    {
      "customer_id": "C-21877",
      "name": "Karen Whitfield",
      "work_orders": [
        {
          "work_order_id": "WO-5512",
          "date": "2026-10-02",
          "status": "Completed"
        }
      ],
      "open_estimates": 1,
      "unpaid_invoices": 0
    }
  • create_customer Adds a new customer. write

    Creates the customer with contact details and service address. Search list_customers first so a returning customer does not become a duplicate. Reaches no one, so it runs at once.

    MCP callmarkate_write → create_customer

    REST endpointPOST https://cotlet.dev/api/v1/markate/customers

    Parameters

    Parameters: create_customer
    NameTypeDescription
    name string required string Customer name.
    phone string string Phone.
    email string string Email.
    address string string Service address.

    Example input

    {
      "name": "Jane Doe"
    }

    Example response

    {
      "customer_id": "C-21940",
      "name": "Marcus Delgado"
    }

Estimates2

Drafts use your own items and prices. Sending waits for your OK.

  • create_estimate Drafts an estimate with line items for a customer. write

    Creates the estimate as a draft from your items and prices. Sending it to the customer is a separate step.

    MCP callmarkate_write → create_estimate

    REST endpointPOST https://cotlet.dev/api/v1/markate/customers/{customer_id}/estimates

    Parameters

    Parameters: create_estimate
    NameTypeDescription
    customer_id string required string Customer ID from list_customers.
    items array required array Lines: item name from your items list, quantity, price.
    note string string Note for the customer.

    Example input

    {
      "customer_id": "customer_8c41d2",
      "items": "items"
    }

    Example response

    {
      "estimate_id": "E-3307",
      "customer": "Marcus Delgado",
      "total": "420.00",
      "status": "Draft"
    }
  • send_estimate Emails or texts an estimate to the customer. writeasks first

    Sends the estimate with Markate's approval link, by email or SMS as your settings allow. By default you confirm each call; you can switch that off for this tool.

    MCP callmarkate_write → send_estimate

    REST endpointPOST https://cotlet.dev/api/v1/markate/estimates/{estimate_id}

    Parameters

    Parameters: send_estimate
    NameTypeDescription
    estimate_id string required string Estimate ID from create_estimate.
    channel string string email or sms. Default: email.

    Example input

    {
      "estimate_id": "estimate_8c41d2"
    }

    Example response

    {
      "estimate_id": "E-3307",
      "status": "Sent",
      "sent_to": "marcus@example.com"
    }

Work orders3

One-off and recurring jobs on the schedule. New jobs and moves wait for your OK; your notification settings decide what the customer hears.

  • list_work_orders Work orders for a date range, by employee or status. read

    Returns work orders with customer, address, assigned employee, time and status, in schedule order.

    MCP callmarkate_read → list_work_orders

    REST endpointGET https://cotlet.dev/api/v1/markate/work-orders

    Parameters

    Parameters: list_work_orders
    NameTypeDescription
    date_from string required string ISO date.
    date_to string string ISO date. Default: date_from.
    employee string string Employee name.
    status string string Scheduled, In progress, Completed.
    page integer integer Page number. Default: 1.

    Example input

    {
      "date_from": "date from"
    }

    Example response

    {
      "work_orders": [
        {
          "work_order_id": "WO-5530",
          "customer": "Tanya Brooks",
          "employee": "Luis",
          "start": "2026-11-10T09:00",
          "status": "Scheduled"
        }
      ],
      "page": 1
    }
  • schedule_work_order Creates a work order on the schedule, once or recurring. writeasks first

    Puts the job on the calendar with an employee. Your Markate notification settings decide whether the customer hears about it. By default you confirm each call; you can switch that off for this tool.

    MCP callmarkate_write → schedule_work_order

    REST endpointPOST https://cotlet.dev/api/v1/markate/customers/{customer_id}/work-order/schedule

    Parameters

    Parameters: schedule_work_order
    NameTypeDescription
    customer_id string required string Customer ID from list_customers.
    title string required string What the job is.
    start string required string ISO date and time.
    employee string string Employee name.
    repeat string string Weekly, Monthly or empty for once.

    Example input

    {
      "customer_id": "C-21940",
      "title": "Window cleaning, 22 panes",
      "start": "2026-11-12T13:00",
      "employee": "Luis",
      "repeat": "Monthly"
    }

    Example response

    {
      "work_order_id": "WO-5541",
      "customer": "Marcus Delgado",
      "employee": "Luis",
      "start": "2026-11-12T13:00",
      "repeat": "Monthly",
      "status": "Scheduled"
    }
  • reschedule_work_order Moves a work order to a new time or employee. writeasks first

    Moves the job on the schedule. Your notification settings decide whether the customer hears about it. By default you confirm each call; you can switch that off for this tool.

    MCP callmarkate_write → reschedule_work_order

    REST endpointPOST https://cotlet.dev/api/v1/markate/work-orders/{work_order_id}/reschedule

    Parameters

    Parameters: reschedule_work_order
    NameTypeDescription
    work_order_id string required string Work order ID from list_work_orders.
    start string required string New ISO date and time.
    employee string string New employee. Default: unchanged.

    Example input

    {
      "work_order_id": "work_order_8c41d2",
      "start": "start"
    }

    Example response

    {
      "work_order_id": "WO-5530",
      "start": "2026-11-11T09:00",
      "employee": "Luis",
      "status": "Scheduled"
    }

Invoices and tasks4

Draft invoices and tasks reach no one, so they run at once. Sending an invoice waits for your OK.

  • create_invoice Drafts an invoice from a work order or line items. write

    Creates the invoice as a draft for the customer. It reaches no one until it is sent, so it runs at once.

    MCP callmarkate_write → create_invoice

    REST endpointPOST https://cotlet.dev/api/v1/markate/customers/{customer_id}/invoices

    Parameters

    Parameters: create_invoice
    NameTypeDescription
    customer_id string required string Customer ID from list_customers.
    work_order_id string string Work order to bill.
    items array array Lines when not from a work order.

    Example input

    {
      "customer_id": "customer_8c41d2"
    }

    Example response

    {
      "invoice_id": "INV-8812",
      "customer": "Tanya Brooks",
      "total": "185.00",
      "status": "Draft"
    }
  • send_invoice Emails or texts an invoice with its payment link. writeasks first

    Sends the invoice the way Markate does from its screen, with the online payment link if you take card payments. By default you confirm each call; you can switch that off for this tool.

    MCP callmarkate_write → send_invoice

    REST endpointPOST https://cotlet.dev/api/v1/markate/invoices/{invoice_id}

    Parameters

    Parameters: send_invoice
    NameTypeDescription
    invoice_id string required string Invoice ID.
    channel string string email or sms. Default: email.

    Example input

    {
      "invoice_id": "invoice_8c41d2"
    }

    Example response

    {
      "invoice_id": "INV-8812",
      "status": "Sent",
      "sent_to": "tanya@example.com"
    }
  • list_unpaid_invoices Open and overdue invoices with customer and age. read

    Returns sent invoices not yet paid, oldest first, with amount due and days overdue.

    MCP callmarkate_read → list_unpaid_invoices

    REST endpointGET https://cotlet.dev/api/v1/markate/unpaid-invoices

    Parameters

    Parameters: list_unpaid_invoices
    NameTypeDescription
    min_days_overdue integer integer Only invoices overdue at least this many days.

    Example response

    {
      "invoices": [
        {
          "invoice_id": "INV-8744",
          "customer": "Karen Whitfield",
          "due": "240.00",
          "days_overdue": 18
        }
      ]
    }
  • add_task Adds a task for you or an employee. write

    Creates a task with a due date, for example a follow-up call. Visible to your team only, so it runs at once.

    MCP callmarkate_write → add_task

    REST endpointPOST https://cotlet.dev/api/v1/markate/tasks

    Parameters

    Parameters: add_task
    NameTypeDescription
    title string required string Task text.
    due string string ISO date.
    assignee string string Employee name.

    Example input

    {
      "title": "title"
    }

    Example response

    {
      "task_id": "T-1290",
      "title": "Call Karen about the overdue invoice",
      "due": "2026-11-10",
      "assignee": "Office"
    }
Encrypted, revocable

Who can see my Markate session, and how do I revoke it?

  • What we store

    Your signed-in Markate profile, AES-256-GCM encrypted, in Finland. No password.

  • What your agent gets

    The 12 Markate tools, never the session cookie.

  • What the session sees

    What your login sees: customers, estimates, schedule, invoices.

  • What no tool touches

    Card payments, refunds, payroll, marketing sends, deletes.

  • If Markate signs you out

    You sign in again yourself, in the same Cloud Browser.

  • How to cut access

    Disable for agents, reset the browser, or change your Markate 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).

Tested every 12 h

What happens when Markate changes? We repair the tool; your prompts stay the same.

between tests of the Markate reads
12 h
between tests of sends a customer would notice
24 h
for a call to a Markate tool paused for repair
$0

When Markate moves a button on the schedule or renames a sales screen, we fix the tool and your agent calls it the same way. status.cotlet.dev checks the site, console and API every 3 minutes.

4 tools ask first

Approvals, undo and mistakes Customers get nothing until you say so.

  1. 01 Reads tomorrow's work orders For the employee and the weather you name.
  2. 02 Finds free times On the day you want the jobs moved to.
  3. 03 Proposes the moves And lists what does not fit.
  4. 04 Waits, then moves The batch shows up in your Cotlet console first.
Which Markate actions can be undone
ActionUndo
Schedule a work orderYes, delete or move it in Markate
Move a work orderMove it back; a notice already sent stays sent
Send an estimate or invoiceNo, it is in the customer's inbox; void it in Markate
Add a customer, draft or taskYes, edit it in Markate

4 of 12 tools ask first: send_estimate, schedule_work_order, reschedule_work_order, send_invoice. New customers, draft estimates, draft invoices and tasks reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.

MCP call
{
  "name": "schedule_work_order",
  "arguments": {
    "customer_id": "C-21940",
    "title": "Window cleaning, 22 panes",
    "start": "2026-11-12T13:00",
    "employee": "Luis",
    "repeat": "Monthly"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/markate/customers/C-21940/work-order/schedule \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Window cleaning, 22 panes","start":"2026-11-12T13:00","employee":"Luis","repeat":"Monthly"}'
Response
{
  "work_order_id": "WO-5541",
  "customer": "Marcus Delgado",
  "employee": "Luis",
  "start": "2026-11-12T13:00",
  "repeat": "Monthly",
  "status": "Scheduled"
}

A cron job or n8n flow can call the same tools over REST at /api/v1/markate with the same key and price, in JSON. Failed calls are free. Each tool row above shows its REST path.

Pay per call

How much does the Markate MCP server cost?

About $42 a monthfor a home service business with 4 employees, 7,260 credits. Your Markate plan stays as it is.

A month of Markate office work for a 4-employee business, in credits
JobCallsCredits
Estimate from an inquiry3 × 401,200
Work order scheduled or moved2 × 901,800
Invoices for finished jobs, daily6 × 221,320
Overdue invoices chased, weekly6 × 4240
Invoice sent1 × 1201,200
Cloud Browser, 30 days1,500
Total7,260
  • Free 7-day trial, no card
  • 10 credits per successful call, MCP or REST
  • 50 credits a day for the Cloud Browser
  • Works on your current Markate plan

Markate publishes no job counts, so the month is our example. Dollars at the $29 pack rate.

Cotlet credit packs: price, credits and calls at 10 credits each
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.

Other options

Markate MCP server on GitHub, Zapier or hosted: which to use The API needs approval; Zapier needs zaps.

Other ways to connect Markate, checked 8 Nov 2026
OptionWhat it doesWhere it stops
Markate APICustomers, estimates, work orders and invoices for your own developer.Key only after an approved request; you build and host the code.
Zapier appTriggers and actions between Markate and other apps.Zaps to set up per job; no questions in plain words.
By handEvery screen of Markate, one job at a time.Your office's time.

If you already have an approved Markate API key and a developer, building on the API is cheaper for simple syncs. To quote, schedule and invoice from ChatGPT or Claude this week, Cotlet works in the Markate account you already have.

EU company, since 2019

Who runs Cotlet A company you can look up.

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 Markate tools go to contact@cotlet.dev.

Markate MCP server: questions

How do I get access?

Sign up free at https://cotlet.dev, open Markate under Integrations in the console and sign in to Markate in its Cloud Browser. The trial starts with your first app and asks for no card.

How do I connect Markate to ChatGPT or Claude?

Sign up at cotlet.dev, log in to Markate 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 Markate account through Cotlet, in their phone apps too.

What can ChatGPT do in Markate?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Markate: turn an inquiry into an estimate; book recurring service; move a rained-out day. You ask in plain words, and anything that reaches other people waits for your OK first.

Is there an official ChatGPT or Claude app for Markate?

No. Markate has no ChatGPT or Claude connector of its own and Markate 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.

Can ChatGPT create estimates in Markate?

Yes, with Cotlet. ChatGPT finds or adds the customer and drafts the estimate from your items and prices. Sending it to the customer waits for your OK by default.

Can ChatGPT schedule work orders in Markate?

Yes, with Cotlet. ChatGPT puts one-off or recurring jobs on the schedule with the employee you name, and moves jobs when the weather or a sick day changes the plan, after your OK.

Can ChatGPT send invoices in Markate?

Yes, with Cotlet. ChatGPT drafts invoices for completed work orders, sends them with the payment link after your OK and lists what is overdue.

Do I need Markate API access to use Cotlet?

No. Cotlet works through your own Markate login, so you do not need to request and wait for an API key. It can do what your login can do in Markate.

Does it work with Markate's own AI receptionist?

Yes. Kate answers calls inside Markate; Cotlet lets ChatGPT or Claude work in the same account. A job Kate books shows up for your agent like any other work order.

Is the MCP server different from the REST API?

Only in how it is called. Both carry the same 12 tools, inputs, answers, API key and price. Agents use MCP; scripts and HTTP steps use REST.

Is Cotlet affiliated with Markate?

No. Cotlet is independent and not affiliated with Markate.

Hand the Markate office to your agent.

Free 7-day trial with 2,000 credits, no card needed.