Contractor+ MCP server Let your AI agent do the Contractor+ paperwork.

Your AI agent writes estimates from your site notes, turns approved ones into scheduled jobs, invoices finished work and lists what is overdue. Sign in to Contractor+ once in your own Cloud Browser. No Pro Team API needed.

  • Free 7-day trial, no card
  • Unofficial, not affiliated with Contractor+
Contractor+ Cloud Browser

10 tools Read and write

Estimate to payment

What can your AI agent do in Contractor+? The paperwork between the site visit and the payment.

  • Write estimates from site visit notes

  • Send estimates for approval

  • Turn approved estimates into jobs

  • Invoice completed jobs

  • List overdue invoices

  • Add new clients before quoting

API on Pro Team

Does Contractor+ have an MCP server or an API? An API on Pro Team only, and no MCP server.

Contractor+ has no MCP server and no ChatGPT or Claude app. Its public API uses an account API key, and the help center lists "Zapier & Developer API" only under the Pro Team plan (checked 8 Nov 2026). Cotlet runs 10 Contractor+ tools hosted, over MCP for agents and REST for scripts, in your own Contractor+ login on any plan.

  • Contractor+ has three plans: Freedom (free), Pro and Pro Team.
  • Zapier and the Developer API both come with Pro Team.
  • Contractor+ has no connector in the ChatGPT apps directory or in Claude.
The Contractor+ API, other options and Cotlet compared
What you need Contractor+ APIBy handCotlet
Estimates and jobs Pro Team only Yes, one by one Yes
Send an estimate or invoice Pro Team only Yes, one by one Yes, after your OK
Overdue list Pro Team only Yes, a filter Yes
Ask in ChatGPT or Claude No No Yes
Contractor+ plan needed Pro Team Any Any

Checked 8 Nov 2026. Sources: Contractor+ pricing plans (help center) · Contractor+ Public API · Contractor+ integrations

Set up once

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

  1. 1Sign in to Contractor+

    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 Contractor+ password, and no estimate or invoice reaches a client until you approve it. Who can see your session

Any MCP client

How to connect Contractor+ to your AI agent

  1. 1

    Sign in to Contractor+ in a Cloud Browser. Create a Cotlet account, open Contractor+ in its Cloud Browser, sign in with your owner or admin 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.

Contractor+ shares the address https://cotlet.dev/mcp/v1 with every other app you enable, so one connector covers them all. Turned Contractor+ on after connecting? Refresh the connector and the 10 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: contractor_plus_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: contractor_plus_write
4 read, 6 write

All 10 Contractor+ MCP tools

Clients2

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

  • list_clients Clients, searchable by name, phone, email or address. read

    Returns clients with ID, contact details and job address. Pass the client_id to create_estimate and create_job.

    MCP callcontractor_plus_read → list_clients

    REST endpointGET https://cotlet.dev/api/v1/contractor-plus/clients

    Parameters

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

    Example response

    {
      "clients": [
        {
          "client_id": "CL-2291",
          "name": "Grace Lin",
          "phone": "555-0166",
          "email": "grace@example.com",
          "address": "9 Birch Ln, Austin, TX 78704"
        }
      ],
      "page": 1
    }
  • create_client Adds a client with a job address. write

    Creates the client. Search list_clients first so a repeat customer does not become a duplicate. Reaches no one, so it runs at once.

    MCP callcontractor_plus_write → create_client

    REST endpointPOST https://cotlet.dev/api/v1/contractor-plus/clients

    Parameters

    Parameters: create_client
    NameTypeDescription
    name string required string Client or company name.
    phone string string Phone number.
    email string string Email.
    address string string Job address.

    Example input

    {
      "name": "Jane Doe"
    }

    Example response

    {
      "client_id": "CL-2340",
      "name": "Sam Okafor",
      "address": "41 Maple St, Austin, TX 78701"
    }

Estimates and jobs5

