# AgentShow MCP — 淘宝购物决策卡

> 给 AI 助手 / 智能体 / 开发者读的接入说明。原始 Markdown：https://www.agentshow.shop/mcp.md

让你的 agent 替用户在淘宝上做购买决策：搜候选 → 用户挑 1–3 款 → 出一张对比卡：列出取到的事实（参数、默认规格起价；有资料时另附买前必知），并按卡上写明的排法由固定规则选出一款、写明依据（佣金不参与）→ 给购买链接。
付款、发货、售后均在商家店铺，AgentShow 不参与交易。

## 快速开始

| 项 | 值 |
|---|---|
| 端点 | `https://alpha.agentshow.shop/mcp/public` |
| 传输 | Streamable HTTP（无状态，不需要 initialize 也能调） |
| 鉴权 | 无 |
| 平台 | 仅淘宝 |
| 额度 | 出卡：每 IP 每小时 3 张，全站每天 30 张；搜索：每 IP 每小时 30 次 |

### Claude Code

```bash
claude mcp add --transport http agentshow https://alpha.agentshow.shop/mcp/public
```

### Cursor / Cherry Studio / 通用 `mcpServers` 配置

```json
{
  "mcpServers": {
    "agentshow": {
      "url": "https://alpha.agentshow.shop/mcp/public"
    }
  }
}
```

Cherry Studio：设置 → MCP 服务器 → 添加 → 类型选「可流式传输的 HTTP（streamableHttp）」→ URL 填上面的端点。

### VS Code（`.vscode/mcp.json`）

```json
{
  "servers": {
    "agentshow": { "type": "http", "url": "https://alpha.agentshow.shop/mcp/public" }
  }
}
```

### curl 直接试

```bash
curl -X POST https://alpha.agentshow.shop/mcp/public \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_products","arguments":{"query":"空气炸锅","max_price":500}}}'
```

## 工具

### 1. `search_products` — 搜候选（约 2 秒）

| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `query` | string | 是 | 商品关键词，如「空气炸锅」 |
| `min_price` / `max_price` | int | 否 | 价格区间，元 |
| `requirements` | string | 否 | 用户口头要求，如「要静音、好清洗」。服务端会逐候选核对 |

返回 `candidates[]`：`index`、`item_id`、`title`、`price`、`sales`、`shop`。把候选列给用户看，让用户挑。

### 2. `make_decision_card` — 出决策卡（15 秒 – 5 分钟）

| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `query` | string | 是 | **与产生候选的那次搜索完全一致** |
| `selected_item_ids` | string[] | 是 | 用户选中的 1–3 个 `item_id`，原样传 |
| `min_price` / `max_price` / `requirements` | | 否 | **与那次搜索完全一致** |

返回：`set_id`、`products[]`（带 `product_index`，从 0 起）、`lane_picks`（各排法选出的一款、依据、没参与的款、不参与比起价的款、免责句；或「这次规则选不出」的原因）、`default_lane`、`param_highlights`、`price`、`must_know`、`reviews`。
出卡前先告诉用户「要等一会儿」。

`lane_picks` 是卡上「怎么选」那一块，由服务端按固定规则算好、原样给出（选款这一步不经过 AI，也不读取佣金）。里面的字符串都是成品句，请原样转述，不要拼接或改写。只选了 1 款时为 `null`（单品卡不选款）。

`lane_picks` 是一个对象：

