API and MCP server for AI agents
Free, read-only access to the Denver directory for AI agents, assistants and apps. No key needed. Please link the listing url when you show a pro.
MCP server
Endpoint: https://24hrfixitpros.com/mcp (Streamable HTTP, stateless, no auth). Tools (all read-only):
search_in_english: find pros from a sentence such as “I have a broken glass window near 80303”. Use this when the person has not already given a trade id.search_pros: find pros by trade, ZIP and open-now. Use this when you already know the trade.get_pro: full details for one pro by id.list_categories: the trades with listing counts.list_zips: covered ZIP codes with counts per trade.
Clients that support remote MCP URLs (Cursor, Claude, ChatGPT connectors, VS Code):
{
"mcpServers": {
"24hrfixitpros": {
"url": "https://24hrfixitpros.com/mcp"
}
}
}
Clients that only run local servers (stdio), via mcp-remote:
{
"mcpServers": {
"24hrfixitpros": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://24hrfixitpros.com/mcp"
]
}
}
}
Test it: npx @modelcontextprotocol/inspector, transport "Streamable HTTP", URL https://24hrfixitpros.com/mcp.
JSON API
OpenAPI 3.1: https://24hrfixitpros.com/openapi.json. Base URL https://24hrfixitpros.com/api/v1.
| Endpoint | What it returns |
|---|---|
GET /api/v1/search?q= | Plain-English search (also POST). Parses a sentence into trade + ZIP, then returns pros. If no pro serves the ZIP exactly, results fall back to the surrounding area and then the metro, with a coverage message. |
GET /api/v1/pros?category=&zip=&open_now= | Pros sorted open-now first; sponsored placements are separate and labeled. Paginate with limit and the next cursor. |
GET /api/v1/pros/{id} | One pro. |
GET /api/v1/categories | Trades and counts. |
GET /api/v1/zips | Covered ZIPs and counts per trade. |
curl 'https://24hrfixitpros.com/api/v1/search?q=I+have+a+broken+glass+window+near+80303' curl 'https://24hrfixitpros.com/api/v1/pros?category=plumbing&zip=80202&open_now=true'
Every pro has a stable id, phone (E.164; the number to call, which may be a tracking number that rings the business), hours, is_open_now, service_zips, source_url, sources and updated_at.
Limits and terms
- 120 API requests and 60 MCP requests per minute per IP; over that you get HTTP 429 with
Retry-After. Responses are cacheable. - Read-only. Requesting a callback and texting a pro are not available to agents; send the person to the listing page or have them call.
- Hours and open-now are best effort from each business's published hours (America/Denver). Tell people to confirm by phone.
- Do not resell the data in bulk or use the numbers for marketing calls or texts.
- Questions or corrections: help@24hrfixitpros.com.
Also: llms.txt, llms-full.txt, sitemap.xml, /.well-known/mcp.json. Every page has a Markdown twin: add .md to the URL.
Last updated 2026-10-16 · Open/closed status as of Sun 3:37 AM MT. Markdown version.