Search Untappd beers, breweries, and venues; read user profiles, check-ins, wishlists, distinct beers, badges, friends, and your friend activity feed; and post check-ins, toasts, and comments to your own Untappd account. Use when the user asks about beer ratings, what a beer or brewery is like on Untappd, someone's Untappd check-ins or wishlist, or wants to log/toast/comment on a beer.
浏览器
thumbtack-mcp
试用Query thumbtack.com from a shell — search local service pros by trade and zip, and read pro profiles with ratings, reviews, credentials, business hours and pricing. Uses plain curl against Thumbtack's SSR pages and its anonymous GraphQL endpoint; no API key, no login, no browser extension. Use when you want Thumbtack data without an MCP server, in a script, or one-shot.
它能做什么
Query thumbtack.com from a shell — search local service pros by trade and zip, and read pro profiles with ratings, reviews, credentials, business hours and pricing. Uses plain curl against Thumbtack's SSR pages and its anonymous GraphQL endpoint; no API key, no login, no browser extension. Use when you want Thumbtack data without an MCP server, in a script, or one-shot.
技能文档
Thumbtack access (curl)
Thumbtack's consumer surface is reachable server-side with plain curl —
no bot wall, no key, no session. Everything in this skill is anonymous.
Three surfaces, all verified:
- Search pages —
www.thumbtack.com/k//near-me?zip_code=. Results are embedded as JSON in__NEXT_DATA__. - Pro profile pages — carry
window.__APOLLO_STATE__(a bare JS assignment, needs brace-matching) plus a cleanld+jsonbusiness node. - GraphQL —
app.thumbtack.com/graphqlaccepts ad-hoc anonymous queries. Introspection is off, so field names come from an Apollo dump.
Setup
None. curl, jq and node (for the bundled extractor) are all you need.
TT=~/.claude/skills/thumbtack/tt-extract.mjs # adjust to wherever this skill lives
UA='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36'
Send the browser User-Agent. Requests work without it, but match the browser.
Core calls
Search pros — -L is mandatory (see the resolve rule below):
curl -sSL -A "$UA" "https://www.thumbtack.com/k/house-cleaning/near-me?zip_code=28203" \
| node "$TT" next \
| jq '.props.pageProps.frontDoorPage.proListSection.proListResults'
Read a pro profile — the ld+json path is simplest:
curl -sSL -A "$UA" "" | node "$TT" ldjson | jq '.["@graph"][0]'
For credentials, business hours, payment methods and specialties use
node "$TT" apollo instead — those live only in the Apollo store.
The extractor takes one mode: next | apollo | ldjson. It reads HTML on
stdin, writes JSON on stdout, and exits 3 if that store isn't on the page.
Ready-to-run projections and jq recipes: references/discovery.md.
Read it before composing a call — the per-store field paths are all there.
Rules
- Resolve the slug first. Loose service names redirect to a canonical
slug (
/k/plumbing/…→/k/plumbers/…). Always pass-L, and take the canonical slug from the final URL (-w '%{url_effective}') rather than assuming your guess was right. - Pick the store by page type. Search pages have
__NEXT_DATA__and no Apollo state; profile pages have Apollo state andld+jsonand no__NEXT_DATA__. Using the wrong mode exits3. jqalone cannot read a profile page.__APOLLO_STATE__is a barewindow.x = {…}assignment, not a script tag — that is what the bundled extractor's brace-matcher is for. Don't try to regex it.- Address the Apollo payload by key prefix, never by literal key: it is
servicePage({...the entire input json...})and changes per page..ROOT_QUERY | to_entries | map(select(.key|startswith("servicePage")))[0].value - Never filter JSON-LD on
@type == "LocalBusiness". Thumbtack uses the trade-specific schema.org subtype — a plumber's node is"@type":"Plumber", an electrician's is"Electrician". Take@graph[0], or match by shape (anameplus anaggregateRating/address). - GraphQL answers HTTP 200 with an
errors[]body. Check.errors, not the status code. servicePageneeds its full input object. A partial input returnsbadRequesteven when the query validates. Lift the whole input from the page's own Apollo key.- Search returns 10 results and no cursor. Deeper paging needs GraphQL.
- Shapes vary by category.
priceInfois a union — a pro may returnServicePagePriceSubsectionNoPrice("Contact for price") instead of a number. Handle the absent case; don't assume a price exists. - Read-only. Nothing here writes, books, or contacts a pro.
What this skill does NOT cover
- Your own Thumbtack account (projects, messages, quotes). The login is reCAPTCHA-gated, so there is no server-side password login — that surface needs the browser bridge and is not part of this skill.
- The Partner Platform API (
developers.thumbtack.com). Real, documented, and gated behind partner credentials via "Request Access" — a seller surface, not a consumer one.
相关技能
Read a Housecall Pro estimate or invoice your contractor sent you — line items, totals, tax, what is still owed, the company behind it — from a shell with plain curl, instead of running the housecallpro-mcp server. Use when you want the data without the MCP, in a script, or on a machine where the MCP isn't installed. Covers declining an option, and why approving cannot be scripted.
Read your Jobber Client Hub — the customer portal a service business (pest control, lawn care, HVAC, cleaning) uses to send you appointments, quotes and invoices — from a shell with the fpx CLI (@fetchproxy/cli), instead of running the jobber-mcp server. Use when you want your Jobber data without the MCP, in a script, or on a machine where the MCP isn't installed.
Read angi.com (US home-services directory) from a shell with the fpx CLI (@fetchproxy/cli) instead of running the angi-mcp server — find pros by trade and city, read a pro's profile, ratings breakdown and reviews, and list the trade/city taxonomy. Use when you want Angi data without the MCP, in a script, or on a machine where the MCP isn't installed.
Provision a YG3 marketing workspace and call 200+ MCP tools for content, SEO, sites, outbound, LinkedIn, and ads. No human signup required.
Discover restaurants on Tock (exploretock.com) via MCP — list cities, search a metro, and get a venue's details plus its bookable experiences, prices, party sizes, and open dates/times. Triggers on phrases like "search Tock for", "what's on Tock in Chicago", "find a Tock reservation at", "does Alinea have availability on Tock", "what experiences does <venue> offer on Tock", or "my Tock reservations". Requires tock-mcp installed and the fetchproxy browser extension running in a signed-in exploretock.com tab.