MCP tools reference

Thumbtack MCP tools

12 tools for Thumbtack on the Cotlet MCP server. Your agent picks them from tools/list.

MCP server
https://cotlet.dev/mcp/v1
Connects with
Your own Thumbtack pro account
Integration page
Thumbtack
Thumbtack Endpoints
Endpoint Access Description
thumbtack_list_leads read Leads from your Jobs page, newest first, with service, location and whether you replied.
thumbtack_get_lead read Full lead: the customer's answers to the job questions, location and timing.
thumbtack_list_messages read Conversation with the customer on a lead, oldest first, with estimates you sent.
thumbtack_list_opportunities read Open Opportunities you can quote, with the cost shown upfront and when each closes.
thumbtack_list_reviews read Reviews on your profile with rating, text, date and your response if any.
thumbtack_get_budget read Your weekly lead budget and what you have spent against it so far this week.
thumbtack_reply_to_lead write Send your first message to a lead. The conversation moves to your Messages.
thumbtack_send_message write Send a message in an existing conversation with a customer.
thumbtack_reach_out_to_opportunity write Message an Opportunity with an optional quote. You are charged only if the customer responds.
thumbtack_send_estimate write Send an estimate in the conversation with line items, discount and tax.
thumbtack_reply_to_review write Post your public response under a review. Responses cannot be edited.
thumbtack_set_weekly_budget write Set the most you spend on leads in a week.

List leads

read

MCP tool thumbtack_list_leads

Lists leads in your Thumbtack pro account, newest first, including older leads that a webhook would never have sent. Filter by creation date to see what came in since your last check. Pass next_cursor back as cursor for the next page. Use get_lead for the customer's full answers.

Parameters

Parameters: list_leads
NameTypeDescription
since date Only leads created on or after this date.
unreplied_only boolean Only leads you have not replied to.
limit integer 1 to 100. Default: 25.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_list_leads",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "leads": [
      {
        "lead_id": "519153480500518912",
        "customer": "Dana R.",
        "service": "Kitchen Remodel",
        "location": "Austin, TX",
        "created_at": "2026-10-11T07:42:00-05:00",
        "replied": false
      }
    ],
    "next_cursor": "eyJvZmZzZXQiOjI1fQ"
  },
  "isError": false
}

Get lead

read

MCP tool thumbtack_get_lead

Returns one lead with the customer's answers to the job questions, the job location and when they want the work done. Read it before replying so the message refers to the actual job.

Parameters

Parameters: get_lead
NameTypeDescription
lead_id required string Lead ID from list_leads.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_get_lead",
    "arguments": {
      "lead_id": "lead_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "lead_id": "519153480500518912",
    "customer": "Dana R.",
    "service": "Kitchen Remodel",
    "location": "Austin, TX",
    "created_at": "2026-10-11T07:42:00-05:00",
    "answers": [
      {
        "question": "What type of project is this?",
        "answer": "Full remodel"
      },
      {
        "question": "When do you want to start?",
        "answer": "Within 2 weeks"
      }
    ],
    "replied": false
  },
  "isError": false
}

MCP tool thumbtack_list_messages

Returns the messages of one conversation, oldest first, so the agent reads the thread in order before answering or pricing. Estimates you sent appear in the thread.

Parameters

Parameters: list_messages
NameTypeDescription
lead_id required string Lead ID from list_leads.
limit integer 1 to 200. Default: 50.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_list_messages",
    "arguments": {
      "lead_id": "lead_8c41d2"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "lead_id": "519153480500518912",
    "messages": [
      {
        "from": "customer",
        "body": "Can you start the week of Oct 20?",
        "sent_at": "2026-10-11T08:05:00-05:00"
      },
      {
        "from": "you",
        "body": "Yes, I have an opening that week.",
        "sent_at": "2026-10-11T08:20:00-05:00"
      }
    ]
  },
  "isError": false
}

MCP tool thumbtack_list_opportunities

Lists Opportunities open to you, with the cost Thumbtack shows before you reach out. Thumbtack charges that cost only if you reach out and the customer responds. An Opportunity closes to quotes after 48 hours, once five pros have shown interest, or if the customer cancels; closes_at is the 48 hour mark.

Parameters

Parameters: list_opportunities
NameTypeDescription
service string Only Opportunities for this service, e.g. Deck Repair.
limit integer 1 to 50. Default: 25.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_list_opportunities",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "opportunities": [
      {
        "opportunity_id": "opp_30418",
        "customer": "Dana R.",
        "service": "Deck Repair",
        "location": "Austin, TX",
        "cost": 19,
        "closes_at": "2026-10-13T09:10:00-05:00"
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

MCP tool thumbtack_list_reviews

Lists reviews on your pro profile, newest first, with rating, text and your response if you wrote one. Set unanswered_only to see the reviews that still need a reply. Use review_id with reply_to_review.

Parameters

Parameters: list_reviews
NameTypeDescription
unanswered_only boolean Skip reviews you already responded to.
limit integer 1 to 100. Default: 25.
cursor string Next page cursor from the previous call.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_list_reviews",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "reviews": [
      {
        "review_id": "rev_8841",
        "rating": 5,
        "author": "Maria S.",
        "text": "Fixed our leaking sink in an hour. Great communication.",
        "created_at": "2026-10-08T16:30:00-05:00",
        "response": null
      }
    ],
    "next_cursor": null
  },
  "isError": false
}

