Skip to content

好啦体检 MCP

cn.com.ihaola/health-checkup-plannerihaola.com.cnstreamable-httpv1.0.0Scanned

企业团检分档报价与企业咨询、个人体检方案推荐、门店查询、体检预约、订单与体检件查询、体检常见问题。合作体检机构 800+ 门店,覆盖 240+ 城市,其中 540+ 门店支持 AI 直接查询与预约。

25 tools: 1 can delete or cancel things, 16 change things and 8 only read.

Tools: 1 delete, 0 irreversible, 16 write, 8 read.
  • Reads private data · 4
  • Reads text others write · 1
  • Can send data out · 2
  • No findings

Anlyon alternative

17 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

25 tools

Deletes or cancels 1Claude Code: deny
  • reservation_cancel[需要登录] 取消预约:按预约号取消;已支付订单会同时发起退款。预约号取自 reservation.book 返回的 serviceid。本体: reservation → Action: cancel 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUr…No findings

    Why it is in this group

    • The name "reservation_cancel" says "cancel": a word for removing or ending something.
    Description, as the server wrote it
    [需要登录] 取消预约:按预约号取消;已支付订单会同时发起退款。预约号取自 reservation.book 返回的 serviceid。本体: reservation → Action: cancel 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
Changes things 16Claude Code: ask
  • cautions[需要登录] 根据体检项目查询注意事项(饮食、用药、禁忌等)。需调用方用户标识(external_user_id 自动注入),partnerid 由服务端按用户标识解析,禁止客户端传。传 checkPackage 查套餐注意事项(必带 vendorid);传 serviceid 仅允许查本人订单。本体: knowledge → Action: caution…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [需要登录] 根据体检项目查询注意事项(饮食、用药、禁忌等)。需调用方用户标识(external_user_id 自动注入),partnerid 由服务端按用户标识解析,禁止客户端传。传 checkPackage 查套餐注意事项(必带 vendorid);传 serviceid 仅允许查本人订单。本体: knowledge → Action: cautions 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • contact_create[需要登录] 创建家属临时联系人。relation 必填,self 由系统创建;姓名、手机号、证件号可后补。本体: contact → Action: create 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。No findings

    Why it is in this group

    • The name "contact_create" says "create": a word for a change.
    Description, as the server wrote it
    [需要登录] 创建家属临时联系人。relation 必填,self 由系统创建;姓名、手机号、证件号可后补。本体: contact → Action: create 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • contact_profile_save[需要登录] 仅在用户明确要求保存或更新长期健康画像时调用;仅推荐方案不得调用。本人不传 contactid,家人必须先解析唯一 contactid,禁止把家人信息写入本人档案。返回更新后的完整画像与 created。本体: contact → Action: profile.save 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 …No findings

    Why it is in this group

    • The name "contact_profile_save" says "save": a word for a change.
    Description, as the server wrote it
    [需要登录] 仅在用户明确要求保存或更新长期健康画像时调用;仅推荐方案不得调用。本人不传 contactid,家人必须先解析唯一 contactid,禁止把家人信息写入本人档案。返回更新后的完整画像与 created。本体: contact → Action: profile.save 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • contact_update[需要登录] 更新就诊人信息(姓名、手机号等)。本体: contact → Action: update 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。No findings

    Why it is in this group

    • The name "contact_update" says "update": a word for a change.
    Description, as the server wrote it
    [需要登录] 更新就诊人信息(姓名、手机号等)。本体: contact → Action: update 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • corp_contact[匿名可调用] 查询好啦商务对接人(团检/商务合作):返回对接人姓名、电话、邮箱、二维码图片 URL。用户报价后需要人工商务对接时调用。本体: corp → Action: contactNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [匿名可调用] 查询好啦商务对接人(团检/商务合作):返回对接人姓名、电话、邮箱、二维码图片 URL。用户报价后需要人工商务对接时调用。本体: corp → Action: contact
  • corp_inquiry[匿名可调用] 提交企业商务咨询。企业客户有任何问题(合作咨询、产品了解、报价请求、投诉建议)均可提交,销售 24h 内联系。本体: corp → Action: inquiryCan send data outNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    What it can reach

    • outboundThe input takes a destination (input.phone): what the tool writes goes there.
    Description, as the server wrote it
    [匿名可调用] 提交企业商务咨询。企业客户有任何问题(合作咨询、产品了解、报价请求、投诉建议)均可提交,销售 24h 内联系。本体: corp → Action: inquiry
  • faq[匿名可调用] 体检 FAQ。不传 query 则列出所有问题。query 必须是短关键词(2-4字,如"报告"、"预约"、"空腹"),不要传完整问句。No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [匿名可调用] 体检 FAQ。不传 query 则列出所有问题。query 必须是短关键词(2-4字,如"报告"、"预约"、"空腹"),不要传完整问句。
  • help[匿名可调用] 三级帮助系统。无参列出本体;传 ontology 列出该本体下工具;传 ontology 和 sub_action 查看参数,sub_action 用完整名称,如 vendor.list、plan.quotation。No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [匿名可调用] 三级帮助系统。无参列出本体;传 ontology 列出该本体下工具;传 ontology 和 sub_action 查看参数,sub_action 用完整名称,如 vendor.list、plan.quotation。
  • order_detail[需要登录] 查询单个订单完整详情,包括预约信息、医院信息、套餐项目、支付状态。本体: order → Action: detail 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [需要登录] 查询单个订单完整详情,包括预约信息、医院信息、套餐项目、支付状态。本体: order → Action: detail 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • plan_quotation[匿名可调用] 企业团检报价:quotes 为对象数组,每档一个方案。每项 = { tier(档名,仅标识该档、不参与报价,返回时回填), budget(人均预算元,必填), healthConcerns(该档健康诉求,必填), populations?(人群数组 man/lady/girl,默认三人,该档) }。可选 partnerId(甲方 UUID),…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [匿名可调用] 企业团检报价:quotes 为对象数组,每档一个方案。每项 = { tier(档名,仅标识该档、不参与报价,返回时回填), budget(人均预算元,必填), healthConcerns(该档健康诉求,必填), populations?(人群数组 man/lady/girl,默认三人,该档) }。可选 partnerId(甲方 UUID),透传给 /plan/quotation 按伙伴定价。返回 data.list(每档 { tier, budget, planList, combinedPrice, discount }),其中 planList 为**按人群的数组**(每项 { population, price, items, planId }),逐档按人群拆分并发取值;planId 是该档该人群的方案标识,体检预约时传给 reservation.book,不要自己拼项目;discount 为该伙伴折数(如 5 表示 5 折,无则 null)。调用前先用 knowledge_get({uri:"objects/checkup-proposal"}) 加载《企业团检方案顾问》引导词作为 agent 的 system prompt;对客话术与输出模板必须遵循该引导词,严禁编造项目/费用。字段说明见 knowledge://objects/checkup-proposal。本体: plan → Action: quotation
  • plan_recommend[需要登录] 个人体检推荐:按调用方身份读用户名下体检件与模板,结合性别、婚姻状况、预算、健康诉求推荐体检项目,返回 data.selected_items(每项带 constraintId)与 planId。planId 直接传给 reservation.book 预约,不要自己拼项目。长耗时,建议每阶段调用 progress.report。本体: pla…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [需要登录] 个人体检推荐:按调用方身份读用户名下体检件与模板,结合性别、婚姻状况、预算、健康诉求推荐体检项目,返回 data.selected_items(每项带 constraintId)与 planId。planId 直接传给 reservation.book 预约,不要自己拼项目。长耗时,建议每阶段调用 progress.report。本体: plan → Action: recommend 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • progress_report[匿名可调用] 长耗时任务进度上报。agent 每完成一个阶段调用一次,text 为给用户看的可读进度,如「报告解析中,预计 10 秒」。不落地业务数据,仅用于向用户展示过程。No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [匿名可调用] 长耗时任务进度上报。agent 每完成一个阶段调用一次,text 为给用户看的可读进度,如「报告解析中,预计 10 秒」。不落地业务数据,仅用于向用户展示过程。
  • reservation_book[需要登录] 体检预约:按 planId 取出项目,交给伙伴接口下单。传 contactId 时直接使用该就诊人。没有 contactId 时,支持 elicitation form 的客户端会先选择已有联系人,或选择新建后填写姓名、手机号、证件类型、证件号、授权、出生日期和性别;出生日期和性别仅在非身份证时必填,服务端在提交后校验。不支持的客户端会收到 c…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [需要登录] 体检预约:按 planId 取出项目,交给伙伴接口下单。传 contactId 时直接使用该就诊人。没有 contactId 时,支持 elicitation form 的客户端会先选择已有联系人,或选择新建后填写姓名、手机号、证件类型、证件号、授权、出生日期和性别;出生日期和性别仅在非身份证时必填,服务端在提交后校验。不支持的客户端会收到 contactEntryUrl,用户可在 H5 添加就诊人后重新发起预约。不要在对话中要求用户发送身份证号。IDType 为 SFZ 时按身份证规则校验。体检项目只来自 planId,客户端不能提交项目。返回 serviceid 作为预约订单号、orderEntryUrl 作为订单列表页链接:用户在 H5 用手机号登录后可看到自己的订单,并可支付、改期/取消、查看检前注意事项、查看体检报告。渠道需要用户支付时返回支付链接 payUrl 和支付提示;客户端支持 elicitation URL 时,服务端通过 URL 模式打开 payUrl,最终结果仍返回 orderEntryUrl,客户端不支持时直接返回 payUrl 和 orderEntryUrl。客户端可使用 payUrl 生成二维码展示给用户。payUrl 有效期为订单创建后 30 分钟。重复预约命中已有未支付订单时,返回原 serviceid 和该订单的 payUrl。status 表示支付状态,预约状态以 rsvStatus 为准。本体: reservation → Action: book 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • reservation_modify[需要登录] 更改预约日期:按预约号改期。本体: reservation → Action: modify 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。No findings

    Why it is in this group

    • The name "reservation_modify" says "modify": a word for a change.
    Description, as the server wrote it
    [需要登录] 更改预约日期:按预约号改期。本体: reservation → Action: modify 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • vendor_brands[匿名可调用] 查各体检品牌覆盖的城市(品牌聚合摘要,不返回具体门店)。本体: vendor → Action: brandsNo findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [匿名可调用] 查各体检品牌覆盖的城市(品牌聚合摘要,不返回具体门店)。本体: vendor → Action: brands
  • welfare_detail[需要登录] 查询指定福利的详细内容,包括检查项目列表、规则说明、适用机构等。本体: welfare → Action: detail 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    [需要登录] 查询指定福利的详细内容,包括检查项目列表、规则说明、适用机构等。本体: welfare → Action: detail 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
