Getting markdown instead of HTML
Two ways, both of which return text/markdown with a Vary: Accept header. Append .md to any URL — for example /services/roofing.md — or send an Accept: text/markdown request header to the normal URL.

Public, read-only access to CMAC’s published knowledge.
This site is built to be read by software as well as by people. Every page is server-rendered, so its full text is in the raw HTML with no JavaScript required. Every page also has a plain-text markdown twin, and the site publishes machine-readable indexes describing what CMAC does and where.
Two ways, both of which return text/markdown with a Vary: Accept header. Append .md to any URL — for example /services/roofing.md — or send an Accept: text/markdown request header to the normal URL.
Every page carries a JSON-LD @graph containing the Organization, the WebSite, a WebPage node, and a BreadcrumbList, plus a Service node on service pages, a LocalBusiness node on location pages, and an FAQPage node wherever questions are shown. Contact points are published per market with a telephone, email, and area served.
The documented retrieval API and MCP tools are public and read-only. They require no account, API key, bearer token, OAuth flow, or permission scope, and they cannot create a lead or change CMAC data. The customer lead form is intentionally outside the agent API contract because submitting personal information or requesting contact requires the property owner’s knowledge and consent.
REST-facing errors use RFC 9457 application/problem+json with a stable code and a resolution hint. Backward-compatible fields may be added within v1; breaking changes use a new major path. Before removing a stable version, CMAC will publish migration guidance and send Deprecation and Link headers, then announce a dated Sunset at least 180 days in advance. No v1 operation is currently deprecated. NLWeb failures retain the NLWeb 0.55 response shape, and MCP protocol failures use JSON-RPC errors. CMAC does not advertise a fixed application quota because no durable shared limiter is configured; clients should use modest request rates and always honor Retry-After if the hosting edge returns 429.
Tell CMAC what is happening at the property. We will inspect the condition and put the recommended scope in writing.