Get budget

read

MCP tool thumbtack_get_budget

Returns your weekly budget, the spend so far this week and the day it resets. The weekly budget limits spend on leads; Opportunities are paid separately and are not counted against it.

Parameters

No parameters.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_get_budget",
    "arguments": {}
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "weekly_budget": 300,
    "spent_this_week": 112,
    "resets": "Monday"
  },
  "isError": false
}

Reply to lead

write Confirm

MCP tool thumbtack_reply_to_lead

Sends your first message to one lead, with optional photos or files by URL. The customer sees it right away and the conversation then lives in your Messages. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: reply_to_lead
NameTypeDescription
lead_id required string Lead ID from list_leads.
body required string Message text.
attachment_urls string[] Photos or files to attach, by URL.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_reply_to_lead",
    "arguments": {
      "lead_id": "519153480500518912",
      "body": "Hi! Thanks for reaching out about your kitchen remodel. Could you send a few photos of the space?"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "lead_id": "519153480500518912",
    "message_id": "msg_7f3a91c2",
    "status": "sent",
    "sent_at": "2026-10-11T09:14:00-05:00"
  },
  "isError": false
}

Send message

write Confirm

MCP tool thumbtack_send_message

Adds a message to a conversation that already exists, with optional photos or files by URL. The customer sees it right away. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_message
NameTypeDescription
lead_id required string Lead ID from list_leads.
body required string Message text.
attachment_urls string[] Photos or files to attach, by URL.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_send_message",
    "arguments": {
      "lead_id": "lead_8c41d2",
      "body": "body"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "lead_id": "519153480500518912",
    "message_id": "msg_7f3a91d8",
    "status": "sent",
    "sent_at": "2026-10-11T09:30:00-05:00"
  },
  "isError": false
}

Reach out to Opportunity

write Confirm

MCP tool thumbtack_reach_out_to_opportunity

Reaches out to one Opportunity with a message and an optional quote price. Thumbtack charges the cost shown in list_opportunities only if the customer responds, using your payment method, not your weekly budget. Fails if the Opportunity has closed. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: reach_out_to_opportunity
NameTypeDescription
opportunity_id required string Opportunity ID from list_opportunities.
body required string Message text.
quote_price integer Quote in whole currency units of your account, if you want to include one.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_reach_out_to_opportunity",
    "arguments": {
      "opportunity_id": "opp_30418",
      "body": "Hi Dana, I can replace the damaged deck boards this week. My price is $150 for the repair, materials included.",
      "quote_price": 150
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "opportunity_id": "opp_30418",
    "lead_id": "519153480500518977",
    "status": "sent",
    "quote_price": 150,
    "cost_if_customer_responds": 19
  },
  "isError": false
}

Send estimate

write Confirm

MCP tool thumbtack_send_estimate

Sends an estimate in the lead's conversation with custom line items, an optional discount, tax and a message to the customer. The total is computed from the line items. Thumbtack cannot cancel a sent estimate; send a new one to correct it. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: send_estimate
NameTypeDescription
lead_id required string Lead ID from list_leads.
line_items required object[] List of { name, unit, quantity, unit_price }.
discount object { type: percent or amount, value }.
tax_percent number Tax rate in percent.
message string Note to the customer.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_send_estimate",
    "arguments": {
      "lead_id": "519153480500518912",
      "line_items": [
        {
          "name": "Bedroom painting, walls",
          "unit": "room",
          "quantity": 2,
          "unit_price": 450
        },
        {
          "name": "Ceiling painting",
          "unit": "ceiling",
          "quantity": 2,
          "unit_price": 120
        }
      ],
      "discount": {
        "type": "percent",
        "value": 10
      },
      "tax_percent": 8.25,
      "message": "Includes paint and two coats. Start date as discussed."
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "lead_id": "519153480500518912",
    "estimate_id": "est_5521",
    "status": "sent",
    "subtotal": 900,
    "discount": 90,
    "total": 810
  },
  "isError": false
}

Reply to review

write Confirm

MCP tool thumbtack_reply_to_review

Posts your public response under one review, under your business name. Thumbtack does not let you edit a response once it is submitted. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: reply_to_review
NameTypeDescription
review_id required string Review ID from list_reviews.
body required string Response text.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_reply_to_review",
    "arguments": {
      "review_id": "review_8c41d2",
      "body": "body"
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "review_id": "rev_8841",
    "status": "published"
  },
  "isError": false
}

Set weekly budget

write Confirm

MCP tool thumbtack_set_weekly_budget

Sets your weekly lead budget. Once the budget is reached, new leads stop until it resets the following Monday. Opportunities are paid separately. By default you confirm each call; you can switch that off for this tool.

Parameters

Parameters: set_weekly_budget
NameTypeDescription
amount required integer Weekly budget in whole currency units of your account.

tools/call

JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "thumbtack_set_weekly_budget",
    "arguments": {
      "amount": 1
    }
  }
}

Example response

{
  "content": [
    {
      "type": "text",
      "text": "{ ... same JSON as structuredContent ... }"
    }
  ],
  "structuredContent": {
    "weekly_budget": 200,
    "previous_weekly_budget": 300,
    "spent_this_week": 112
  },
  "isError": false
}