Only reads 8Show 8 read-only tools
  • card_list[需要登录] 根据卡号查卡密及兑换使用情况。welfareId 为空=未兑换,非空时串联福利和订单。本体: card → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。No findings

    Why it is in this group

    • The name "card_list" says "list": a word for reading.
    Description, as the server wrote it
    [需要登录] 根据卡号查卡密及兑换使用情况。welfareId 为空=未兑换,非空时串联福利和订单。本体: card → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • contact_get[需要登录] 查询指定就诊人的完整信息(含脱敏证件号)。本体: contact → Action: get 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。Reads private dataNo findings

    Why it is in this group

    • The name "contact_get" says "get": a word for reading.

    What it can reach

    • private-dataThe name "contact_get" says "get" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "contact": it reads contacts.
    Description, as the server wrote it
    [需要登录] 查询指定就诊人的完整信息(含脱敏证件号)。本体: contact → Action: get 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • contact_list[需要登录] 按 relation/gender 查询当前用户的联系人。用户提到家人时必须先调用;唯一候选可直接使用 contactid,多个候选请用户选择,未选定时禁止保存画像。本体: contact → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=4000…Reads private dataNo findings

    Why it is in this group

    • The name "contact_list" says "list": a word for reading.

    What it can reach

    • private-dataThe name "contact_list" says "list" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "contact": it reads contacts.
    Description, as the server wrote it
    [需要登录] 按 relation/gender 查询当前用户的联系人。用户提到家人时必须先调用;唯一候选可直接使用 contactid,多个候选请用户选择,未选定时禁止保存画像。本体: contact → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • contact_profile_get[需要登录] 按 contactid 查询联系人的结构化健康画像。不传 contactid 时读取当前用户本人。本体: contact → Action: profile.get 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。Reads private dataNo findings

    Why it is in this group

    • The name "contact_profile_get" says "get": a word for reading.

    What it can reach

    • private-dataThe name "contact_profile_get" says "get" and "contact": it reads contacts.
    • private-dataThe description's first sentence says "contact": it reads contacts.
    Description, as the server wrote it
    [需要登录] 按 contactid 查询联系人的结构化健康画像。不传 contactid 时读取当前用户本人。本体: contact → Action: profile.get 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • knowledge_get[匿名可调用] 按需查询领域知识。外部可用 URI: enums(状态码) / objects/contact(联系人) / objects/contact-profile(健康画像) / objects/checkup-proposal(企业团检方案顾问引导词)。查 action 参数用 help()。团检报价场景先用 knowledge_get({uri…Reads private dataReads text others writeCan send data outNo findings

    Why it is in this group

    • The name "knowledge_get" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "contact": it reads contacts.
    • untrusted-inputThe description's first sentence says "uri": it reads web pages, which anyone can write.
    • untrusted-inputThe input takes a URL (input.uri), and the tool reads it: it reads web pages, which anyone can write.
    • outboundThe input takes a URL (input.uri): a request to a URL can carry data to whoever runs it.

    Claude Code: ask, because it is tagged outbound.

    Description, as the server wrote it
    [匿名可调用] 按需查询领域知识。外部可用 URI: enums(状态码) / objects/contact(联系人) / objects/contact-profile(健康画像) / objects/checkup-proposal(企业团检方案顾问引导词)。查 action 参数用 help()。团检报价场景先用 knowledge_get({uri:"objects/checkup-proposal"}) 加载《企业团检方案顾问》引导词作为外部 MCP agent 的 system prompt,再调 plan_quotation;报价话术与输出模板必须遵循该引导词
  • order_list[需要登录] 查订单。查询 userOrders 集合。调用方归属甲方由服务端身份解析,filter 中无需传 partnerid。支持 $gte/$lte 日期范围、$in/$or 多值匹配。本体: order → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code…No findings

    Why it is in this group

    • The name "order_list" says "list": a word for reading.
    Description, as the server wrote it
    [需要登录] 查订单。查询 userOrders 集合。调用方归属甲方由服务端身份解析,filter 中无需传 partnerid。支持 $gte/$lte 日期范围、$in/$or 多值匹配。本体: order → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。
  • vendor_list[匿名可调用] 查门店地址。支持三种方式,至少传一种:1) hospitalCode(可带 vendorids,按第一个品牌查);2) longitude+latitude(可带 radius 米,默认 50000,可带 vendorids);3) province/city/district(可带 vendorids)。外部调用仅支持 health100/…No findings

    Why it is in this group

    • The name "vendor_list" says "list": a word for reading.
    Description, as the server wrote it
    [匿名可调用] 查门店地址。支持三种方式,至少传一种:1) hospitalCode(可带 vendorids,按第一个品牌查);2) longitude+latitude(可带 radius 米,默认 50000,可带 vendorids);3) province/city/district(可带 vendorids)。外部调用仅支持 health100/haolaruici,partnerid 仅内部可用。不确定品牌和覆盖城市时先用 vendor.brands。本体: vendor → Action: list
  • welfare_list[需要登录] 查用户体检件。查询 userWelfare 集合。传 {customerMobile: "138xxx"} 或 {name: "张三"} 查对应用户的体检件。已知 userid 可直接传 {userid: "xxx"}。本体: welfare → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 …No findings

    Why it is in this group

    • The name "welfare_list" says "list": a word for reading.
    Description, as the server wrote it
    [需要登录] 查用户体检件。查询 userWelfare 集合。传 {customerMobile: "138xxx"} 或 {name: "张三"} 查对应用户的体检件。已知 userid 可直接传 {userid: "xxx"}。本体: welfare → Action: list 鉴权:需要用户登录令牌,或已经绑定用户的云市场实例凭证。未登录调用返回 401;云市场实例未绑定用户时返回 code=40003 和 data.bindUrl。

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