Estimates start as drafts and go out only after your OK. An approved estimate becomes a job with its lines, date and crew.

  • list_estimates Estimates by status or client. read

    Returns estimates with client, total and status (Draft, Sent, Approved, Declined).

    MCP callcontractor_plus_read → list_estimates

    REST endpointGET https://cotlet.dev/api/v1/contractor-plus/estimates

    Parameters

    Parameters: list_estimates
    NameTypeDescription
    status string string draft, sent, approved, declined or all. Default: all.
    page integer integer Page number. Default: 1.

    Example response

    {
      "estimates": [
        {
          "estimate_id": "E-1188",
          "client": "Grace Lin",
          "total": "6,450.00",
          "status": "Sent",
          "date": "2026-10-30"
        }
      ],
      "page": 1
    }
  • create_estimate Creates a draft estimate for a client. write

    Creates the estimate from your lines with your default terms. It stays a draft until send_estimate, so it runs at once.

    MCP callcontractor_plus_write → create_estimate

    REST endpointPOST https://cotlet.dev/api/v1/contractor-plus/clients/{client_id}/estimates

    Parameters

    Parameters: create_estimate
    NameTypeDescription
    client_id string required string Client ID from list_clients.
    items object[] required object[] Lines: description, quantity, unit price.
    notes string string Notes or scope shown on the estimate.

    Example input

    {
      "client_id": "client_8c41d2",
      "items": [
        "items"
      ]
    }

    Example response

    {
      "estimate_id": "E-1195",
      "client": "Sam Okafor",
      "total": "3,820.00",
      "status": "Draft"
    }
  • send_estimate Emails an estimate to the client for approval. writeasks first

    Sends the estimate to the client's email or the addresses you pass, with the link to approve it. By default you confirm each call; you can switch that off for this tool.

    MCP callcontractor_plus_write → send_estimate

    REST endpointPOST https://cotlet.dev/api/v1/contractor-plus/estimates/{estimate_id}

    Parameters

    Parameters: send_estimate
    NameTypeDescription
    estimate_id string required string Estimate number from list_estimates.
    to string[] string[] Recipient emails. Default: the client's email.

    Example input

    {
      "estimate_id": "E-1195"
    }

    Example response

    {
      "estimate_id": "E-1195",
      "status": "Sent",
      "sent_to": [
        "sam@example.com"
      ]
    }
  • list_jobs Jobs by status, date or crew member. read

    Returns jobs with client, scheduled date, assigned crew and status.

    MCP callcontractor_plus_read → list_jobs

    REST endpointGET https://cotlet.dev/api/v1/contractor-plus/jobs

    Parameters

    Parameters: list_jobs
    NameTypeDescription
    status string string unscheduled, scheduled, in_progress or completed.
    date_from string string ISO date.
    date_to string string ISO date.
    page integer integer Page number. Default: 1.

    Example response

    {
      "jobs": [
        {
          "job_id": "J-0742",
          "client": "Grace Lin",
          "title": "Kitchen remodel",
          "scheduled": "2026-11-16",
          "crew": [
            "Luis"
          ],
          "status": "Scheduled"
        }
      ],
      "page": 1
    }
  • create_job Creates a job, from an approved estimate or from scratch. write

    Creates the job with its lines, schedule date and crew. Your Contractor+ settings decide whether crew members get notified.

    MCP callcontractor_plus_write → create_job

    REST endpointPOST https://cotlet.dev/api/v1/contractor-plus/jobs

    Parameters

    Parameters: create_job
    NameTypeDescription
    estimate_id string string Approved estimate to copy lines from.
    client_id string string Client, when there is no estimate.
    title string required string Job title.
    scheduled string string ISO date.
    crew string[] string[] Crew member names.

    Example input

    {
      "title": "title"
    }

    Example response

    {
      "job_id": "J-0751",
      "client": "Grace Lin",
      "title": "Kitchen remodel",
      "from_estimate": "E-1188",
      "scheduled": "2026-11-16",
      "status": "Scheduled"
    }

Invoices3

An invoice is built from the completed job and stays unsent until you OK the send.

  • list_invoices Invoices by status, with balances. read

    Returns invoices with client, total, balance and status. Use status unpaid for a collections list.

    MCP callcontractor_plus_read → list_invoices

    REST endpointGET https://cotlet.dev/api/v1/contractor-plus/invoices

    Parameters

    Parameters: list_invoices
    NameTypeDescription
    status string string unpaid, overdue, paid or all. Default: all.
    page integer integer Page number. Default: 1.

    Example response

    {
      "invoices": [
        {
          "invoice_id": "INV-0915",
          "client": "Rivera Dental",
          "total": "2,150.00",
          "balance": "2,150.00",
          "due": "2026-11-02",
          "status": "Overdue"
        }
      ],
      "page": 1
    }
  • create_invoice Builds an invoice from a completed job. write

    Creates the invoice from the job lines. It stays unsent until send_invoice, so it runs at once.

    MCP callcontractor_plus_write → create_invoice

    REST endpointPOST https://cotlet.dev/api/v1/contractor-plus/jobs/{job_id}/invoices

    Parameters

    Parameters: create_invoice
    NameTypeDescription
    job_id string required string Job number from list_jobs.

    Example input

    {
      "job_id": "job_8c41d2"
    }

    Example response

    {
      "invoice_id": "INV-0921",
      "job_id": "J-0742",
      "total": "6,450.00",
      "status": "Draft"
    }
  • send_invoice Emails an invoice to the client. writeasks first

    Sends the invoice with your payment link, if you set one up, to the client's email or the addresses you pass. By default you confirm each call; you can switch that off for this tool.

    MCP callcontractor_plus_write → send_invoice

    REST endpointPOST https://cotlet.dev/api/v1/contractor-plus/invoices/{invoice_id}

    Parameters

    Parameters: send_invoice
    NameTypeDescription
    invoice_id string required string Invoice number from list_invoices.
    to string[] string[] Recipient emails. Default: the client's email.

    Example input

    {
      "invoice_id": "invoice_8c41d2"
    }

    Example response

    {
      "invoice_id": "INV-0921",
      "status": "Sent",
      "sent_to": [
        "grace@example.com"
      ],
      "total": "6,450.00"
    }
