Search real businesses, then read profiles, services and hours or contact them, in one endpoint.
Inferred from the transports this listing declares (streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read from a real MCP initialize → tools/list handshake against the declared endpoint. No tool was ever invoked — tools/list is the read-only introspection call the protocol defines for this. It reflects what the server advertised at that moment; a hosted endpoint is not pinned to any version and can change without notice.
https://coreloop.so/api/mcp/coreloop-directory7 tools · 986mssearch_businessesSearch the CoreLoop business directory. Start here: every other tool on this endpoint needs a business, and each result carries the `business_id` and `slug` you pass to them as the `business` argument. `business_id` is a PUBLIC, OPAQUE, STABLE routing identifier: it is safe to store and re-use acro…Search the CoreLoop business directory. Start here: every other tool on this endpoint needs a business, and each result carries the `business_id` and `slug` you pass to them as the `business` argument. `business_id` is a PUBLIC, OPAQUE, STABLE routing identifier: it is safe to store and re-use acro…
| Parameter | Type | Description |
|---|---|---|
| query | string | Search query (business name or keyword) |
| category | string | Filter by business category (case-insensitive exact match). Canonical categories: Accounting & Tax, Agriculture & Farming, Automotive, Beauty & Wellness, Child… |
| city | string | Filter by city (case-insensitive exact match) |
| service_type | string | Filter by service type keyword |
| has_live_booking | boolean | Only show businesses with real-time booking |
| has_live_catalog | boolean | Only show businesses with live catalog pricing |
| verified_only | boolean | Only show verified businesses |
| capabilities | array | Filter by capability tags (e.g. real_time_booking, live_pricing, verified) |
| min_rating | number | Minimum average rating (0-5) |
| sort_by | string | Sort results. Default: relevance |
| limit | integer | Maximum results per page (1-20). Out-of-range values are clamped, not rejected. |
| cursor | string | Continuation token from a previous response's `next_cursor`. Omit for the first page. It is opaque and bound to the filters and sort it was issued for: pass it… |
check_business_availabilityOne business's opening hours, whether it is open right now, and when it next opens. Phase 1 returns published hours, not bookable slots.One business's opening hours, whether it is open right now, and when it next opens. Phase 1 returns published hours, not bookable slots.
| Parameter | Type | Description |
|---|---|---|
| business* | string | Which business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — s… |
| location_id | string | Which location's hours to return (id from get_info locations[]). Defaults to the primary location. |
compare_business_servicesCompare one business's services within a category or keyword, with a price/duration summary. Each row reports `match_type`, so you can tell an exact category hit from an incidental keyword.Compare one business's services within a category or keyword, with a price/duration summary. Each row reports `match_type`, so you can tell an exact category hit from an incidental keyword.
| Parameter | Type | Description |
|---|---|---|
| business* | string | Which business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — s… |
| service_type* | string | Service category or keyword to compare. Matches category exactly first, then service name/description contains. |
| compare_by | array | Restrict the comparison to these fields. Recognised values: price, duration, description, includes (name, category and match_type are always present; unrecogni… |
get_business_agentThe canonical ids and endpoint URLs for one business — its own MCP and A2A endpoints, agent card, llms.txt and public page, under `protocol_urls`. A null URL means that surface is switched off for this business right now: do not construct it yourself, and use one of the non-null surfaces instead.The canonical ids and endpoint URLs for one business — its own MCP and A2A endpoints, agent card, llms.txt and public page, under `protocol_urls`. A null URL means that surface is switched off for this business right now: do not construct it yourself, and use one of the non-null surfaces instead.
| Parameter | Type | Description |
|---|---|---|
| business* | string | Which business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — s… |
get_business_infoFull profile for one business found through search_businesses: identity, locations, contact, policies, images, public documents and the languages it publishes in.Full profile for one business found through search_businesses: identity, locations, contact, policies, images, public documents and the languages it publishes in.
| Parameter | Type | Description |
|---|---|---|
| business* | string | Which business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — s… |
| sections | array | Which sections to include. Defaults to all. |
get_business_servicesOne business's service catalogue, with filtering, sorting and pagination. Page with `offset`/`limit` and read `has_more` — the order is stable, so a second page will not repeat or skip a service.One business's service catalogue, with filtering, sorting and pagination. Page with `offset`/`limit` and read `has_more` — the order is stable, so a second page will not repeat or skip a service.
| Parameter | Type | Description |
|---|---|---|
| business* | string | Which business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — s… |
| category | string | Filter by service category |
| min_price | number | Only services priced at or above this amount |
| max_price | number | Only services priced at or below this amount |
| min_duration | integer | Only services lasting at least this many minutes |
| max_duration | integer | Only services lasting at most this many minutes |
| price_type | string | Filter by price type (e.g. fixed, from, range, hourly, free, contact, or unpublished for services with no price set) |
| sort_by | string | Field to sort by. Recognised values: price, duration, name, category (unrecognised values are ignored — results stay unsorted). |
| sort_order | string | Sort direction (defaults to asc) |
| limit | integer | — |
| offset | — | Pagination position: omit for the first page, then pass back the `next_offset` token from the previous response VERBATIM. The token is opaque and bound to the… |
send_business_inquirySend a message to one business. This has a real side effect — it notifies the owner and delivers an email — and is rate-limited both per business and across this directory, so send one considered inquiry rather than a broadcast.Send a message to one business. This has a real side effect — it notifies the owner and delivers an email — and is rate-limited both per business and across this directory, so send one considered inquiry rather than a broadcast.
| Parameter | Type | Description |
|---|---|---|
| business* | string | Which business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — s… |
| message* | string | Inquiry message (plain text, max 2000 chars) |
| sender_name* | string | — |
| sender_email | string | — |
| sender_phone | string | — |
| subject | string | — |
7 of 7 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
Search real businesses, then read profiles, services and hours or contact them, in one endpoint.
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
This entry publishes no npm package, so Forge has no dependency tree for it. That is a gap in coverage — not a statement that it has no dependencies.