Local services & SaaS
Faire
Orders, inventory, reorders and messages for wholesale brands.
12 endpoints
Leads, lead credits, reviews and service areas for Angi pros. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.
12 tools Read and write
Angi has no public API and no MCP server for pros. Its one official connection pushes each new lead as JSON to a CRM webhook, and nothing comes back the other way (checked 28 Oct 2026). Cotlet runs 12 Angi tools on your business account, hosted, over MCP for agents and REST for scripts.
| What you need | CRM webhook | Angi in ChatGPT | Cotlet |
|---|---|---|---|
| Get new leads out of Angi | Yes, pushed as they arrive | No | Yes, on a schedule |
| Read leads from before the setup | No | No | Yes |
| Message the homeowner in Angi | No | No | Yes, after your OK |
| Request a lead credit | No | No | Yes, after your OK |
| Reply to reviews, ask for reviews | No | No | Yes, after your OK |
| Works with your own AI agent | Only through your CRM | ChatGPT, homeowner side | Any MCP client |
Checked 28 Oct 2026. Sources: Angi Help: Setting Up Your CRM Integration with Angi · Angi Help: Zapier webhook for leads · Supergood: Angi API report card · Angi app in ChatGPT (GlobeNewswire)
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 Angi password, and no homeowner message, credit request, review reply or ZIP code change goes out before 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 Angi for agents. Sign up, sign in to your Angi business account in its Cloud Browser, then press Enable for agents.
Add the Cotlet address. Paste https://cotlet.dev/mcp/v1 into your agent as an MCP server or a custom connector.
Approve the connection. A chat app opens a Cotlet sign-in to approve. Editors, n8n and scripts use an API key from the console instead.
Angi uses the same https://cotlet.dev/mcp/v1 address as every other app you enable on Cotlet. If you turned Angi on after connecting, refresh the connector so it picks up the new tools.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-angi \
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-angi": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-angi]
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: angi_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: angi_write Create a Cotlet API key with access to Angi and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Angi in Cotlet and enable it for agents. Account access: Your Angi for Pros business account (an admin for billing; the same login as office.angi.com).
curl https://cotlet.dev/api/v1/angi/leads \
-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": "angi",
"tool": "list_leads",
"result": {
"leads": [
{
"lead_id": "lead_8f3a21",
"homeowner": "Dana Whitfield",
"service": "Roof repair",
"zip": "30305",
"received_at": "2026-10-27T14:05:00-04:00",
"status": "New"
},
{
"lead_id": "lead_5c91de",
"homeowner": "Luis Ortega",
"service": "Gutter installation",
"zip": "30309",
"received_at": "2026-10-27T09:40:00-04:00",
"status": "New"
}
]
}
} Returns the homeowner name, the project, the received time and the status for each lead, as the Leads tab shows them. Use get_lead for the full details of one lead.
An export in Angi covers up to 1,000 leads at a time, so ask for a date range on a long history.
limit: Maximum number of leads to return.
Lead reads expose a since filter without an end-date or cursor input.
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 | Returns the homeowner and project details of one lead, with your private notes. Use get_lead in your configured business report. |
| Make | HTTP > Make a request | Returns the homeowner reviews of your business from the Reviews tab. Use list_reviews in your configured business report. |
| Python or Node.js | REST API | Returns the ZIP codes where you receive leads, and whether each one is on. Use list_service_locations 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 Angi; 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.
Every lead in the Leads tab, old ones too, with the homeowner's phone and email. Status, notes and the star rating stay inside your business.
Returns the homeowner name, the project, the received time and the status for each lead, as the Leads tab shows them. Use get_lead for the full details of one lead. An export in Angi covers up to 1,000 leads at a time, so ask for a date range on a long history.
MCP callangi_read → list_leads
REST endpointGET https://cotlet.dev/api/v1/angi/leads
| Name | Type | Description |
|---|---|---|
| status string | string | Only leads with this status, as shown on the lead in Angi. |
| since string | string | Only leads received after this ISO date. |
| limit integer | integer | Maximum number of leads to return. |
{
"leads": [
{
"lead_id": "lead_8f3a21",
"homeowner": "Dana Whitfield",
"service": "Roof repair",
"zip": "30305",
"received_at": "2026-10-27T14:05:00-04:00",
"status": "New"
},
{
"lead_id": "lead_5c91de",
"homeowner": "Luis Ortega",
"service": "Gutter installation",
"zip": "30309",
"received_at": "2026-10-27T09:40:00-04:00",
"status": "New"
}
]
} Returns what the lead page shows: homeowner contact details, the project request, the status, your rating and your notes. Notes are private to your business and never shown to the homeowner.
MCP callangi_read → get_lead
REST endpointGET https://cotlet.dev/api/v1/angi/leads/{lead_id}
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
{
"lead_id": "lead_8c41d2"
} {
"lead_id": "lead_8f3a21",
"homeowner": "Dana Whitfield",
"phone": "555-0142",
"email": "dana@example.com",
"service": "Roof repair",
"zip": "30305",
"description": "Two missing shingles after the storm.",
"status": "New",
"rating": null,
"notes": ""
} Sends the message in Angi. The homeowner gets an SMS text notification and sees it in the Angi consumer app. It reaches a real person, so by default you confirm each call; you can switch that off for this tool.
MCP callangi_write → send_lead_message
REST endpointPOST https://cotlet.dev/api/v1/angi/leads/{lead_id}/message
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
| message string required | string | The message text. |
{
"lead_id": "lead_8f3a21",
"message": "Hi Dana, this is Mike from Summit Roofing. I can look at your roof on Thursday morning. Does 9:00 work?"
} {
"lead_id": "lead_8f3a21",
"status": "sent",
"sent_at": "2026-10-28T08:12:00-04:00"
} Changes only your own pipeline view and reaches no one. It is undone with another call, so it needs no confirmation. Returns the new status.
MCP callangi_write → set_lead_status
REST endpointPUT https://cotlet.dev/api/v1/angi/leads/{lead_id}/status
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
| status string required | string | A status offered by Angi for this lead, for example one that marks it won or lost. |
{
"lead_id": "lead_8c41d2",
"status": "status"
} {
"lead_id": "lead_8f3a21",
"status": "Contacted"
} Notes are visible only to your business, never to the homeowner. Angi uses the lead rating to improve its leads. It reaches no one and is undone with another call, so it needs no confirmation.
MCP callangi_write → add_lead_note
REST endpointPOST https://cotlet.dev/api/v1/angi/leads/{lead_id}/note
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
| note string | string | The note text. |
| rating integer | integer | Lead quality in stars, 1 to 5. |
{
"lead_id": "lead_8c41d2"
} {
"lead_id": "lead_8f3a21",
"note": "Called, wants a visit Thursday.",
"rating": 4
} Angi decides each request within 5 business days. A credit lowers future lead charges and expires after six months.
Submits the request and returns its state. Angi reviews it within 5 business days and applies an approved credit to future lead charges; credits expire six months after issue. Angi considers a lead only if it is under 45 days old, you called the homeowner within 24 hours, your account has no overdue balance and you have no annual subscription. By default you confirm each call; you can switch that off for this tool.
MCP callangi_write → request_lead_credit
REST endpointPOST https://cotlet.dev/api/v1/angi/leads/{lead_id}/credit/request
| Name | Type | Description |
|---|---|---|
| lead_id string required | string | Lead ID from list_leads. |
| reason string required | string | One of invalid_contact_info, wrong_location, service_mismatch, duplicate_lead, paused_leads. |
| details string | string | Extra details for Angi. |
{
"lead_id": "lead_8c41d2",
"reason": "reason"
} {
"lead_id": "lead_5c91de",
"reason": "invalid_contact_info",
"state": "submitted",
"review_within": "5 business days"
} Angi holds each reply as pending until its team checks it. Google reviews imported into Angi show in the same list.
Returns the reviewer, the text, the date and whether you have replied. Angi shows a reply as pending until its team has reviewed it. Reviews imported from Google appear in the same tab.
MCP callangi_read → list_reviews
REST endpointGET https://cotlet.dev/api/v1/angi/reviews
| Name | Type | Description |
|---|---|---|
| unanswered boolean | boolean | Only reviews you have not replied to. |
| limit integer | integer | Maximum number of reviews to return. |
{
"reviews": [
{
"review_id": "rev_1a77",
"reviewer": "Karen Lowe",
"text": "On time and tidy, would hire again.",
"date": "2026-10-22",
"replied": false
},
{
"review_id": "rev_1a52",
"reviewer": "Tom Reyes",
"text": "The quote changed after the visit.",
"date": "2026-10-15",
"replied": true
}
]
} Saves the comment the way Add a Comment does in Angi. The reply may show as pending until a member of the Angi team reviews it, then it goes live for everyone. By default you confirm each call; you can switch that off for this tool.
MCP callangi_write → reply_to_review
REST endpointPOST https://cotlet.dev/api/v1/angi/reviews/{review_id}/replies
| Name | Type | Description |
|---|---|---|
| review_id string required | string | Review ID from list_reviews. |
| comment string required | string | Your reply text. |
{
"review_id": "review_8c41d2",
"comment": "comment"
} {
"review_id": "rev_1a77",
"status": "pending"
} Sends the request the way Request reviews does in Angi. Angi caps the requests per homeowner and does not publish the number, so a call can be refused. By default you confirm each call; you can switch that off for this tool.
MCP callangi_write → request_homeowner_review
REST endpointPOST https://cotlet.dev/api/v1/angi/homeowner-review/request
| Name | Type | Description |
|---|---|---|
| lead_id string | string | Lead ID from list_leads. Use this or email. |
| email string | string | Homeowner email for a customer who did not come through Angi. |
| name string | string | Homeowner name, used with email. |
{
"lead_id": "lead_8f3a21",
"status": "sent"
} ZIP codes only. A change applies overnight; tasks and annual plans change only by phone with Angi.
Returns the ZIP codes of the Service locations page, each switched on or off. Your tasks (services offered) are read-only here: Angi changes them only by phone.
MCP callangi_read → list_service_locations
REST endpointGET https://cotlet.dev/api/v1/angi/service-locations
No parameters.
{
"locations": [
{
"zip": "30305",
"enabled": true
},
{
"zip": "30309",
"enabled": true
},
{
"zip": "30318",
"enabled": false
}
]
} Changes where Angi sends you paid leads. Angi applies the change overnight. With an annual subscription or multiple service locations, Angi allows the change only by phone and the call fails. By default you confirm each call; you can switch that off for this tool.
MCP callangi_write → update_service_location
REST endpointPATCH https://cotlet.dev/api/v1/angi/service-location
| Name | Type | Description |
|---|---|---|
| zip string required | string | ZIP code from list_service_locations. |
| enabled boolean required | boolean | true to receive leads there, false to stop. |
{
"zip": "zip",
"enabled": true
} {
"zip": "30318",
"enabled": true,
"applies": "overnight"
} Charges and payments as an admin of the business account sees them.
Returns recent charges and payments, plus the package type and the last payment. The signed-in user must be an admin of the business account, otherwise Angi hides the page and the call fails.
MCP callangi_read → list_billing_statements
REST endpointGET https://cotlet.dev/api/v1/angi/billing-statements
| Name | Type | Description |
|---|---|---|
| limit integer | integer | Maximum number of entries to return. |
{
"package": "Pay per lead",
"last_payment": {
"date": "2026-10-20",
"amount": 118,
"currency": "USD"
},
"statements": [
{
"date": "2026-10-20",
"type": "payment",
"amount": 118
},
{
"date": "2026-10-18",
"type": "charge",
"amount": 59
},
{
"date": "2026-10-14",
"type": "charge",
"amount": 59
}
]
} Your signed-in Angi browser profile, AES-256-GCM, in Finland. Never the password.
The 12 Angi tools, nothing else. No cookie, no login.
Leads with homeowner contact details, messages, reviews, ZIP codes and, for admins, billing.
Payment method, monthly budget, contract, tasks, profile and password.
Your agent gets a link, and you sign in again yourself.
Disable for agents, reset the browser or delete the key. The next call fails.
cotlet.dev rates A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). There is no SOC 2 report or outside pentest yet.
"You agree not to copy/collect Angi content via robots, spiders, scripts, scrapers, crawlers, or any automated or manual equivalent (e.g., by hand)."
The same agreement lets Angi suspend you or end your place in the network "at any time for any reason or no reason at all". The CRM webhook is the one route the agreement names, and auto-responders such as LeadTruffle ride on it. Cotlet works in your login instead, without consent from Angi, so the risk sits with your account. We found no public case of a pro account closed for automation (checked 28 Oct 2026).
Angi shares most leads with several pros, so speed matters, but write each message for the job. A homeowner who gets the same pasted text from you twice will not hire you either.
The tools work on office.angi.com, the web side of Angi for Pros. When a lead page or the credit form there changes, we update the tool and its name stays the same for your agent. status.cotlet.dev checks the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Message a homeowner | No; they get a text at once |
| Request a lead credit | No tool withdraws it; Angi reviews it |
| Reply to a review | No edit tool; public once Angi approves it |
| Request a homeowner review | No; Angi limits repeats |
| Turn a ZIP code on or off | Yes, switch it back; both apply overnight |
| Set lead status, add a note | Yes, set it again; only your business sees it |
5 of 12 tools ask first. Status and notes run without asking, since nobody outside your business sees them; so do the 5 reads. Turn the wait off per tool for a scheduled run, such as a first message to every lead at 6:30.
Turning ZIP codes off is the fastest way to stop paid leads, but it takes effect overnight. Leads that arrive before then are still charged.
{
"name": "send_lead_message",
"arguments": {
"lead_id": "lead_8f3a21",
"message": "Hi Dana, this is Mike from Summit Roofing. I can look at your roof on Thursday morning. Does 9:00 work?"
}
} curl -X POST https://cotlet.dev/api/v1/angi/leads/lead_8f3a21/message \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message":"Hi Dana, this is Mike from Summit Roofing. I can look at your roof on Thursday morning. Does 9:00 work?"}' {
"lead_id": "lead_8f3a21",
"status": "sent",
"sent_at": "2026-10-28T08:12:00-04:00"
} Scripts and cron jobs reach the same tools over REST at /api/v1/angi, with the same key and price. A message to a lead Angi has closed fails and costs nothing. Each tool's REST path is in the tools table.
About $19 a monthfor a pro with about 30 Angi leads a month, 3,360 credits. Lead charges and the membership stay with Angi.
| Job | Calls | Credits |
|---|---|---|
| Check for new leads, twice each weekday | 1 × 44 | 440 |
| Read and message each new lead | 2 × 30 | 600 |
| Set the status after first contact | 1 × 30 | 300 |
| Note and star rating after the call | 1 × 20 | 200 |
| Weekly sweep for leads that qualify for credit | 3 × 4 | 120 |
| Request a lead credit | 1 × 4 | 40 |
| Reply to new reviews, weekly | 2 × 4 | 80 |
| Ask a finished customer for a review | 1 × 6 | 60 |
| Lead spend report, monthly | 2 × 1 | 20 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 3,360 |
The month is our example. Angi publishes no lead counts or prices; contractors report $15 to $85 a lead and $300 to $2,500 of spend a month. One credit approved on a $60 lead pays for about three months of the agent. 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 |
|---|---|---|
| chrischall/angi-mcp | Finds pros by trade and city and reads their ratings and reviews, through your own angi.com tab and a browser extension. | Homeowner side, read only, no Angi account. 0 stars, MIT, last commit 26 Oct 2026. |
| piprads/angi-mcp, markswendsen-code/mcp-angi | A homeowner demo (search pros, advice, quote request) and a connector with no README. | Neither opens a pro's leads. 0 stars each, last commits Feb and Jun 2026. |
| Apify Angi scrapers | Public pro listings, phones and reviews, some also as MCP through Apify. | Other businesses' public pages, not your account; from $0.80 per 1,000 results. |
| LeadTruffle, Smith.ai | AI texts, emails or calls to new Angi leads, fed by the CRM webhook. | They reply outside Angi and cannot touch credits or reviews; LeadTruffle quotes after a demo. |
| Jobber, ServiceTitan, DripJobs | Copy new Angi leads into your field service app. | One way; status, messages and credits stay in Angi. |
If all you need is new leads in your CRM and a quick text from it, the webhook and an auto-responder stay inside what Angi allows. If your agent should also message in Angi, chase lead credits, answer reviews and switch ZIP codes, no other tool reaches those, and Cotlet does it in your own login.
Cotlet is built by 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). Write to contact@cotlet.dev with questions about the Angi tools.
Create a free account at https://cotlet.dev, choose Angi under Integrations in the console and sign in to your Angi business account in its Cloud Browser. The trial starts right away, with no card.
Sign up at cotlet.dev, log in to Angi 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 Angi account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Angi: reply to new leads fast; request credit for invalid leads; reply to new reviews. You ask in plain words, and anything that reaches other people waits for your OK first.
Angi credits a lead only after a review. The lead must be under 45 days old, you must have called the homeowner within 24 hours, your account needs no overdue balance and you cannot have an annual subscription. The reasons Angi lists are invalid contact info, wrong location, service mismatch, duplicate lead and paused leads. A homeowner who never answers or hired someone else does not qualify (Angi Help: How to Request a Lead Credit).
No. Angi lets you switch ZIP codes on or off yourself, but tasks (services offered) change only by calling Angi Customer Care, and licensed tasks need license verification (Angi Help: How to View & Update Service Locations & Tasks).
No. It answers homeowners' project questions and sends them to Angi to request a pro. It has no access to a business account, its leads or its reviews.
Yes. The feed keeps pushing new leads to your CRM, and the agent works on the same leads in Angi: messages, status, credits and reviews. Neither gets in the other's way.
Only in how you call it. Both give the same 12 tools with the same inputs and results, one API key and one price. Agents use MCP; scripts and cron jobs use REST.
No. Cotlet is independent and not affiliated with Angi Inc. or HomeAdvisor, Inc.
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