| 字段 | 说明 |
|---|---|
| `rule_version` | 规则版本，对应 [卡上的一款是怎么选出来的](https://www.agentshow.shop/pick-rules) |
| `default_lane` | 默认展示哪种排法。MCP 不传排法，恒为「价格优先」（2026-09-20 前叫「性价比」，老卡里仍是旧名） |
| `headline` | 这一块的头条：至少两种排法靠不同的比较项选出了同一款时为 `几种排法选出的都是商品N`，否则与默认排法那一项的 `headline` 相同 |
| `rule` | 与 `headline` 配套的排法说明 |
| `lanes` | 数组，三种排法各一项，字段见下表 |
| `disclaimer` | 块底免责句（以「广告｜」开头，带本卡取数时间）。转述选款结果时必须连同这一句 |
| `price_out` | 不参与比起价的款，即 `products[].product_index`（从 0 起）的数组，三种排法共用。原因有：没取到起价、起价读到 0 元、只取到 88VIP 会员价、在售价达到起价 3 倍以上、与另几款不在一个价位、标题里写着几种规格、参数表里那一格和搜索词里的数值规格对不上（标题里写着这个数，所以没被排除）；这些款的参数、年销照比。整张卡不排序、几款全被排除、只剩一款时也照实给。说哪款起价低时，不要拿这几款来比 |

`lanes[]` 每一项：

| 字段 | 说明 |
|---|---|
| `lane` | 排法：价格优先 / 规格优先 / 销量优先（2026-09-20 前的卡里是「性价比」） |
| `index` | 这种排法选出的商品，即 `products[].product_index`，也就是 `get_purchase_link` 的 `product_index`；`null` 表示这种排法这次选不出 |
| `decided_by` | 定下这一款的是哪一项：`price` 起价 / `param` 参数 / `sales` 年销档 / `fallback` 几项都没分出高下、按起价较低兜底（剩下能比起价的只有一款时也记 `fallback`）/ `only_one` 其余几款都没参与；选不出时为 `null` |
| `headline` | 点名真正定下这一款的那一步，如 `按「价格优先」排法，比年销档选出：商品2`、`按「价格优先」排法几项都没分出高下，按起价略低兜底：商品1`；选不出时是 `这次规则选不出一款` 这类句子 |
| `rule` | 这种排法的比较先后，如 `排法：先比默认规格起价，差不到 10% 再比参数，再比年销档；…` |
| `steps` | 逐项的依据，按比较顺序，带数值、「默认规格」和取数时间；某一项没参与的款（如起价存疑、标题里写着几种规格）也写在这里，这款的其他项照比；选出了一款时，末尾一句就是定下它的那一句 |
| `also_best` | 「另外」：别的项上谁领先（不超过 3 条，带数值） |
| `gated` | 「没参与」：被排除的款，每款一句原因。句子本身以「没参与」结尾，转述时不必再加「没参与：」这类前缀。这些款不会被任何排法选中，但仍在 `products[]` 里 |
| `verify` | 下单前要到商品页核对的（不超过 2 条） |
| `no_pick_reason` | 选不出时的原因和下一步；选出了为 `null` |

句子里的「商品N」是第 N 个商品，即 `product_index` 为 N−1。返回顶层的 `default_lane` 与 `lane_picks.default_lane` 相同（`lane_picks` 为 `null` 时也是 `null`）。价格一律按各款默认规格的起价比，你要的规格价以商品页为准。

### 3. `get_purchase_link` — 取购买链接（约 1 秒）

| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `set_id` | int | 是 | 出卡返回的 `set_id` |
| `product_index` | int | 否 | 卡上第几个商品，从 0 起，默认 0 |

返回 `url`（淘宝推广链接）和 `app_url`。

## 给 agent 的规则（请遵守）

1. **如实转述卡片**：选款结果连同排法、默认规格、抓取时间和免责句（`lane_picks.disclaimer`）一起转述，不换成你自己的结论；不加卡上没有的评价；不要说成「最好 / 最便宜 / 全网最低 / 最值得买 / 放心买 / 闭眼入」；卡上说「这次规则选不出」，就照原话说出原因。
2. **链接一字不改**：`url` 里带归因参数，缩短、改写、截断都会让链接失效。
3. **缺席照原话说**：卡上写「没取到」的，是我们没取全，不是商品不好。
4. **标注广告**：每个返回都带 `disclosure`，展示商品或链接时请标「广告」，并附上 `disclosure.commission.text`。
5. **保留 AI 生成标识**：`disclosure.ai_generated.fields` 里列出的字段由 AI 识别生成，展示时请标「AI 生成」，不要删除。
6. **转述、转载时标识和依据一起带上**：不论全文还是节选，都保留「广告」和「AI 生成」两处标识，不删除、篡改、伪造或隐匿（《人工智能生成合成内容标识办法》第十条）；说到选出的一款，连同与那句 `headline` 配套的排法说明（`rule`）和免责句（`lane_picks.disclaimer`）一起转述。

## `disclosure` 字段（每个返回都有）

```json
{
  "is_advertisement": true,
  "ad_label": "广告",
  "advertiser_type": "商家推广（淘宝联盟）",
  "commission": {
    "earns_commission": true,
    "rate_disclosed": false,
    "ranking_uses_commission": false,
    "text": "用户通过购买链接下单后，AgentShow 可能获得淘宝联盟佣金；佣金不影响候选排序、对比口径和卡上的选款结果。"
  },
  "transaction": "付款、发货、售后均由商家负责，AgentShow 不参与交易。",
  "display_required": true,
  "operator": "深圳市智奕软件技术有限公司",
  "ai_generated": {
    "label": "AI生成",
    "fields": ["param_highlights", "must_know"],
    "text": "卡中参数、参数名和买前必知由人工智能从商家主图或公开资料识别生成，可能有误，请以商品页为准；卡上选出的一款由固定规则算出，不是 AI 判的。",
    "producer": "深圳市智奕软件技术有限公司",
    "content_id": "<带 set_id 的返回里填 set_id>"
  }
}
```

## 错误与额度

- 额度用完时工具返回错误「额度已用完，请稍后再试」，请原话告诉用户。
- 需要更高额度（平台 / 企业接入），写信到 zy_office@agentshow.shop，我们另发带 key 的专用地址。

## 不装 MCP 也能用

只要 agent 能打开网址，GET 这个地址就能拿到整张卡的纯文本（通常 20–45 秒；浏览器型客户端等不满时会先拿到「正在出卡」，30 秒后重开同一地址即可）：

```
https://alpha.agentshow.shop/api/v1/public/request?q=空气炸锅&max_price=500&platform=taobao
```

更多：[llms.txt](https://www.agentshow.shop/llms.txt) · [Agent Card](https://www.agentshow.shop/.well-known/agent-card.json)

---

运营主体：深圳市智奕软件技术有限公司 · 粤ICP备2026061292号-1
