kadro-mcp-server
Search and book real photographers on Kadro (Iran) on a user's behalf, ending with a payment link.
我该使用它吗
质量与安全性
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"kadro-mcp-server": {
"url": "https://www.kadro.co/mcp"
}
}
}远程端点
https://www.kadro.co/mcpstreamable-httphttps://www.shootempire.com/kadro-mcp-relay/mcpstreamable-http它能做什么
工具清单
工具(6)
🟢search_shoot_types
List the photography/videography service types Kadro offers (e.g. wedding, industrial, portrait), each with a numeric shoot_type_id. Call this first if you don't already know the id for the kind of shoot the user wants.
输入模式
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢search_photographers(shoot_type_id, city_id)
Find real, bookable photographers for a given shoot_type_id (from search_shoot_types), optionally narrowed to a city_id. Returns each photographer's uid (needed for every later call), display name, rating, review count, and city.
输入模式
{
"type": "object",
"properties": {
"shoot_type_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "A shoot_type_id from search_shoot_types."
},
"city_id": {
"description": "Optional Kadro city id to narrow the search.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"shoot_type_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_photographer_packages(photographer_uid, shoot_type_id)
List the real, currently bookable packages (with prices, in Toman) a specific photographer offers for a given shoot_type_id. Rejects the shoot_type_id if that photographer doesn't actually offer it. Use the returned package id with create_reservation.
输入模式
{
"type": "object",
"properties": {
"photographer_uid": {
"type": "string",
"description": "A photographer uid from search_photographers."
},
"shoot_type_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"photographer_uid",
"shoot_type_id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡create_reservation(shoot_type_id, package_id, city_id, photographer_uid, start_time, ...)
Book a specific photographer for a specific package, date/time, and address on the user's behalf — no login required. This only places a 15-minute hold; it does NOT charge any money and does NOT require or accept any payment information. Immediately follow this with get_payment_link and give that URL to the human — they open it themselves to verify their phone number and pay. start_time must be an ISO 8601 timestamp at least 6 hours in the future. Pass a stable idempotency_key if you might retry this call, so a retry can't create a second reservation.
输入模式
{
"type": "object",
"properties": {
"shoot_type_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"package_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"city_id": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"photographer_uid": {
"type": "string"
},
"start_time": {
"type": "string",
"description": "ISO 8601 timestamp, at least 6 hours from now."
},
"address_latitude": {
"type": "number"
},
"address_longitude": {
"type": "number"
},
"address_detail": {
"type": "string",
"description": "Human-readable address text for the shoot location."
},
"shoot_detail": {
"description": "Free-text notes about the shoot for the photographer.",
"type": "string"
},
"guest_display_name": {
"description": "The customer's name, if known.",
"type": "string"
},
"idempotency_key": {
"description": "A key you generate to make retries safe. Reuse it only when retrying the exact same request.",
"type": "string"
}
},
"required": [
"shoot_type_id",
"package_id",
"city_id",
"photographer_uid",
"start_time",
"address_latitude",
"address_longitude",
"address_detail"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_payment_link(slug)
Get a URL for the human to open in their own browser to finish this reservation: verify their phone number by SMS code and pay. This is the last step this server ever takes — never ask the user for a card number, OTP code, or password, and never try to open, submit, or complete this URL yourself. Just hand the URL to the user.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The slug returned by create_reservation."
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_reservation_status(slug)
Check whether a reservation has been paid and confirmed. IMPORTANT: status values are 'awaiting_payment', 'expired', 'paid_awaiting_photographer_confirmation', 'confirmed', and 'rejected'. 'paid_awaiting_photographer_confirmation' means the customer paid but the photographer has not yet accepted the booking and could still decline or ask to reschedule — do not tell the user their booking is final until status is exactly 'confirmed'.
输入模式
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "The slug returned by create_reservation."
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}社区
证据