Booqer

Verified Booqer shops. A keyless consult is confirmed when the slot is open.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
99%
命名质量
93%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~2,827token 数(工具定义)
~2.6 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 2.21%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "booqer": {
      "url": "https://booqer.ai/mcp"
    }
  }
}

远程端点

https://booqer.ai/mcpstreamable-http

它能做什么

工具清单

工具(8)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢search_businesses(query)

Use this when the user wants to find a local home-service business or appointment: plumber, HVAC, electrician, gate, fence, or security install, pole barn, or builder. Searches the Booqer directory of enrolled home-service businesses by name, category, service, location, or phone. Coverage is limited to enrolled businesses (currently Florida pole barn and gate/security). Returns id, name, domain, booking URL, and booking status. A trade that is not enrolled returns no businesses and the message says no shop is available. A city outside a business's service area is left out. booqer-demo-shop is omitted unless the query is that shop's exact name or id.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "What the user wants found. Examples: \"pole barn Clermont\", \"gate repair Winter Garden\", \"plumber Orlando\". At least 2 characters."
    }
  },
  "required": [
    "query"
  ]
}

输出模式

{
  "type": "object",
  "properties": {
    "businesses": {
      "type": "array",
      "description": "Matching businesses. Empty when none are enrolled for that search."
    },
    "available": {
      "type": "boolean",
      "description": "False when no shop is available."
    },
    "message": {
      "type": "string",
      "description": "Says no shop is available when the list is empty."
    }
  },
  "required": [
    "businesses"
  ],
  "description": "Search hits. available is false when no enrolled shop matches."
}
🟢get_business(shop_id)

Use this when the user wants to read one enrolled local home-service business and search_businesses or resolve_business already returned its id. Returns one enrolled shop as JSON: id, brand, legal_name, page, booking_url, phone when published, sms, services as id and name, hours, timezone, verification status and verify_url, and booking_rules and emergency_phone when that shop has them.

输入模式

{
  "type": "object",
  "properties": {
    "shop_id": {
      "type": "string",
      "description": "Enrolled shop id from search_businesses. Examples: florida-pole-barn, florida-security-concepts, booqer-demo-shop."
    }
  },
  "required": [
    "shop_id"
  ]
}

输出模式

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Shop id."
    },
    "booking_url": {
      "type": "string",
      "description": "Booking page URL."
    },
    "services": {
      "type": "array",
      "description": "Published services, each with id and name."
    },
    "hours": {
      "type": "string",
      "description": "Published hours for this shop."
    },
    "timezone": {
      "type": "string",
      "description": "IANA timezone for the hours and slots."
    }
  },
  "required": [
    "id"
  ],
  "description": "One enrolled shop."
}
🟢resolve_business(domain, place, phone)

Use this when the user wants to resolve one enrolled local home-service business from a domain, a place, or a phone number. An ambiguous match is refused. Returns that one identity. No phone, email, or street address is returned.

输入模式

{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Business website domain. Example: floridapolebarn.com."
    },
    "place": {
      "type": "string",
      "description": "City or county. Example: Orange County. Refuses a place that matches more than one shop."
    },
    "phone": {
      "type": "string",
      "description": "Published phone number. Example: (352) 282-0692."
    }
  }
}

输出模式

{
  "type": "object",
  "properties": {
    "enrolled": {
      "type": "boolean",
      "description": "True when the business is in the Booqer directory."
    },
    "identity_match": {
      "type": "string",
      "description": "verified, none, or ambiguous."
    },
    "business_name": {
      "type": "string",
      "description": "Brand name when the match is verified."
    }
  },
  "required": [
    "enrolled",
    "identity_match"
  ],
  "description": "One resolved identity, or an ambiguous or empty match."
}
🟢check_availability(shop_id, date, start, offering)

