MCP endpoint
Per-business MCP servers over Streamable HTTP, six auto-generated tools, locale negotiation, tier-based rate limits, and full interaction logging.
Every published business runs a public MCP (Model Context Protocol) server at:
coreloop.so/api/mcp/{slug}
Transport is Streamable HTTP. No authentication is required; the endpoint is public and secured by the gate chain described in the overview.
Tools
Tools are generated from the profile, owners never write tool definitions, and regenerate automatically when the profile changes. The tools:
get_info— business identity, description, contact details, hours, all locations.get_services— the services list (bounded at 50 per response).check_availability— operating hours today. Static schedule data, not live calendar availability.get_reviews— review data where available.compare_services— generated when a category has two or more services; compares within a category, up to 20 results.send_inquiry— the single side-effecting tool. Delivers a message to the owner’s inbox and email. Limits: 3/day per agent per business, 50/day per business (shared with the page’s web form, the two doors can’t be stacked), 2,000 characters, plain text (HTML stripped).
Responses are bounded (max 50 services per answer), and availability answers cover the
published weekly schedule plus the next opening within seven days. Every tool response
carries metadata: locale, translation_status, available_locales, last_updated,
verified, and data_source.
Connecting an AI client
Owners don’t have to work out what to do with the URL. Settings → AI Agents in the dashboard renders ready-made setup for the common clients — Claude Desktop, Claude Code, ChatGPT, Cursor, and VS Code — each showing whatever that client actually needs for a remote MCP server: a copy-paste config block, a CLI one-liner, or (for Claude Desktop) the endpoint URL plus the numbered Settings → Connectors steps for adding a remote connector.
Those blocks are generated from the live slug and app URL rather than stored as text, so what you copy always matches what the server serves.
Locale negotiation
?locale= query parameter takes precedence, then the Accept-Language header, then the
profile’s original content locale. Responses set Vary accordingly. Only completed
translations are served; a missing translation falls back to the original language rather than
serving partial content.
Rate limits
Per business slug, per hour, by the business’s plan: Free 100, Starter 1,000, Pro and Agency
10,000, Enterprise 100,000. On top of that, send_inquiry has its own limits (above). Expect
429 with a Retry-After header when a limit is hit.
The network endpoint
A cross-business MCP server serves the whole network from one URL:
coreloop.so/api/mcp/coreloop-directory
It carries seven tools. search_businesses queries by category, city, geo radius, keyword,
and live-booking flag; results (max 20 per query) include name, slug, MCP URL, category, city,
rating, service count, available tools, and verified status — never internal IDs or owner PII —
plus a business_id every other tool accepts. The same connection can then read a business's
profile (get_business_info), list its services (get_business_services), check its hours
(check_business_availability), compare one business's own services within a
category (compare_business_services), fetch its agent endpoints (get_business_agent) or
send it an inquiry (send_business_inquiry — the same single write path as send_inquiry,
under those limits plus a directory-wide budget of 5 inquiries per day per agent).
Every business-targeted call passes the same gates as that business's own endpoint: only
published profiles answer, and a business that has switched a channel off is unreachable
through the network exactly as it is directly. Rate limit: 60 requests/hour per agent
identifier. Locale negotiation matches the per-business endpoint.
(coreloop.so/api/mcp/directory is the older path for the same server and is still served.)
Agents that don’t know the directory URL yet can find it from CoreLoop’s MCP server card at
coreloop.so/.well-known/mcp.json, which also advertises the per-business endpoint as a URL
template. It never enumerates businesses; see the
overview for what platform-level discovery does and doesn’t expose.
Observability and hygiene
Every invocation is logged with tool name, protocol, detected agent platform, discovery source, a hashed agent identifier, and response status/time. Identifiers are hashed before storage; IP addresses are never stored in full. Renamed businesses 301 from the old slug. Unpublished profiles return an error before rate limiting, so slug enumeration learns nothing.