SocialHub.AI

MCP 集成指南

模型上下文协议 (Model Context Protocol (MCP)) 是一个开放标准,允许 AI 助手直接调用外部工具。SocialHub 实现了一个 MCP 服务器,因此您可以从 Claude Desktop、Cursor 或任何 MCP 兼容的客户端管理商店、会员、优惠券和积分。

无需编写代码,只需向 AI 发出以下指令:“列出所有活跃店铺” 或 “奖励会员 m_abc123 500 积分”,AI 助手就会代表您调用 SocialHub MCP 工具。

连接配置

SocialHub 公开了一个 Streamable HTTP MCP 端点。您需要以下两项信息:

端点 URLhttps://flash.socialhub.ai/api/mcp
API 密钥头Authorization: Bearer fl_live_...

在 /flash/account/api-keys 创建 API 密钥。确保密钥具有您计划使用的工具所需的权限范围。

Claude Desktop 配置

将以下内容添加到您的 Claude Desktop MCP 设置 (claude_desktop_config.json):

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer fl_live_your_key_here"
      }
    }
  }
}

Cursor 配置

在 Cursor 中,转到 设置 > MCP 并添加新服务器:

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer fl_live_your_key_here"
      }
    }
  }
}

type 字段也接受 streamable-http 作为别名。这些桌面客户端会将密钥存储在其配置文件中——请将其视为机密信息,并尽可能使用环境变量形式(如下所示),以避免将明文密钥存储在磁盘上。

从 Claude Code 连接

使用 claude mcp add 命令将 SocialHub 添加为 HTTP MCP 服务器。请先将密钥导出为环境变量,以确保明文密钥不会出现在配置文件或 shell 历史记录中:

export FLASH_API_KEY="fl_live_your_key_here"

claude mcp add --transport http flash \
  https://flash.socialhub.ai/api/mcp \
  --header "Authorization: Bearer ${FLASH_API_KEY}"

或者在存储库根目录提交项目范围的 .mcp.json。使用 ${FLASH_API_KEY} 引用环境变量 — 切勿粘贴明文密钥:

{
  "mcpServers": {
    "flash": {
      "type": "http",
      "url": "https://flash.socialhub.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${FLASH_API_KEY}"
      }
    }
  }
}

连接后进行自检:

  • 运行 claude mcp list 并确认 flash 显示已连接。
  • 让助手“列出可用的 SocialHub 工具” — 您应该只看到您的密钥范围允许的工具。
  • 服务器密钥必须恰好是flash;确保在启动 Claude Code 的 shell 中导出 FLASH_API_KEY。

问题:无效或已撤销的密钥显示为连接失败,而不是身份验证提示。 SocialHub 使用不记名令牌身份验证,无 OAuth 回退,因此,如果服务器显示失败/已断开连接,请在调试其他内容之前重新检查键值并确保其具有所需的范围。

可用工具 (75)

cwm_get_forecast_capabilities

读 TimesFM 2.5 总体趋势/分位数准备情况和租户私有融合 7/30/90 天准备情况。等待培训/验证是明确的。需要 predictions:read.

参数:
cwm_predict_next_behaviors

一项消费者预测:最终下一事件分布/排名+ CWM + TimesFM 7/30/90d purchaseWindows首选已获租户事件模型;备选方案为一个内部公开先验参考。不包含个人专家输出。事件概率未经校准;购买窗口。 null 直至经过培训/验证。需要 predictions:read; metrics:read 此外,还开启了购买窗口。

参数: member_id*
cwm_forecast_aggregate_trend

使用 TimesFM 2.5 预测品牌/类别每日指标:点 + q10..q90。缺少历史记录将返回 null。聚合分位数未经校准;永远无法使用个人区间。需要读取 predictions:read 和 metrics:read。

参数: metric?, horizon_days?, history_days?, category?
cwm_predict_purchase_windows

租户私人 CWM + TimesFM 7/30/90天时的购买概率(0-1)。训练和验证前为空;无预设备选方案。需要 predictions:read AND metrics:read.

参数: member_id
list_metrics