8 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 1 untrusted-input tool breaks every one.

Reads private data4
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write1
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out2
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__health-checkup-planner__knowledge_get"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

No check matched anything in these tool definitions. That is not a safety guarantee.

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http health-checkup-planner https://ai.ihaola.com.cn/api/mcp/haola-pe
claude mcp add --transport http health-checkup-planner https://ai.ihaola.com.cn/api/mcp/haola-pe

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__health-checkup-planner__vendor_list",
      "mcp__health-checkup-planner__order_list",
      "mcp__health-checkup-planner__welfare_list",
      "mcp__health-checkup-planner__contact_list",
      "mcp__health-checkup-planner__contact_get",
      "mcp__health-checkup-planner__contact_profile_get",
      "mcp__health-checkup-planner__card_list"
    ],
    "ask": [
      "mcp__health-checkup-planner__vendor_brands",
      "mcp__health-checkup-planner__corp_inquiry",
      "mcp__health-checkup-planner__corp_contact",
      "mcp__health-checkup-planner__plan_quotation",
      "mcp__health-checkup-planner__plan_recommend",
      "mcp__health-checkup-planner__faq",
      "mcp__health-checkup-planner__knowledge_get",
      "mcp__health-checkup-planner__help",
      "mcp__health-checkup-planner__welfare_detail",
      "mcp__health-checkup-planner__cautions",
      "mcp__health-checkup-planner__order_detail",
      "mcp__health-checkup-planner__contact_create",
      "mcp__health-checkup-planner__contact_update",
      "mcp__health-checkup-planner__contact_profile_save",
      "mcp__health-checkup-planner__reservation_book",
      "mcp__health-checkup-planner__reservation_modify",
      "mcp__health-checkup-planner__progress_report"
    ],
    "deny": [
      "mcp__health-checkup-planner__reservation_cancel"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as health-checkup-planner. Review it before you use it.

Capability tags behind 5 rules
  • mcp__health-checkup-planner__corp_inquiry outbound
  • mcp__health-checkup-planner__knowledge_get private-data, untrusted-input, outbound
  • mcp__health-checkup-planner__contact_list private-data
  • mcp__health-checkup-planner__contact_get private-data
  • mcp__health-checkup-planner__contact_profile_get private-data

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/cn.com.ihaola/health-checkup-planner/verify?hash=d896ead8a94b6847d7d5ecd8f95208bff6e538537566ed9d2c49024f3ab683ef" | jq -e '.changed == false'

Pinned hash d896ead8a94b, from Oct 30, 2026, 10:17 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/cn.com.ihaola/health-checkup-planner/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for cn.com.ihaola/health-checkup-planner
[![anlyon.dev](https://anlyon.dev/badge/cn.com.ihaola/health-checkup-planner.svg)](https://anlyon.dev/servers/cn.com.ihaola/health-checkup-planner)

Source: MCP Registry. Synced Oct 30, 2026, 10:17 UTC.