Encrypted, revocable

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

  • What we store

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

  • What your agent gets

    The 10 Contractor+ tools, never the session cookie.

  • What the session sees

    What your login sees: clients, estimates, jobs, invoices.

  • What no tool touches

    Card charges, payouts, payroll, plan and billing, deletes.

  • If Contractor+ 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 Contractor+ 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 Contractor+ changes? We repair the tool; your prompts stay the same.

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

When Contractor+ moves the Send button or renames an estimate status, we fix the tool and your agent calls it the same way. status.cotlet.dev checks the site, console and API every 3 minutes.

2 tools ask first

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

  1. 01 Reads your site notes Client, lines, quantities and prices.
  2. 02 Finds or adds the client So a repeat customer is not duplicated.
  3. 03 Creates a draft estimate And shows you the total.
  4. 04 Waits, then sends The send shows up in your Cotlet console first.
Which Contractor+ actions can be undone
ActionUndo
Create an estimate or invoiceYes, edit or delete the draft
Create a jobYes, edit or cancel it in Contractor+
Add a clientYes, edit it
Send an estimate or invoiceNo

2 of 10 tools ask first: send_estimate, send_invoice. A new client, a draft estimate, a job or a draft invoice reach no customer, so they run at once. You can turn the wait off per tool once you trust a routine.

MCP call
{
  "name": "send_estimate",
  "arguments": {
    "estimate_id": "E-1195"
  }
}
REST
curl -X POST https://cotlet.dev/api/v1/contractor-plus/estimates/E-1195 \
  -H "Authorization: Bearer $COTLET_API_KEY"
Response
{
  "estimate_id": "E-1195",
  "status": "Sent",
  "sent_to": [
    "sam@example.com"
  ]
}

A cron job or n8n flow can call the same tools over REST at /api/v1/contractor-plus 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 Contractor+ MCP server cost?

About $19 a monthfor a flooring contractor with a crew of 3, 3,260 credits. Your Contractor+ plan stays as it is.

A month of Contractor+ paperwork for a flooring contractor, in credits
JobCallsCredits
Estimate from site notes, sent4 × 251,000
Approved estimate to job2 × 12240
Finished job invoiced and sent4 × 12480
Overdue list, weekly1 × 440
Cloud Browser, 30 days1,500
Total3,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 Freedom, Pro and Pro Team

Contractor+ 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

Contractor+ MCP server on GitHub, Zapier or hosted: which to use The API and Zapier need Pro Team.

Other ways to connect Contractor+, checked 8 Nov 2026
OptionWhat it doesWhere it stops
Contractor+ Developer APIClients, estimates, jobs and invoices for your own developer.Pro Team plan; you build and host the code.
Zapier (Pro Team)Fixed workflows between Contractor+ and other apps.Pro Team plan and a Zapier plan; the workflow does what you built, not what you ask.
By handEvery screen of Contractor+, one record at a time.Your evenings.

If you are on Pro Team and have a developer, the API is cheaper for simple reads. To estimate, schedule and invoice by asking in ChatGPT or Claude on any plan, Cotlet works in the Contractor+ account you already have.

Contractor+ MCP setup on GitHub and PyPI

Prefer code? Our public repo has a ready Contractor+ MCP config for Claude Code, ChatGPT and Cursor, an agent skill and a small command-line tool. Add your Cotlet API key and your agent works in your own Contractor+ account.

cotlet-connect/contractor-plus-mcp
  • MCP config for Claude Code, Cursor and Codex
  • Agent skill and Cursor rules for Contractor+
  • Clone it and run, Python standard library only
  • Elastic License 2.0, free in your own business
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 Contractor+ tools go to contact@cotlet.dev.

Contractor+ MCP server: questions

How do I get access?

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

How do I connect Contractor+ to ChatGPT or Claude?

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

What can ChatGPT do in Contractor+?

With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Contractor+: write estimates from site visit notes; turn approved estimates into jobs; invoice completed jobs. 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 Contractor+?

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

Yes, with Cotlet. Tell ChatGPT the client and the lines and it creates the estimate as a draft, then sends it for approval after your OK.

Can ChatGPT send invoices in Contractor+?

Yes, with Cotlet. ChatGPT builds the invoice from the completed job and emails it to the client after your OK.

Can ChatGPT create jobs in Contractor+?

Yes, with Cotlet. ChatGPT turns approved estimates into jobs with a date and crew, so nothing waits for the office.

Do I need the Pro Team plan to use Contractor+ with Cotlet?

No. Cotlet works through your own Contractor+ sign-in, so it needs no API key, which Contractor+ includes only with Pro Team. It can do what your plan and login can do.

Can it charge a client's card?

No. Payments stay in Contractor+. The agent creates and sends invoices, and lists what is still unpaid.

Is the MCP server different from the REST API?

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

Is Cotlet affiliated with Contractor+?

No. Cotlet is independent and not affiliated with Contractor+.

Hand the Contractor+ paperwork to your agent.

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