Local businesses, menus and price lists in Cape Town and the Western Cape; start a request in WRDO.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
One business's public WRDO page: name, category, area, whether it is verified, and (for verified businesses) its description, address, opening hours (hours, as the business wrote them), website and menu link. Also open_now (true, false or null when hours are missing or unreadable) and reviews: WRDO's own reviews only (count, average_rating and up to 3 recent comments; never copied from Google or other sites; count 0 with a note when there are none). Takes an id as returned by search_local_businesses. Never a phone number or email.
A WRDO business id from search_local_businesses (lbiz_…).
One business's public WRDO page: name, category, area, whether it is verified, and (for verified businesses) its description, address, opening hours (hours, as the business wrote them), website and menu link. Also open_now (true, false or null when hours are missing or unreadable) and reviews: WRDO's own reviews only (count, average_rating and up to 3 recent comments; never copied from Google or other sites; count 0 with a note when there are none). Takes an id as returned by search_local_businesses. Never a phone number or email.
| Argument | Type | Description |
|---|---|---|
| id* | string | A WRDO business id from search_local_businesses (lbiz_…). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 60,
"description": "A WRDO business id from search_local_businesses (lbiz_…)."
}
}
}A business's price list or menu, for any kind of business (salon, barber, nails, beauty, restaurant): sections of items with name, description, price_zar (rand) and, for services, duration_min. prices_confirmed is false (with a price_note) when the prices come from the business website and are not confirmed. Takes an id as returned by search_local_businesses. An empty list means WRDO has none yet. Never a phone number or email.
| Argument | Type | Description |
|---|---|---|
| id* | string | A WRDO business id from search_local_businesses (lbiz_…). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 60,
"description": "A WRDO business id from search_local_businesses (lbiz_…)."
}
}
}The kinds of business WRDO lists in the Western Cape, with how many of each, for a town or suburb or everywhere. Answers "what is there in Paarl?". Each slug is a valid "category" for search_local_businesses. Most businesses first; categories with none are left out. Outside the Western Cape it returns nothing. No business details, no contact details.
| Argument | Type | Description |
|---|---|---|
| where | string | A town or suburb in the Western Cape, e.g. "Paarl" or "Val de Vie, Paarl". Leave out for the whole Western Cape. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"where": {
"type": "string",
"maxLength": 60,
"description": "A town or suburb in the Western Cape, e.g. \"Paarl\" or \"Val de Vie, Paarl\". Leave out for the whole Western Cape."
}
}
}Find local businesses on WRDO in the Western Cape by what they do (or their name), optionally in a town or suburb, optionally narrowed by category, price list, price and whether they are open now. Example: "hairdressers in Paarl under R200 that are open now". Give "what" (words) and/or "category" (an exact slug from list_categories). Returns id, name, category, area, verified (claimed by the owner), page_url, start_url, has_price_list, price_from_rand (cheapest listed price, rand, or null) and open_now (true, false or null when unknown). When any of has_price_list, max_price_rand or open_now is used, only the top 100 matches are checked (a message says so). open_now uses opening hours that verified businesses publish; a business without readable hours is left out when open_now is true. No contact details: to reach a business, give the person its start_url.
| Argument | Type | Description |
|---|---|---|
| what | string | What the person needs: a kind of business or service ("plumber", "pizza") or a business name. Optional when "category" is given. |
| limit | integer | How many results, 1 to 20 (default 10). |
| where | string | A town or suburb in the Western Cape, e.g. "Paarl" or "Val de Vie, Paarl". Leave out for the whole Western Cape. |
| category | string | Only businesses in this category: an exact plural slug such as "restaurants", "hair-salons" or "plumbers" (list_categories returns the valid slugs and which have businesses). An unknown slug returns an error listing the valid ones. |
| open_now |
Get a link the person opens to ask WRDO for a quote, booking or order (optionally from one business). The person finishes in WRDO. This tool never books, charges or creates an account. It only starts a request: nothing is booked until the business confirms in WRDO.
| Argument | Type | Description |
|---|---|---|
| what* | string | What the person needs: a kind of business or service ("plumber", "pizza") or a business name. |
| when | string | When they want it, in their words, e.g. "Saturday morning". |
| business_id | string | A WRDO business id from search_local_businesses (lbiz_…). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"what"
],
"properties": {
"what": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "What the person needs: a kind of business or service (\"plumber\", \"pizza\") or a business name."
},
"when": {
"type": "string",
"maxLength": 60,
"description": "When they want it, in their words, e.g. \"Saturday morning\"."
},
"business_id": {
"type": "string",
"maxLength": 60,
"description": "A WRDO business id from search_local_businesses (lbiz_…)."
}
}
}| boolean |
| true: only businesses that are open right now in South Africa (SAST). Only verified businesses with readable hours can match; those without hours are excluded. Leave out when the person does not need it. |
| has_price_list | boolean | true: only businesses with a price list or menu on WRDO (so get_price_list will have content). false: only those without. Leave out for both. |
| max_price_rand | number | Only businesses with at least one listed item priced at or under this many rand (e.g. 200). Businesses without a listed price never match. The cheapest price may be unconfirmed (from their website); get_price_list says so. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"what": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "What the person needs: a kind of business or service (\"plumber\", \"pizza\") or a business name. Optional when \"category\" is given."
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "How many results, 1 to 20 (default 10)."
},
"where": {
"type": "string",
"maxLength": 60,
"description": "A town or suburb in the Western Cape, e.g. \"Paarl\" or \"Val de Vie, Paarl\". Leave out for the whole Western Cape."
},
"category": {
"type": "string",
"maxLength": 80,
"description": "Only businesses in this category: an exact plural slug such as \"restaurants\", \"hair-salons\" or \"plumbers\" (list_categories returns the valid slugs and which have businesses). An unknown slug returns an error listing the valid ones."
},
"open_now": {
"type": "boolean",
"description": "true: only businesses that are open right now in South Africa (SAST). Only verified businesses with readable hours can match; those without hours are excluded. Leave out when the person does not need it."
},
"has_price_list": {
"type": "boolean",
"description": "true: only businesses with a price list or menu on WRDO (so get_price_list will have content). false: only those without. Leave out for both."
},
"max_price_rand": {
"type": "number",
"description": "Only businesses with at least one listed item priced at or under this many rand (e.g. 200). Businesses without a listed price never match. The cheapest price may be unconfirmed (from their website); get_price_list says so.",
"exclusiveMinimum": 0
}
}
}