{
  "version": "2026-10-24",
  "count": 12,
  "tools": [
    {
      "name": "search_merchants",
      "description": "在上海/各城市的本地生活门店里搜索。可按区、品类、场景（下雨天/带娃/约会）、人均上限、是否需要免预约、营业时间是否覆盖目标时段筛选；结果按性价比排序，返回最省 token 的一行一店格式（含 slug，用于后续查询）。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "description": "关键词，如 拼豆 / 咖啡 / 手工"
          },
          "city": {
            "type": "string",
            "description": "城市，如 上海"
          },
          "district": {
            "type": "string",
            "description": "区，如 静安区"
          },
          "category": {
            "type": "string",
            "description": "品类，如 拼豆"
          },
          "life": {
            "type": "string",
            "enum": [
              "play",
              "eat",
              "wear",
              "live",
              "use",
              "move",
              "care"
            ],
            "description": "生活场景：玩/吃/穿/住/用/行/健康"
          },
          "scene": {
            "type": "string",
            "description": "场景关键词，如 下雨天 / 带孩子 / 约会"
          },
          "maxPrice": {
            "type": "number",
            "description": "人均价格上限，单位元"
          },
          "freeBooking": {
            "type": "boolean",
            "description": "只要免预约的店"
          },
          "openFrom": {
            "type": "string",
            "description": "需要营业覆盖的起始时间，如 13:00"
          },
          "openTo": {
            "type": "string",
            "description": "需要营业覆盖的结束时间，如 20:00"
          },
          "limit": {
            "type": "integer",
            "description": "最多返回几家，默认 10"
          }
        }
      }
    },
    {
      "name": "get_merchant",
      "description": "按 slug 取一家店的完整信息：地址、地铁、营业时间、电话微信、套餐价格、包含项、承诺、适合人群、可信等级、性价比、常见问题、门店页链接。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "门店短名，如 douaipin"
          }
        },
        "required": [
          "slug"
        ]
      }
    },
    {
      "name": "get_booking_info",
      "description": "取一家店的「怎么预约」信息：预约方式、营业时间、电话、微信、在线预约链接，并给出一段可直接照着说的代订话术。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "门店短名"
          }
        },
        "required": [
          "slug"
        ]
      }
    },
    {
      "name": "get_offers",
      "description": "列出某家店可购买的商品（SKU）：名称、价格、计价单位（按人/按单）、人数区间、适用日期（工作日/节假日）、时长、包含项、加购项。传入 people 可直接算出该人数下的总价；传入 when（weekday/holiday）可按日期筛选。AI 比价、算钱、推荐套餐时用这个。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "门店短名"
          },
          "people": {
            "type": "integer",
            "description": "人数，用于筛掉不匹配的套餐并算总价"
          },
          "when": {
            "type": "string",
            "enum": [
              "weekday",
              "holiday",
              "any"
            ],
            "description": "出行日期类型：工作日 / 节假日 / 不限"
          }
        },
        "required": [
          "slug"
        ]
      }
    },
    {
      "name": "get_pick",
      "description": "★推荐入口：按条件直接返回「加权排序后的门店」，AI 不用自己比价、权衡、排序。支持城市/区/商圈/地铁站/品类/场景/预算 + 偏好档（cheap 省钱 / near 少走路 / quiet 安静 / family 带娃 / quality 用心 / balanced 综合）。回答「帮我选一个」时优先用这个，而不是自己算。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "city": {
            "type": "string",
            "description": "城市，如 上海"
          },
          "district": {
            "type": "string",
            "description": "区，如 静安区"
          },
          "area": {
            "type": "string",
            "description": "商圈名或短名，如 天目中路"
          },
          "metro": {
            "type": "string",
            "description": "地铁站名（曲阜路站）或线路名（8 号线）"
          },
          "category": {
            "type": "string",
            "description": "品类，如 拼豆"
          },
          "scene": {
            "type": "string",
            "description": "场景，如 下雨天 / 带娃"
          },
          "maxPrice": {
            "type": "number",
            "description": "价格上限（元）"
          },
          "hotel": {
            "type": "boolean",
            "description": "只看酒店/民宿/住宿"
          },
          "breakfast": {
            "type": "boolean",
            "description": "要求含早餐"
          },
          "parking": {
            "type": "boolean",
            "description": "要求有停车场"
          },
          "evCharging": {
            "type": "boolean",
            "description": "要求有充电桩"
          },
          "checkoutAfter": {
            "type": "string",
            "description": "最晚退房不早于该时间，如 14:00"
          },
          "profile": {
            "type": "string",
            "enum": [
              "balanced",
              "cheap",
              "near",
              "quiet",
              "family",
              "quality"
            ],
            "description": "偏好档：用户说什么就用哪档"
          },
          "limit": {
            "type": "integer",
            "description": "返回前几家，默认 3"
          }
        }
      }
    },
    {
      "name": "list_scopes",
      "description": "列出当前可用的查询范围（有哪些区 / 商圈 / 地铁站 / 地铁线 / 品类 / 场景及数量），用于构造 get_pick 的参数。",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "list_filters",
      "description": "列出可用的筛选值（城市/区/品类/场景）与参数示例，帮助构造 search_merchants 查询。",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    },
    {
      "name": "create_booking",
      "description": "帮用户提交预订/订座（酒店=stay，餐厅=table）。必须先把日期、时间、人数、姓名、手机号复述给用户并得到明确同意，再调用本工具。返回 6 位预订码；不要重复调用（同条件 15 分钟内会返回原码）。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "门店短名（如 douaipin）"
          },
          "kind": {
            "type": "string",
            "enum": [
              "stay",
              "table"
            ],
            "description": "stay=酒店住宿；table=餐厅订座"
          },
          "date": {
            "type": "string",
            "description": "日期 YYYY-MM-DD"
          },
          "slot": {
            "type": "string",
            "description": "时间 HH:MM（餐厅）"
          },
          "checkin": {
            "type": "string",
            "description": "入住日期 YYYY-MM-DD（酒店）"
          },
          "checkout": {
            "type": "string",
            "description": "离店日期 YYYY-MM-DD（酒店）"
          },
          "room": {
            "type": "string",
            "description": "房型名（酒店，可选）"
          },
          "party": {
            "type": "integer",
            "description": "人数"
          },
          "name": {
            "type": "string",
            "description": "称呼（用户提供）"
          },
          "phone": {
            "type": "string",
            "description": "11 位手机号（用户提供，用于商家确认）"
          },
          "note": {
            "type": "string",
            "description": "备注（可选）"
          }
        },
        "required": [
          "slug",
          "name",
          "phone"
        ]
      }
    },
    {
      "name": "get_booking_record",
      "description": "查一笔预订的最新状态（需预订码 + 手机号）。用于告诉用户「商家接单了吗」。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "description": "6 位预订码"
          },
          "phone": {
            "type": "string",
            "description": "下单时的手机号"
          }
        },
        "required": [
          "code"
        ]
      }
    },
    {
      "name": "ask_shop",
      "description": "向某个门店的「AI 店员」提问（营业时间/价格/停车/包间/能否订座等）。信息里没有的它会说不知道。回答可直接转述给用户。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "门店短名"
          },
          "question": {
            "type": "string",
            "description": "用户的问题，原话即可"
          },
          "channel": {
            "type": "string",
            "description": "来源渠道，默认 agent"
          }
        },
        "required": [
          "slug",
          "question"
        ]
      }
    },
    {
      "name": "leave_message",
      "description": "替用户给门店留需求（要回电/订座/问价），需要用户同意提供称呼和手机号。返回后告诉用户「已转达，店里会联系你」。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "description": "称呼"
          },
          "phone": {
            "type": "string",
            "description": "11 位手机号"
          },
          "need": {
            "type": "string",
            "description": "需求原话"
          },
          "when": {
            "type": "string",
            "description": "期望时间（可选）"
          },
          "channel": {
            "type": "string",
            "description": "来源渠道，默认 agent"
          }
        },
        "required": [
          "slug",
          "phone",
          "need"
        ]
      }
    },
    {
      "name": "update_sku",
      "description": "商家后台专用：增改删套餐/产品（SKU）。**必须带商家 token**，只能改自己店；AI 不可代未登录商家操作。action: add/update/remove/list；sku: {name, price, time, cat}。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "description": "商家登录 token（必需）"
          },
          "action": {
            "type": "string",
            "enum": [
              "add",
              "update",
              "remove",
              "list"
            ]
          },
          "id": {
            "type": "string",
            "description": "SKU id（可选，优先于 name）"
          },
          "sku": {
            "type": "object",
            "description": "{name, price, time, cat}"
          }
        },
        "required": [
          "token",
          "action"
        ]
      }
    }
  ]
}