列出此团队可从受管语义层(键、标签、单位、认证、类别)获取的指标。请先调用此方法以发现有效的指标键。需要 metrics:read 权限。

参数: category?
describe_metric

获取单个指标的完整规范:权威定义、单位、认证、维度、可筛选字段、可调参数和使用指南。需要 metrics:read.

参数: metric
query_metric

运行受控指标查询,并返回包含权威定义的数值。选择指标键以及可选的维度、筛选器、时间范围、粒度和周期性比较——无需使用 SQL。需要 metrics:read 权限。

参数: metric, dimensions?, filters?, timeRange?, grain?, compare?, params?
breakdown_metric

将某个指标按单一维度在固定的近期时间段内进行细分,并使用易于理解的标签(商店/层级/渠道名称)。需要 metrics:read.

参数: metric, dimension, days, state?
ask_metrics

通过选择正确的受管指标、获取指标并分解主要指标来回答自然语言问题。用于开放式诊断。需要 metrics:read 权限。

参数: question, categories?
list_stores

列出当前团队的所有门店。支持可选的状态筛选、搜索和分页功能。

参数: status?, search?, limit?, offset?
get_store

通过门店 ID 获取特定门店的详细信息

参数: store_id
list_members

列出忠诚度计划成员。支持节目过滤和分页。

参数: programId?, limit?, offset?, status?
get_member

通过 ID 获取特定会员的详细信息。返回已解密的个人身份信息 (PII) 字段。

参数: member_id
list_coupon_pools

列出优惠券池。支持状态和类型筛选。

参数: status?, coupon_type?, limit?, offset?
get_dashboard_stats

运营仪表盘快照(捕获量、扫描量、捕获率、优惠券、门店、套餐)。此指标并非受监管指标——请使用指标工具获取权威的业务指标。

参数: (none)
earn_points

向会员奖励忠诚度积分。返回交易 ID 和新余额。

参数: member_id, amount, description?
redeem_points

从会员账户中扣除积分(先进先出)。

参数: member_id, amount, reason
get_points_balance

获取会员当前的积分余额和近期交易记录。

参数: member_id, limit?
get_member_coupons

获取会员可用的(未兑换、未过期的)优惠券。

参数: member_id
get_member_tier

获取会员的当前等级、升级到下一等级的要求以及所有等级。

参数: member_id
get_member_receipts

获取会员的收据提交历史记录,包括 OCR 状态和积分奖励。

参数: member_id, limit?
redeem_points_for_coupon

从指定池中兑换忠诚度积分以获得优惠券(原子性:积分 + 优惠券,或两者都不兑换)。

参数: member_id, pool_id, points_cost
issue_coupon

从优惠券池向会员发放优惠券(仅限单个会员;批量用户需通过 So 确认流程)。需要 coupons:write 权限。

参数: member_id, pool_id, run_id?
check_email_frequency

检查营销邮件是否可以在规定的发送频率限制内(每天1封、每周2封、每月4封)发送到指定地址。

参数: email
list_ambassador_candidates

列出忠诚度计划的评分大使候选人(专业版)。精简版为空。

参数: band?, status?, level?, sort_by?, limit?, offset?
get_ambassador_metrics

获取大使投资回报率报告:三个子目标、第二个月留存率以及 90 天的审批节点。

参数: since_days?, assumed_paid_cac_usd?
issue_ambassador_code

颁发或升级会员的个人大使联盟代码。返回代码string。

参数: member_id, single_use?, max_redemptions?, min_order_amount?
get_tracking_stats

获取页面访问/行为分析:概览、热门页面、设备细分或流量来源。

参数: metric?, period?, start?, end?, campaign?, limit?
get_member_profile

会员的综合资料(可访问性、同意/CCPA、忠诚度、商务/类别/渠道/互动汇总、已声明的偏好、标签、粗略地理位置、年龄段)。已隐去个人身份信息——不包含姓名或联系方式。需要 members:read 权限。

参数: member_id
get_member_timeline

收集会员近期行为时间线(访问记录、积分、优惠券、电子邮件、收据)及摘要,以制定个性化操作。返回已解密的个人身份信息。需要 members:behavior:读。

参数: member_id, limit?
list_segments