Use this when the user wants to check availability for a local home-service appointment before booking. Lists the open 30-minute slots for one shop and one date. Booked and blocked times are left out. Each start and end is ISO-8601 with an offset. The shop timezone is America/New_York. date is YYYY-MM-DD, or start is an ISO-8601 timestamp. offering selects that shop's rules from get_business. Does not reserve a slot. Rate limited per IP and per shop.

输入模式

{
  "type": "object",
  "properties": {
    "shop_id": {
      "type": "string",
      "description": "Enrolled shop id from search_businesses. Examples: florida-pole-barn, florida-security-concepts, booqer-demo-shop."
    },
    "date": {
      "type": "string",
      "description": "Calendar date in the shop timezone, America/New_York. Format YYYY-MM-DD. Example: 2026-10-21. Provide date or start."
    },
    "start": {
      "type": "string",
      "description": "ISO-8601 timestamp with an offset. Example: 2026-10-20T14:00:00-04:00. At least 2 hours ahead and no more than 21 days ahead."
    },
    "offering": {
      "type": "string",
      "description": "Service id from get_business. Example: project_consult."
    }
  },
  "required": [
    "shop_id"
  ]
}

输出模式

{
  "type": "object",
  "description": "JSON object returned in the text content."
}
🔴request_booking(shop_id, offering, name, phone, email, ...)

Use this when the user wants to book a local home-service appointment and has already chosen an open time. Confirms a free consult when the slot is open. Calling this again with the same details can create a second booking; if unsure, check get_booking_status first. Requires consent: before calling, show the user the consent text in the consent field and get their agreement. Also requires a name, a valid email, and a problem description. service_address is optional for a phone consult and required for an on-site visit. Disposable, reserved, and blocked email domains are rejected. job_summary falls back to problem. service_area is inferred from the address or city, otherwise the shop city. A phone consult accepts a street, a city and ZIP, or a PO Box. An on-site visit needs a street address. Shop-specific booking rules and emergency_phone come from get_business. offering is an id from get_business. start is an ISO-8601 timestamp, for example 2026-10-20T14:00:00-04:00. The start is at least 2 hours ahead and no more than 21 days ahead. A start outside that window names the field start. Returns status confirmed, a cancel link, and verify_url when the signed receipt is ready. The receipt page does not show the customer. An optional idempotency_key repeats the same result for that shop. Rate limited per IP and per shop, with a per-shop daily cap.

输入模式

{
  "type": "object",
  "properties": {
    "shop_id": {
      "type": "string",
      "description": "Enrolled shop id from search_businesses. Examples: florida-pole-barn, florida-security-concepts, booqer-demo-shop."
    },
    "offering": {
      "type": "string",
      "description": "Service id from get_business. Example: project_consult."
    },
    "name": {
      "type": "string",
      "description": "Customer name. Example: Ada Lovelace."
    },
    "phone": {
      "type": "string",
      "description": "Customer phone. Example: 3525550100. Optional."
    },
    "email": {
      "type": "string",
      "description": "Customer email on a real domain. Example: [email protected]. Disposable and example.com addresses are rejected."
    },
    "start": {
      "type": "string",
      "description": "ISO-8601 timestamp with an offset. Example: 2026-10-20T14:00:00-04:00. At least 2 hours ahead and no more than 21 days ahead."
    },
    "consent": {
      "type": "boolean",
      "description": "Required. Before you call this tool, show the user this exact text and get their agreement: \"I agree to Booqer's Terms and Privacy Policy and consent to Booqer sharing my request with this shop so they can contact me about it.\" Terms: https://booqer.ai/terms. Privacy Policy: https://booqer.ai/privacy. Set true only after the user agrees. Without consent true the call is rejected and nothing is stored."
    },
    "problem": {
      "type": "string",
      "description": "What is wrong, in the customer's words. Example: Gate will not close."
    },
    "service_address": {
      "type": "string",
      "description": "Street, city and ZIP, or PO Box. Optional for a phone consult. Required for an on-site visit. Example: 100 Demo Drive, Clermont FL 34711."
    },
    "job_summary": {
      "type": "string",
      "description": "Short job summary. Falls back to problem when omitted."
    },
    "service_area": {
      "type": "string",
      "description": "City or county. Inferred from the address when omitted. Example: Clermont."
    },
    "idempotency_key": {
      "type": "string",
      "description": "Optional key of 8 to 80 letters, numbers, dots, underscores, colons, or hyphens. A repeat with the same key and shop returns the first booking instead of creating another."
    }
  },
  "required": [
    "shop_id",
    "offering",
    "name",
    "email",
    "start",
    "consent",
    "problem"
  ]
}

