angi-mcp
angi-mcp lets you find Angi home-service pros, read their profiles and reviews, and access your own Angi account data through a browser-bridge MCP server.
Search pros by trade slug, state, and city slug with ratings, review counts, years in business, service area, and amenities; paginated at 10 per page.
Fetch a single pro's full profile and ratings breakdown.
Fetch reviews for a pro, filterable by rating, including text, reported cost, date, categories, and the pro's response.
List all Angi trade slugs (~312) and cities per trade directly from public sitemaps without the browser bridge.
Resolve free-text trades and cities to the required slugs before searching.
Run a healthcheck to diagnose the ContextMint Bridge connection.
If signed in to Angi, get your account info, list your projects (open/closed), and list reviews you've written plus pros awaiting your rating.
Choose
view: "compact"(default) orview: "full"for search, pro, and review responses.Note limits: no zip-code filtering, account record shapes unverified, and it cannot be hosted remotely; it requires a signed-in
angi.comtab via the ContextMint Bridge extension.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@angi-mcp Find highly rated plumbers in Charlotte"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
angi-mcp
MCP server for Angi (formerly Angie's List) — find home-service pros by trade and city, and read their ratings, profiles and reviews.
Angi serves its pages only to a real browser, so requests route through the
user's own angi.com tab via the ContextMint Bridge
browser extension (fetchproxy protocol), reusing their existing session. The trade/city taxonomy is
read directly from Angi's public sitemaps and needs no browser at all.
No Angi account or credentials are required. Everything this server reads is public.
This project was developed and is maintained by AI (Claude). Use at your own discretion.
Install
npm install -g @chrischall/angi-mcpRegister it with your MCP host:
{
"mcpServers": {
"angi": { "command": "angi-mcp" }
}
}You also need the ContextMint Bridge browser extension, with an open
angi.com tab and its site access allowing angi.com. Install it from the
ContextMint Bridge releases:
unzip the Chrome build and load it via chrome://extensions → Load
unpacked. Safari isn't available yet (it will ship inside the ContextMint app,
which has no public download), so use Chrome for now. On the first request the
extension shows a pairing code to approve; the trust then persists.
ContextMint Bridge is the fetchproxy browser extension under its new name, from
the same maintainer — fetchproxy's own README
(https://github.com/chrischall/fetchproxy#extension) points to it. Its source is
public at https://github.com/nullnet-app/contextmint-bridge: build it yourself,
or check a release zip against the .sha256 file published beside it
(shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).
Run angi_healthcheck to confirm the bridge is connected.
Related MCP server: Kolmo Construction
Tools
Tool | What it does |
| Pros for a trade in a US city, with ratings, review counts, years in business, service area, amenities. 10 per page. |
| One pro's full profile and ratings breakdown. |
| Reviews on a pro's profile — rating, text, reported cost, date, categories, the pro's response. Filterable by rating. |
| Every trade slug Angi publishes (~312). No bridge needed. |
| Cities Angi publishes pages for, per trade. No bridge needed. |
| Bridge connection state. |
Signed-in tools (need the browser tab signed in to Angi):
Tool | What it does |
| Your name, email and open/closed project counts. |
| Your Angi projects, open and closed. |
| Reviews you've written, plus pros awaiting a rating. |
Searches take slugs, not free text — resolve them first:
angi_list_trades { contains: "duct" } -> "air-duct-cleaning"
angi_list_cities { trade: "plumbing", state: "nc", contains: "char" }
angi_search_pros { trade: "plumbing", state: "nc", city: "charlotte" }angi_search_pros, angi_get_pro and angi_get_reviews answer in the slim
view: "compact" projection by default; pass view: "full" for Angi's whole
~1KB records. (The old compact boolean still works as a deprecated alias and
will be removed in a later release.)
Ratings
Each pro carries two overall ratings and they differ on purpose:
rating(averageRatings.OVERALL) — unrounded. Rank on this.displayRating(averageOverallRating) — the rounded value Angi shows.
Per-dimension ratings (quality, value, punctuality, professionalism, responsiveness) come through in the full record.
isSponsored: true marks paid placement, not a quality signal.
Limits
No zip-code filtering. Angi's
?zip=parameter is inert — a Charlotte URL returns Charlotte pros regardless. Location comes from the city slug.Account record shapes are unverified. The account used to map
my.angi.comheld zero projects and zero reviews, so only the envelopes were observed.angi_list_my_projectsandangi_list_my_reviewsreturn records raw and setrecordFieldsVerified: falserather than projecting onto field names nobody has seen. Seedocs/ANGI-API.md.The inbox is not readable. Angi's messages run on the Twilio Conversations SDK; the proxy endpoints reject the session cookie alone (401), so messages need the Twilio client rather than an HTTP GET.
Cannot be hosted remotely. Like every browser-bridge server in this fleet, it needs a signed-in tab on the machine it runs on, so it cannot be served to claude.ai from mcp-host.
Without the MCP
skills/angi-fpx/ is a shell-out skill that reads the same data with the fpx
CLI and no running server — useful in scripts or on a machine where the MCP
isn't installed.
Development
npm install
npm run build # tsc --noEmit + esbuild bundle
npm testdocs/ANGI-API.md records the live-captured request/response shapes, including
the verified negative results. Read it before changing src/parse.ts.
License
MIT
Available Tools
9 toolsangi_get_accountARead-onlyIdempotent
The signed-in Angi user: first name, email address, user/entity ids, unread message count, and how many open and closed projects they have. Requires the browser tab to be signed in.
Inputs: no named parameters.
angi_get_proARead-onlyIdempotent
Read one Angi pro's full profile: business details, service area, hours, amenities, awards, tasks offered, contact address, and the ratings breakdown. Also reports how many reviews the page carries (fetch them with angi_get_reviews).
Inputs: profileUrl (required), view, compact.
angi_get_reviewsARead-onlyIdempotent
Read the reviews on an Angi pro's profile page: rating, body text, reported job cost, date, service categories, verification flag, and the pro's public response where one exists. Filter by rating to isolate complaints or praise.
Inputs: profileUrl (required), view, limit, compact, +2 more.
angi_healthcheckVerify the ContextMint Bridge connection end-to-endARead-onlyIdempotent
Round-trips a small public www.angi.com URL (/robots.txt) through ContextMint Bridge (your signed-in browser tab) and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'this browser can't serve a capability' from 'real www.angi.com-side problem'. Read-only, no auth required. Call this when a real tool fails and you want to know which hop broke.
Inputs: no named parameters.
angi_list_citiesARead-onlyIdempotent
List every US state/city that Angi publishes pages for, for one trade. Use it to confirm a city slug exists before searching, or to discover nearby cities. Reads Angi's public sitemap directly — no browser bridge required.
Inputs: trade (required), state, contains.
angi_list_my_projectsARead-onlyIdempotent
The signed-in user's Angi projects (service requests and bookings), open and closed. Records are returned exactly as Angi sends them — the response sets recordFieldsVerified: false because no populated project has been observed yet, so field names should be read from the data rather than assumed.
Inputs: status.
angi_list_my_reviewsARead-onlyIdempotent
Reviews the signed-in user has written, plus pros Angi is prompting them to rate (unratedPros). Same caveat as projects: records pass through raw and the response sets recordFieldsVerified: false.
Inputs: no named parameters.
angi_list_tradesARead-onlyIdempotent
List every trade slug Angi publishes (~312, e.g. "plumbing", "air-duct-cleaning", "basement-waterproofing"). Call this to resolve a free-text trade to the slug angi_search_pros needs. Reads Angi's public sitemap directly — no browser bridge required.
Inputs: contains.
angi_search_prosARead-onlyIdempotent
Find home-service pros on Angi for a trade in a US city. Returns each pro with ratings (overall plus per-dimension: quality, value, punctuality, professionalism, responsiveness), review count, percent-recommended, years in business, service area and amenities. trade and city are Angi slugs — resolve them with angi_list_trades and angi_list_cities first. 10 pros per page; use page to walk further. Note Angi has no zip-code filter: location comes from the city slug only.
Inputs: city (required), state (required), trade (required), page, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool targets a distinct resource+action: list_trades/list_cities resolve slugs, search_pros finds pros, get_pro/get_reviews read one pro, list_my_reviews/list_my_projects read the signed-in user's data, get_account reads identity, and healthcheck diagnoses hops. The potentially confusable pair (list_my_reviews vs get_reviews) is clearly separated by 'signed-in user's own reviews' vs 'reviews on a pro's page'. No two tools appear to do the same thing.
Uniform angi_ prefix with consistent snake_case verb_noun structure (list_, get_, search_) throughout. The one-word healthcheck is a trivial deviation and still fits the prefix pattern.
Nine tools is well-scoped for a read-oriented Angi browsing server, with each tool earning its place (slug resolvers, search/get pairs, user data, diagnostics). No redundant or filler tools.
Covers the core read surface (search pros, pro detail, reviews, trades, cities, account, projects) but has notable gaps: no way to read the messages whose unread count is reported, and no create/submit operation for service requests or projects despite listing them. Read-only design is coherent, but the lifecycle is incomplete.
Maintenance
Related MCP Connectors
ProxyLink MCP server for finding and booking home service professionals
Search 33,000+ MCP servers by job, see safety grades and reviews, and call them from one endpoint.
MCP server for Muovi, Argentina's trust-first local services marketplace: find pros, draft tasks.
Search, vet & assemble MCP servers from your agent: verified tools, risk labels, and trust scores.
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for searching marketplaces (TCGPlayer, Reverb, Thumbtack), verifying professional licenses (contractor, nurse), and looking up PSA card grading data. Returns real-time pricing, listings, and verification results.2284 npm6MIT
- AlicenseAqualityBmaintenanceMCP server providing 12 tools for Seattle-area home remodeling: real-time cost estimation across 8 project types, contractor business info, project portfolio, blog content, and quote submission. Connects via Streamable HTTP — no auth required.36MIT
- AlicenseAqualityCmaintenanceMCP server for Muovi, Argentina's local services marketplace. Enables discovery of verified service professionals, browsing services and cities, reading reviews, and generating deep-links for task creation.6105 npm1MIT
- AlicenseAqualityBmaintenanceMCP server for the Housecall Pro API, letting AI assistants read and write Housecall Pro data—customers, jobs, invoices, estimates, scheduling, and more—through natural language.4152 npmMIT