列出团队的受众群体(名称、状态、缓存成员数)。必需 segments:read.

参数: status?, limit?, offset?
create_segment

根据结构化条件(而非 SQL)创建受众细分;拒绝重复项。需要 segments:write 权限以及用户拥有的密钥。

参数: name, conditions, description?
list_automations

列出团队的自动化流程(事件触发的营销活动)及其状态。需要 automations:read 权限。

参数: status?
pause_automation

按活动 ID 暂停正在运行的自动化流程(幂等)。需要 automations:write 权限。

参数: campaign_id
list_campaign_templates

列出此团队可用的营销活动模板(官方模板和已保存模板),以查找 create_campaign_draft 的 template_id。需要 campaigns:read 权限。

参数: limit?
list_campaigns

列出团队最近的活动(ID、标题、状态),以查找 source_campaign_id 从中克隆草稿。需要 campaigns:read.

参数: limit?, status?
create_campaign_draft

从模板或之前的活动创建活动草稿(切勿发送——需要人工审核)。 campaigns:write-草稿。

参数: title, template_id?, source_campaign_id?, segment_id?, merge_context?
check_member_reach

检查成员是否在最近的某个时间段内已在频道中被联系过(任何系统)— 避免过度联系。需要 members:behavior:read 权限。

参数: member_id, channel, days?
create_member

创建会员,或通过externalId/email幂等解析现有会员。MCP不启用营销许可。需要members:write权限。

参数: email, fullName, phone?, externalId?, birthMonth?, birthDay?
update_member

更新会员的个人资料/身份信息(电子邮件、电话、 fullName, externalId(状态)。团队所有权强制执行。需要 members:write.

参数: member_id, email?, fullName?, phone?, externalId?, status?
upsert_store

为该团队创建一个商店,或更新与 externalId 匹配的现有商店。需要 stores:write 权限。

参数: name, externalId?, address?, city?, state?, country?, timezone?
ingest_order

记录采购订单并自动奖励积分(成员已解决) memberId > externalId > 电子邮件)。需要 orders:write.

参数: externalOrderId, customer, totalAmount, financialStatus?, currency?, orderName?, storeId?
reverse_points

从会员处追回积分,并与原始交易 ID 关联 — 用于 POS/ERP 退款或作废。需要 points:write 权限。

参数: member_id, reversesTransactionId, amount, reason
list_tags

列出团队的标签定义(键、名称、生命周期、类别、覆盖范围)。在读取/分配成员标签之前,请先查找 tag_key。需要 tags:read 权限。

参数: status?, group?, limit?, offset?
get_member_tags

