accueil / serveurs / Recherche & Web / so.coreloop/directory
so.coreloop/directory
serveur MCP (Model Context Protocol) · coreloop:network 1.2.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que so.coreloop/directory est sûr ?
Au dernier audit MCP Hub, le serveur MCP « so.coreloop/directory » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 7 outils
- check_business_availability≈ 466 tokens
One business's opening hours, whether it is open right now, and when it next opens. Phase 1 returns published hours, not bookable slots.
Paramètres, retour & exemple (2)
Paramètresbusiness· string · requis
Which 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, unchanged by a rename or a slug change, and carrying no sensitive information. Pass back exactly the value search_businesses gave you: do not parse it, do not infer meaning from its format, and do not construct one.location_id· string · optionnel
Which location's hours to return (id from get_info locations[]). Defaults to the primary location.
Exemple d'appel{"name": "check_business_availability", "arguments": {"business": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"locale": "texte", "business": {}, "timezone": "texte", "always_open": true, "data_source": "texte", "is_open_now": true, "location_id": "texte", "last_updated": "texte", "next_open_at": "texte", "location_label": "texte", "operating_hours": {}}} - compare_business_services≈ 772 tokens
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.
Paramètres, retour & exemple (3)
Paramètresbusiness· string · requis
Which 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, unchanged by a rename or a slug change, and carrying no sensitive information. Pass back exactly the value search_businesses gave you: do not parse it, do not infer meaning from its format, and do not construct one.compare_by· array · optionnel
Restrict 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 full comparison view.service_type· string · requis
Service category or keyword to compare. Matches category exactly first, then service name/description contains.
Exemple d'appel{"name": "compare_business_services", "arguments": {"business": "texte", "service_type": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"locale": "texte", "business": {}, "services": [], "verified": true, "suggestion": {}, "data_source": "texte", "last_updated": "texte", "service_type": "texte", "business_name": "texte", "comparison_summary": {}}} - get_business_agent≈ 491 tokens
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.
Paramètres, retour & exemple (1)
Paramètresbusiness· string · requis
Which 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, unchanged by a rename or a slug change, and carrying no sensitive information. Pass back exactly the value search_businesses gave you: do not parse it, do not infer meaning from its format, and do not construct one.
Exemple d'appel{"name": "get_business_agent", "arguments": {"business": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"business": {}, "verified": true, "protocols": [], "data_source": "profile", "resolved_at": "texte", "protocol_urls": {}, "content_locale": "texte", "tools_available": [], "available_locales": []}} - get_business_info≈ 879 tokens
Full profile for one business found through search_businesses: identity, locations, contact, policies, images, public documents and the languages it publishes in.
Paramètres, retour & exemple (2)
Paramètresbusiness· string · requis
Which 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, unchanged by a rename or a slug change, and carrying no sensitive information. Pass back exactly the value search_businesses gave you: do not parse it, do not infer meaning from its format, and do not construct one.sections· array · optionnel
Which sections to include. Defaults to all.
Exemple d'appel{"name": "get_business_info", "arguments": {"business": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"name": "texte", "images": {}, "intake": {}, "locale": "texte", "contact": {}, "tagline": "texte", "business": {}, "category": "texte", "keywords": [], "location": {}, "policies": {}, "verified": true}} - get_business_services≈ 1078 tokens
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.
Paramètres, retour & exemple (11)
Paramètreslimit· integer · optionneloffset· ? · optionnel
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 catalogue as it was when the page was issued — if services were added, removed or reordered since, the call returns `cursor_expired` and you should restart without an offset. A plain integer offset is still accepted in EITHER spelling — as a JSON number (20) or as its exact string form ("20") — and skips that many results with no catalogue binding. Only a string that is neither an exact integer nor a token this endpoint issued (for example a mangled or truncated token) is refused with `cursor_expired` rather than resumed.sort_by· string · optionnel
Field to sort by. Recognised values: price, duration, name, category (unrecognised values are ignored — results stay unsorted).business· string · requis
Which 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, unchanged by a rename or a slug change, and carrying no sensitive information. Pass back exactly the value search_businesses gave you: do not parse it, do not infer meaning from its format, and do not construct one.category· string · optionnel
Filter by service categorymax_price· number · optionnel
Only services priced at or below this amountmin_price· number · optionnel
Only services priced at or above this amountprice_type· string · optionnel
Filter by price type (e.g. fixed, from, range, hourly, free, contact, or unpublished for services with no price set)sort_order· string · optionnel · asc | desc
Sort direction (defaults to asc)max_duration· integer · optionnel
Only services lasting at most this many minutesmin_duration· integer · optionnel
Only services lasting at least this many minutes
Exemple d'appel{"name": "get_business_services", "arguments": {"business": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"limit": 1, "total": 1, "locale": "texte", "offset": 1, "restart": true, "business": {}, "has_more": true, "services": [], "data_source": "texte", "next_offset": "texte", "last_updated": "texte", "returned_count": 1}} - search_businesses≈ 1582 tokens
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.
Paramètres, retour & exemple (12)
Paramètrescity· string · optionnel
Filter by city (case-insensitive exact match)limit· integer · optionnel
Maximum results per page (1-20). Out-of-range values are clamped, not rejected.query· string · optionnel
Search query (business name or keyword)cursor· string · optionnel
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 back byte-for-byte, and change nothing except `limit` between pages — any other change makes it invalid and you must start a new search. At most 100 results are reachable by paging; narrow the filters to see beyond that.sort_by· string · optionnel · relevance | rating | name
Sort results. Default: relevancecategory· string · optionnel
Filter by business category (case-insensitive exact match). Canonical categories: Accounting & Tax, Agriculture & Farming, Automotive, Beauty & Wellness, Childcare & Family, Cleaning Services, Construction & Renovation, Creative & Arts, Education & Training, Events & Entertainment, Financial Services, Fitness & Sports, Food & Beverage, Funeral & Memorial, Health & Medical, Home Services, Legal Services, Media & Photography, Nonprofit & Community, Personal Care & Therapy, Pets & Animals, Professional Services, Real Estate, Religious & Spiritual, Retail & Shopping, Security Services, Sports & Recreation, Technology & IT, Transportation & Logistics, Travel & Tourism, Othermin_rating· number · optionnel
Minimum average rating (0-5)capabilities· array · optionnel
Filter by capability tags (e.g. real_time_booking, live_pricing, verified)service_type· string · optionnel
Filter by service type keywordverified_only· boolean · optionnel
Only show verified businesseshas_live_booking· boolean · optionnel
Only show businesses with real-time bookinghas_live_catalog· boolean · optionnel
Only show businesses with live catalog pricing
Exemple d'appel{"name": "search_businesses", "arguments": {"city": "texte", "limit": 1, "query": "texte", "cursor": "texte", "sort_by": "relevance", "category": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"has_more": true, "businesses": [], "next_cursor": "texte", "returned_count": 1, "requested_locale": "texte"}} - send_business_inquiry≈ 463 tokens
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.
Paramètres, retour & exemple (6)
Paramètresmessage· string · requis
Inquiry message (plain text, max 2000 chars)subject· string · optionnelbusiness· string · requis
Which 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, unchanged by a rename or a slug change, and carrying no sensitive information. Pass back exactly the value search_businesses gave you: do not parse it, do not infer meaning from its format, and do not construct one.sender_name· string · requissender_email· string · optionnelsender_phone· string · optionnel
Exemple d'appel{"name": "send_business_inquiry", "arguments": {"message": "texte", "business": "texte", "sender_name": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"status": "sent", "message": "texte", "business": {}}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».