# 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.

## 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](https://citypreferred.com/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](https://citypreferred.com/api/v1) lists services, published local pages and documents; described in [openapi.json](https://citypreferred.com/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](https://citypreferred.com/data), 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.

## Need a company for this?

Tell CityPreferred the job and your ZIP code at https://citypreferred.com/request. A person checks the request and one local company that does that kind of work contacts you. Free for you; the company pays CityPreferred. Details: https://citypreferred.com/how-we-are-paid

---

Canonical page: https://citypreferred.com/for-ai-agents

Last reviewed: 2026-09-30

Publisher: CityPreferred (https://citypreferred.com)