获取成员当前的标签(键、名称、生命周期、值、来源、 assignedAt需要 members:read.

参数: member_id
assign_tag

通过 tag_key 手动为成员分配标签(运算符覆盖;与规则扫描绑定)。需要 tags:write 权限。

参数: member_id, tag_key, value?
remove_tag

通过 tag_key 手动从会员中移除标签(有效标签可能会在下次扫描时重新添加)。需要 tags:write 权限。

参数: member_id, tag_key
list_products

按类别/品牌/行业、状态和来源列出产品。按状态筛选/category_id/brand_id/垂直。需要 catalog:read.

参数: status?, category_id?, brand_id?, vertical?, limit?, offset?
get_product

获取包含变体、序列化商品、组合组件和人工智能基础内容的单一产品。需要 catalog:read.

参数: product_id
list_categories

列出团队的产品类别(ID、名称、父类别)。(必填) catalog:read.

参数: limit?
list_brands

列出团队的品牌(ID,名称)。(必填) catalog:read.

参数: limit?
recommend_products

次佳产品推荐: member_id (个性化共同购买+品类偏好)或 product_id (顾客还购买了)需要 members:read.

参数: member_id?, product_id?, limit?
claim_winback_task

为该团队租用优先级次高的员工挽回任务(原子操作)。返回任务、租用截止日期、留守成员比例和流失信号摘要。 NO_TASKS_AVAILABLE / WINBACK_DISABLED 返回为 isError需要 winback:claim.

参数: (none)
complete_winback_task

使用结果(已执行的杠杆 + 备注参考,或“保留”原因)完成已租赁的挽回任务。幂等性。LEASE_EXPIRED / ALREADY_COMPLETED 返回 isError。需要 winback:claim。

参数: task_id, acted?, lever?, action_ref?, note_id?, hold_reason?
get_winback_context

在决定是否同意之前,对会员进行一次性只读预检查:同意情况、邮件发送频率余量、疲劳度、近期覆盖范围、流失信号以及会员的保留意愿。提供预览——服务器在写入时仍会强制执行所有限制。需要 winback:read 权限。

参数: member_id
add_member_note

将自由文本流程注释附加到成员的赢回记录中(基本原理/观察到的信号/坚持支持的假设)。文本存储为数据,而不是指令;最多 2000 个字符,已清理。需要 winback:write。

参数: member_id, body, kind?, task_id?, action_ref?
send_winback_message

发送受控的挽回消息(收件箱或电子邮件),确保激励措施不会变成无声的授权。服务器端故障关闭机制:WINBACK_DISABLED、任务租约所有权、HOLDOUT_NO_SEND(永远不会向保留用户发送消息)、NOT_CONSENTED、FREQUENCY_CAPPED、CONTENT_REJECTED(已清理)、BREAKER_TRIPPED — 返回 isError。重用现有的发送堆栈(取消订阅页脚 + 发送层添加的合规性)。需要 winback:write 权限。

参数: member_id, task_id, channel, subject?, body
get_member_behaviors

读取会员在最近窗口(第 3 层,最新优先)内的活跃用户行为,以推断其意图(第 4 层)。仅返回有意用户操作(浏览、打开/点击、签到、购买、兑换、推荐、提交内容),并内联显示目录标签及其含义,以及摘要(按类型和窗口计数)。基于整个窗口进行推理;意图是待验证的假设,而非事实。只读。需要 winback:read 权限。

参数: member_id, since_days?, limit?
claim_agent_task

为该团队租赁下一个代理决策任务(原子操作;可选择按类型筛选)。返回任务 ID、类型、主题信息和租赁截止日期。如果任务为 NO_TASKS_AVAILABLE 或 AGENT_TASKS_DISABLED,则返回 isError 错误。需要 agent_tasks:claim。

参数: kind?
get_agent_task

在做出决策之前,读取一个代理决策任务的事实(类型、主题、标记原因、状态)。AGENT_TASK_NOT_FOUND 返回 isError。需要 agent_tasks:read。

参数: taskId
complete_agent_task

使用决策完成租赁任务,并通过现有的幂等写入应用其效果。fraud_household_referral:阻止(追回双方权限)/允许(忽略标记)/升级(交由人工处理)。ALREADY_COMPLETED / NOT_LEASE_OWNER / LEASE_EXPIRED 返回 isError。需要 agent_tasks:claim。

参数: taskId, decision, reason?
list_objects

列出此团队可以进行推理的业务对象:核心平台对象(会员、订单、商店、优惠券、营销活动、产品、细分、标签)以及此团队的MCP可见自定义对象——键、标签和权威的单行含义。首先调用以发现有效的object键。需要 introspection:read 权限。

参数: (none)
describe_object

描述受管注册表中的一个业务 object:权威含义加上属性,这些属性分为事实(列支持)、派生(具有时效性的指标/标签/汇总引用——绝不重新派生相同指标)和自定义(此团队的自定义字段)。PII 属性仅返回元数据,不返回值。fields=summary(默认)或 full。需要 introspection:read 权限。

参数: object, fields?
list_actions

列出受管代理的行为(代理可以做什么):目标 object副作用、齿轮(自动/审核/禁止)、服务器端前提条件键、值上限和可逆性——在提议写入之前进行自检。可选择按以下条件筛选: object需要 introspection:read.

参数: object?
list_stamp_programs

列出该队的集邮卡(eStamp程序信息:ID、姓名、完成所需印章数、奖励类型(优惠券/积分/手动)、自动重置和状态。请先致电获取信息。 program_id需要 stamp:read.

参数: (none)
get_member_stamp_cards

获取会员的有效集章卡:项目名称、当前集章数、所需集章数、已完成集章数和奖励。需要 stamp:read 权限。

参数: member_id
grant_stamps

为参与集点活动的会员(例如,到店消费)授予集点。使用 `idempotency_key` 实现幂等性;集点完成后,奖励(优惠券/积分)将自动发放。每次调用奖励数量有上限。需要 `stamp:write` 权限。

参数: program_id, member_id, amount?, reason?, idempotency_key?
get_member_points

会员积分:可用余额、累计积分、兑换次数、当前等级、即将到期批次。会员专属密钥 → 个人积分(省略) member_id);团队密钥→通过 member_id需要 loyalty:self:读。

参数: member_id?
get_member_points_history

会员近期积分交易记录(已赚取/已兑换/已调整),按时间倒序排列。会员专属密钥 → 个人历史记录;团队密钥 → 通行证 member_id需要 loyalty:self:读。

参数: member_id?
get_member_rewards

会员可使用积分兑换的奖励——包含积分兑换价格的奖励目录,并根据会员余额的承受能力进行标记。会员专属密钥→自用;团队密钥→通行。 member_id需要 loyalty:self:读。

参数: member_id?
get_loyalty_program_rules

会员忠诚计划运作方式——积分赚取比例、迎新奖励、积分价值、如何加入——以及品牌官方常见问题解答。公开信息。会员专属密钥无需争辩。要求 loyalty:self:读。

参数: member_id?
list_synthetic_scenarios

列出合成面板模拟场景,并注明每个场景的真实可用性边界、置信上限和输入字段。请先调用工具选择类型。需要 metrics:read 权限。

参数: (none)
get_synthetic_calibration

品牌合成面板校准(过去合成预测与实际情况的命中率;null,直到有回测数据为止)。需要 metrics:read 权限。

参数: (none)
get_synthetic_report

阅读这份冻结的诚实报告,了解合成面板运行情况——方向性解读、置信上限、抑制标志、主题——或 blockReason 如果尚未准备就绪。需要 metrics:read.

参数: run_id
run_synthetic_panel

运行合成面板:对特定群体的去标识化数字孪生体进行刺激反应,生成客观的趋势性报告(而非绝对真实数据)。返回一个用于轮询的 run_id。每日运行次数上限为 50 个孪生体。需要 synthetic:write 模块。

参数: segment_id, kind, fields

安全与隐私

MCP界面是AI便捷层,而非批量管理工具。以下几点需要注意:

  • 服务器是边界,而不是聊天。写入操作(奖励/兑换积分、发放优惠券、发放大使代码)需要匹配的写入范围和由服务器端防护来限制:每个调用值上限加上每个键写入速率限制,两者都强制失败关闭。你的人工智能客户端要求的任何聊天确认都是礼貌的——服务器实际上是阻止泄露的密钥或从消耗点提示注入的模型。
  • 某些读取工具会返回会员的个人身份信息 (PII)。 诸如 get_member 和 list_members 之类的工具可以将解密后的姓名和电子邮件地址返回到您的 AI 客户端。请妥善处理这些数据,并优先使用最小权限密钥。
  • 切勿提交明文密钥。始终在已签入的 .mcp.json 中引用 ${FLASH_API_KEY},而不是直接引用密钥本身。
  • 使用最小权限、只读键。 创建一个仅包含所需工具的键。如果某个键缺少工具的权限范围,则该工具将被隐藏——它永远不会出现在列表中。

数据来自受管语义层

AI 报告的每一项指标——GMV、活跃会员、兑换率等等——都经过 SocialHub 的受管指标层,该层为每个指标提供单一的权威定义(和认证)。 list_metrics, describe_metric, query_metric, breakdown_metric, 和 ask_metrics 工具根据该管理机制选择指标键和维度—— 人工智能从不编写 SQL 语句这样一来,你得到的数据就与你的仪表盘数据相符,而不是临时性的、容易出现偏差的汇总数据。

对话示例

你: “列出所有活跃商店”
Claude: 调用状态为“active”的 list_stores
Claude: “您有 3 家活跃商店:市中心旗舰店、购物中心 Kiosk 和机场快闪店。”