Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

CoreLoop Business Network

REMOTE · CORELOOP.SO · SCANNED AUG 20

Search real businesses, then read profiles, services and hours or contact them, in one endpoint.

Available components

63 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2176 tokens (~310/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage96
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 86% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · coreloop.so

# add to Claude Code
claude mcp add --transport http so-coreloop-directory https://coreloop.so/api/mcp/coreloop-directory
# ~/.codex/config.toml
[mcp_servers.so-coreloop-directory]
url = "https://coreloop.so/api/mcp/coreloop-directory"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "so-coreloop-directory": {
      "type": "remote",
      "url": "https://coreloop.so/api/mcp/coreloop-directory",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add so-coreloop-directory --url https://coreloop.so/api/mcp/coreloop-directory --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  so-coreloop-directory:
    url: "https://coreloop.so/api/mcp/coreloop-directory"
// mcp.json
{
  "mcpServers": {
    "so-coreloop-directory": {
      "type": "http",
      "url": "https://coreloop.so/api/mcp/coreloop-directory"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Aug 26 +1
    • Stability: unverified → 0.03 functional
  • 19 Aug 26 62

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Aug 2026 · Probed https://coreloop.so/api/mcp/coreloop-directory

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=coreloop.so CN=YR2,O=Let's Encrypt,C=US 24 Jul 2026 22 Oct 2026 RSA 2048 SHA256-RSA 5d036d92fab94b1275c7d39c965e6dbda66
SANs: coreloop.so
CN=YR2,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA 4ebd24947e24d394802d84a52fd5b319
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f
DNSSEC insecure

Validation of coreloop.so. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
so. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=31536000; includeSubDomains
content-security-policy default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-ZDliZTRkMmEtOWQxNi00ZDc3LTkxZDUtYTZhNmE1ODE2YTdh' https:; style-src 'self' 'unsafe-inline' https://accounts.google.com/gsi/; img-src 'self' https://*.supabase.co https://img.clerk.com data:; font-src 'self'; connect-src 'self' https://*.clerk.accounts.dev https://*.clerk.com https://clerk.coreloop.so https://*.supabase.co https://*.ingest.de.sentry.io https://accounts.google.com/gsi/; worker-src 'self' blob:; frame-src 'self' https://*.clerk.accounts.dev https://*.clerk.com https://clerk.coreloop.so https://challenges.cloudflare.com https://accounts.google.com/gsi/; frame-ancestors 'self'; base-uri 'self'; form-action 'self'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(), microphone=(), geolocation=()
Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://coreloop.so/api/mcp/coreloop-directory Verified 200
http (plaintext) http://coreloop.so/api/mcp/coreloop-directory HTTPS enforced 308 https://coreloop.so/api/mcp/coreloop-directory
MCP tools · 7 exposed · ~2,071 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
check_business_availability ~164

One business's opening hours, whether it is open right now, and when it next opens. Phase 1 returns published hours, not bookable slots.

NameTypeReqDescription
businessstringyesWhich business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — safe to store and re-use across sessions,…
location_idstringWhich location's hours to return (id from get_info locations[]). Defaults to the primary location.
NameTypeReqDescription
always_openboolean
businessobject
data_sourcestring
is_open_nowboolean
last_updatedstring
localestring
location_idstring|null
location_labelstring|null
next_open_atstring|null
operating_hoursobject|null
timezonestring

No examples provided.

compare_business_services ~221

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.

NameTypeReqDescription
businessstringyesWhich business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — safe to store and re-use across sessions,…
compare_byarrayRestrict the comparison to these fields. Recognised values: price, duration, description, includes (name, category and match_type are always present; unrecognised values are ignored). Omit for the fu…
service_typestringyesService category or keyword to compare. Matches category exactly first, then service name/description contains.
NameTypeReqDescription
businessobject
business_namestring
comparison_summaryobject
data_sourcestring
last_updatedstring
localestring
service_typestring
servicesarray
suggestionobject
verifiedboolean

No examples provided.

get_business_agent ~170

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.

NameTypeReqDescription
businessstringyesWhich business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — safe to store and re-use across sessions,…
NameTypeReqDescription
available_localesarray
businessobject
content_localestring
data_sourcestring
protocol_urlsobject
protocolsarray
resolved_atstring
tools_availablearray
verifiedboolean

No examples provided.

get_business_info ~150

Full profile for one business found through search_businesses: identity, locations, contact, policies, images, public documents and the languages it publishes in.

NameTypeReqDescription
businessstringyesWhich business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — safe to store and re-use across sessions,…
sectionsarrayWhich sections to include. Defaults to all.
NameTypeReqDescription
asserts_no_physical_locationboolean
available_localesarray
businessobject
call_to_actionobject
categorystring
contactobject
data_sourcestring
descriptionstring
documentsarray
imagesobject
intakeobject
keywordsarray
last_updatedstring
localestring
locationobject
locationsarray
namestring
policiesobject
protocols_availablearray
subcategoriesarray
taglinestring|null
tools_availablearray
verifiedboolean

No examples provided.

get_business_services ~333

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.

NameTypeReqDescription
businessstringyesWhich business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — safe to store and re-use across sessions,…
categorystringFilter by service category
limitinteger
max_durationintegerOnly services lasting at most this many minutes
max_pricenumberOnly services priced at or below this amount
min_durationintegerOnly services lasting at least this many minutes
min_pricenumberOnly services priced at or above this amount
offsetintegerNumber of results to skip (pagination)
price_typestringFilter by price type (e.g. fixed, from, range, hourly, free, contact, or unpublished for services with no price set)
sort_bystringField to sort by. Recognised values: price, duration, name, category (unrecognised values are ignored — results stay unsorted).
sort_orderstringSort direction (defaults to asc)
NameTypeReqDescription
businessobject
data_sourcestring
has_moreboolean
last_updatedstring
limitinteger
localestring
offsetinteger
servicesarray
totalinteger

No examples provided.

search_businesses ~831

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 across sessions, it stays the same when a business renames itself or changes its slug, and it carries no sensitive information. Treat it as a token — do not parse it, do not derive meaning from its format, and do not construct one. Pass back exactly the value you were given. A result with `asserts_no_physical_location: true` has stated that it has no premises (consultants, trades, online-only) — it is intentionally absent from city search rather than missing data. `false` means no such statement was made; it does NOT imply premises. Results are returned in your requested language when the business has published a translation: send `?locale=<code>` on the endpoint URL (takes precedence) or an Accept-Language header. Each result reports the language it is written in (`locale`), the business's original language (`content_locale`), and every language it is available in (`available_locales`). `mcp_url`, `a2a_url` and `page_url` — and every URL inside `protocol_urls` — are null when that surface is currently switched off for the business: a null is intentional (do not construct the URL yourself), and the business remains reachable through its non-null surfaces. `data_source: "directory"` marks these rows as the search projection; call get_business_info for the live profile. PAGING: one call returns at most `limit` results. Read `has_more` — a short page is not proof of the end — and pass `next_cursor` back as `cursor` for the next page. The cursor is opaque and bound to the filters and sort it was issued for: change any of them and it is rejected, so start a new search instead. `limit` may change between pages.

NameTypeReqDescription
capabilitiesarrayFilter by capability tags (e.g. real_time_booking, live_pricing, verified)
categorystringFilter by business category (case-insensitive exact match). Canonical categories: Accounting & Tax, Agriculture & Farming, Automotive, Beauty & Wellness, Childcare & Family, Cleaning Services, Constr…
citystringFilter by city (case-insensitive exact match)
cursorstringContinuation 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 back byte-for-byte, and change nothing…
has_live_bookingbooleanOnly show businesses with real-time booking
has_live_catalogbooleanOnly show businesses with live catalog pricing
limitintegerMaximum results per page (1-20). Out-of-range values are clamped, not rejected.
min_ratingnumberMinimum average rating (0-5)
querystringSearch query (business name or keyword)
service_typestringFilter by service type keyword
sort_bystringSort results. Default: relevance
verified_onlybooleanOnly show verified businesses
NameTypeReqDescription
businessesarray
has_morebooleanTrue when more results exist beyond this page. Read this rather than inferring from `returned_count`: a short page is not proof of the end.
next_cursorstring|nullOpaque continuation token, or null on the last page. Pass it back unchanged as `cursor` to get the next page. It is bound to this search's filters and sort — change them and it is rejected, so start…
requested_localestring|null
returned_countinteger

No examples provided.

send_business_inquiry ~202

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.

NameTypeReqDescription
businessstringyesWhich business to ask: its CoreLoop slug, or the `business_id` returned by search_businesses. `business_id` is an opaque, stable, public routing identifier — safe to store and re-use across sessions,…
messagestringyesInquiry message (plain text, max 2000 chars)
sender_emailstring
sender_namestringyes
sender_phonestring
subjectstring
NameTypeReqDescription
businessobject
messagestring
statusstring

No examples provided.