输出模式

{
  "type": "object",
  "description": "JSON object returned in the text content."
}
🟢get_booking_status(request_id)

Use this when the user wants to check the status of a local home-service appointment. status is confirmed, pending, canceled, or failed. No customer name, phone, or email.

输入模式

{
  "type": "object",
  "properties": {
    "request_id": {
      "type": "string",
      "description": "Booking id returned by request_booking. UUID. Example: 11111111-1111-4111-8111-111111111111."
    }
  },
  "required": [
    "request_id"
  ]
}

输出模式

{
  "type": "object",
  "description": "JSON object returned in the text content."
}
🟢request_service(business_id, shop_id)

Use this when the user wants to open a quote form for a local home-service business rather than book a confirmed appointment time. Opens the quote widget for one enrolled business. business_id is the provider_business_id from the business feed. shop_id is accepted when business_id is empty. The widget is ui://widget/request-service.html. This call does not store a request and does not confirm a booking. It is rate-limited.

输入模式

{
  "type": "object",
  "properties": {
    "business_id": {
      "type": "string",
      "description": "Enrolled business id from search_businesses. Example: florida-pole-barn."
    },
    "shop_id": {
      "type": "string",
      "description": "Enrolled shop id. Used only when business_id is empty. Example: florida-security-concepts."
    }
  },
  "required": [
    "business_id"
  ]
}

输出模式

{
  "type": "object",
  "description": "Opens the quote form. Does not store a request or confirm a booking."
}
🔴submit_service_request(business_id, offering, name, phone, email, ...)

Sends the user's quote request (name, email, optional phone, service location, preferred time) to the chosen business. Called by the quote form only.

输入模式

{
  "type": "object",
  "properties": {
    "business_id": {
      "type": "string",
      "description": "Enrolled business id. Example: florida-pole-barn."
    },
    "offering": {
      "type": "string",
      "description": "Service id from get_business. Example: project_consult."
    },
    "name": {
      "type": "string",
      "description": "Customer name. Example: Ada Lovelace."
    },
    "phone": {
      "type": "string",
      "description": "Customer phone. Optional when an email is present. Example: 3525550100."
    },
    "email": {
      "type": "string",
      "description": "Customer email on a real domain. Example: [email protected]."
    },
    "service_address": {
      "type": "string",
      "description": "Street address. Optional for a phone consult. Required for an on-site visit. Example: 100 Demo Drive, Clermont FL 34711."
    },
    "start": {
      "type": "string",
      "description": "Preferred time as an ISO-8601 timestamp. Example: 2026-10-21T14:00:00-04:00."
    },
    "consent": {
      "type": "boolean",
      "description": "Required. Before you call this tool, show the user this exact text and get their agreement: \"I agree to Booqer's Terms and Privacy Policy and consent to Booqer sharing my request with this shop so they can contact me about it.\" Terms: https://booqer.ai/terms. Privacy Policy: https://booqer.ai/privacy. Set true only after the user agrees. Without consent true the call is rejected and nothing is stored."
    }
  },
  "required": [
    "business_id",
    "offering",
    "name",
    "email",
    "start",
    "consent"
  ]
}

输出模式

{
  "type": "object",
  "description": "stored is true when the request was saved."
}

社区

评价此服务器

证据

最近观测

已验证未记录版本8 个工具