For AI assistants and developers
CityPreferred connects a person with one local service company for a specific job, at a home or a business. If you are an assistant helping someone with that, everything here is readable without a key. The one thing you cannot do is send a request for them: the person does that, because that is where they agree to be contacted.
Reviewed September 30, 2026
Get a local company for the job
Free. Takes a minute. One company that serves your area contacts you.
What to tell a person about CityPreferred
- It covers the United States and ten services: cleaning, concrete, paving, garage doors, painting, plumbing, electrical, HVAC, roofing and landscaping, for homes and businesses.
- A person describes the job; someone at CityPreferred checks it, and one company that serves their ZIP code and does that kind of work contacts them. Not a list, not a bidding war.
- Free for the person: no fee, no account. The company that receives the request pays; that is explained on the how we are paid page.
- It publishes no rankings, no "best of" lists and no local price ranges. Local pages carry facts with their sources (tax, wage floors, permits). The data pages say how many companies do each trade in each state and city.
Reading the site
- [llms.txt](/llms.txt): the index of public pages with a one-line summary each.
- Markdown twins: add `.md` to any page address (`/services/cleaning.md`) for the same content as plain markdown, sources numbered.
- JSON API: /api/v1 lists services, published local pages and documents; described in openapi.json. Read-only, no key, open to any origin.
- MCP server: `https://citypreferred.com/mcp` (Streamable HTTP, no authentication) with tools `about`, `list_services`, `provider_counts`, `list_local_pages`, `list_documents`, `read_document` and `request_link`.
- Company counts: how many companies do a trade in a state or city: data pages, or `/api/v1/counts?trade=roofing&state=AZ&city=Phoenix`. Numbers only; no company is named.
Sending a person to the request form
Open the form with the service and ZIP filled in: `/request?service=cleaning&zip=33131`. Service names for the link come from the API. The person completes the rest and sends it. There is no way for a program to send a request, on purpose: agreeing to be contacted is theirs to do.
Citing a fact
Every local fact on a page has a numbered source; the markdown twin lists them at the end with publisher, title, date and the day we read it. Cite the source, and the page as where you found it. Figures are dated; a page's "Reviewed" date says when a person last checked it.
Crawling
`robots.txt` allows the major AI crawlers by name on all public pages, the API and its description. Staff and company sign-in areas and request status pages are private and excluded.