WRDO
Local businesses, menus and price lists in Cape Town and the Western Cape; start a request in WRDO.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"wrdo": {
"url": "https://api.wrdo.co.za/mcp"
}
}
}远程端点
https://api.wrdo.co.za/mcpstreamable-http它能做什么
工具清单
工具(5)
🟢search_local_businesses(what, where, category, has_price_list, max_price_rand, ...)
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.
输入模式
{
"type": "object",
"properties": {
"what": {
"description": "What the person needs: a kind of business or service (\"plumber\", \"pizza\") or a business name. Optional when \"category\" is given.",
"type": "string",
"minLength": 2,
"maxLength": 80
},
"where": {
"description": "A town or suburb in the Western Cape, e.g. \"Paarl\" or \"Val de Vie, Paarl\". Leave out for the whole Western Cape.",
"type": "string",
"maxLength": 60
},
"category": {
"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.",
"type": "string",
"maxLength": 80
},
"has_price_list": {
"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.",
"type": "boolean"
},
"max_price_rand": {
"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.",
"type": "number",
"exclusiveMinimum": 0
},
"open_now": {
"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.",
"type": "boolean"
},
"limit": {
"description": "How many results, 1 to 20 (default 10).",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"category": {
"type": "string"
},
"area": {
"type": "string"
},
"verified": {
"type": "boolean"
},
"page_url": {
"type": "string"
},
"start_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"has_price_list": {
"description": "True when WRDO holds a price list or menu for this business (see get_price_list).",
"type": "boolean"
},
"price_from_rand": {
"description": "Cheapest listed item with a price, in rand; null when no item has a price.",
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"open_now": {
"description": "Open right now in South Africa (SAST), from the hours on a verified business page; null when unknown.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
}
},
"required": [
"id",
"name",
"category",
"area",
"verified",
"page_url",
"start_url",
"has_price_list",
"price_from_rand",
"open_now"
],
"additionalProperties": false
}
},
"source": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"results",
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢list_categories(where)
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.
输入模式
{
"type": "object",
"properties": {
"where": {
"description": "A town or suburb in the Western Cape, e.g. \"Paarl\" or \"Val de Vie, Paarl\". Leave out for the whole Western Cape.",
"type": "string",
"maxLength": 60
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"where": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"total": {
"type": "number"
},
"categories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"group": {
"type": "string"
},
"count": {
"type": "number"
}
},
"required": [
"slug",
"name",
"group",
"count"
],
"additionalProperties": false
}
},
"source": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"where",
"total",
"categories",
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_business(id)
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.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "A WRDO business id from search_local_businesses (lbiz_…).",
"type": "string",
"maxLength": 60
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"category": {
"type": "string"
},
"area": {
"type": "string"
},
"verified": {
"type": "boolean"
},
"page_url": {
"type": "string"
},
"start_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"last_checked": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"source": {
"type": "string"
},
"description": {
"type": "string"
},
"address": {
"type": "string"
},
"website": {
"type": "string"
},
"facebook_url": {
"type": "string"
},
"menu_url": {
"type": "string"
},
"hours": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"label",
"value"
],
"additionalProperties": false
}
},
"open_now": {
"description": "Open right now in SAST from the hours above; null when hours are missing or unreadable.",
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
]
},
"reviews": {
"description": "WRDO's own reviews only (never copied from Google or any other site).",
"type": "object",
"properties": {
"source": {
"type": "string",
"const": "wrdo"
},
"count": {
"type": "number"
},
"average_rating": {
"type": "number"
},
"recent": {
"type": "array",
"items": {
"type": "object",
"properties": {
"rating": {
"type": "number"
},
"comment": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
},
"required": [
"rating",
"comment",
"date"
],
"additionalProperties": false
}
},
"note": {
"type": "string"
}
},
"required": [
"source",
"count"
],
"additionalProperties": false
}
},
"required": [
"id",
"name",
"category",
"area",
"verified",
"page_url",
"start_url",
"last_checked",
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢start_request(what, business_id, when)
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.
输入模式
{
"type": "object",
"properties": {
"what": {
"description": "What the person needs: a kind of business or service (\"plumber\", \"pizza\") or a business name.",
"type": "string",
"minLength": 2,
"maxLength": 80
},
"business_id": {
"description": "A WRDO business id from search_local_businesses (lbiz_…).",
"type": "string",
"maxLength": 60
},
"when": {
"description": "When they want it, in their words, e.g. \"Saturday morning\".",
"type": "string",
"maxLength": 60
}
},
"required": [
"what"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"start_url": {
"type": "string"
},
"status": {
"type": "string",
"const": "not_booked"
},
"next_step": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"start_url",
"status",
"next_step",
"message"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_price_list(id)
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.
输入模式
{
"type": "object",
"properties": {
"id": {
"description": "A WRDO business id from search_local_businesses (lbiz_…).",
"type": "string",
"maxLength": 60
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}输出模式
{
"type": "object",
"properties": {
"business": {
"anyOf": [
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"category": {
"type": "string"
},
"area": {
"type": "string"
}
},
"required": [
"id",
"name",
"category",
"area"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"sections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"price_zar": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"duration_min": {
"type": "number"
}
},
"required": [
"name",
"description",
"price_zar"
],
"additionalProperties": false
}
}
},
"required": [
"title",
"items"
],
"additionalProperties": false
}
},
"prices_confirmed": {
"type": "boolean"
},
"price_note": {
"type": "string"
},
"item_count": {
"type": "number"
},
"truncated": {
"type": "boolean"
},
"page_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"source": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"business",
"sections",
"prices_confirmed",
"item_count",
"truncated",
"page_url",
"source"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}社区
证据