构建您的第一个代理

构建您的第一个代理

本指南将带您构建购物车恢复代理, 一个 AI 代理,监控废弃购物车并使用 Brevo 的 MCP 工具通过邮件、短信和 WhatsApp 编排个性化恢复序列。

前提条件

  • 带有 API 密钥的 Brevo 账户(在此获取
  • 已配置 Brevo MCP 服务器(设置指南
  • Claude Desktop、Claude Code 或任何 MCP 兼容客户端
  • 在 Brevo 中创建的购物车恢复邮件模板

代理如何工作

代理是一个 markdown 文件,定义了:

  1. 身份, 代理做什么及其约束
  2. 工具, 可以访问哪些 MCP 工具
  3. 指令, 如何推理和行动
  4. 护栏, 永远不应做什么
营销人员:"为超过 $50 的购物车设置恢复"
代理读取其规范(工具、约束)
代理推理:"我需要创建细分、设计序列、设置追踪"
代理调用:brevo/create-segment → brevo/send-email → brevo/send-sms → brevo/track-event
结果:3 步恢复序列激活,追踪事件流动

第一步:定义代理

创建名为 cart-recovery-agent.md 的文件:

---
name: cart-recovery-agent
description: Recover abandoned carts with personalized multi-channel sequences
version: 1.0.0
temperature: 0.2
max_tokens: 4096
tools:
- brevo/list-contacts
- brevo/get-contact
- brevo/create-segment
- brevo/send-email
- brevo/send-sms
- brevo/track-event
- brevo/get-email-templates
- brevo/get-email-stats
triggers:
- event: cart_abandoned
conditions:
- cart_value: "> 50"
- time_since_activity: "> 30m"
- schedule: "0 */4 * * *"
permissions:
- contacts:read
- email:send
- sms:send
- events:write
---
# Cart Recovery Agent
You are an e-commerce cart recovery specialist working with Brevo's
engagement platform. Your goal is to recover abandoned carts through
personalized, well-timed multi-channel outreach.
## Strategy
When a cart is abandoned:
1. **Wait 1 hour**, then send a reminder email with cart contents
2. **Wait 24 hours**, if no open → send SMS with urgency message
3. **Wait 48 hours**, if still no recovery → send final email with
incentive (discount code if cart value > $100)
## Decision Framework
- Cart value < $50: Skip (not worth recovery cost)
- Cart value $50-$100: Email only (2 touches)
- Cart value $100-$250: Email + SMS (3 touches)
- Cart value > $250: Email + SMS + personal outreach flag
## Rules
- NEVER send more than 3 messages per abandoned cart
- NEVER contact customers who opted out of marketing
- ALWAYS check if cart was recovered before sending next step
- ALWAYS personalize with customer first name and cart items
- ALWAYS track recovery events for attribution
- Respect quiet hours: no SMS between 9pm-9am customer local time
## Email Templates
Use these Brevo template IDs:
- Reminder (step 1): template_id 101
- Urgency (step 2): template_id 102
- Incentive (step 3): template_id 103
## Metrics to Track
- `cart_recovery_email_sent`, recovery email dispatched
- `cart_recovery_sms_sent`, recovery SMS dispatched
- `cart_recovered`, customer completed purchase
- `cart_recovery_failed`, sequence completed without recovery

第二步:注册工具

tools:
# 读取客户数据和购物车状态
- brevo/list-contacts # 查找有废弃购物车的客户
- brevo/get-contact # 获取个别客户详情
# 创建目标细分
- brevo/create-segment # 按购物车价值、时间、行为分段
# 发送恢复消息
- brevo/send-email # 交易恢复邮件
- brevo/send-sms # 高价值购物车的短信
# 追踪结果
- brevo/track-event # 记录恢复尝试和结果
- brevo/get-email-stats # 检查邮件是否被打开
- brevo/get-email-templates # 验证模板存在

第三步:测试代理

使用 Claude Desktop

配置 Brevo MCP 服务器后,询问 Claude:

运行我的购物车恢复代理。检查过去 4 小时内超过 $50 的废弃购物车并执行恢复序列。

Claude 将:

  1. 读取代理规范
  2. 调用 brevo/list-contacts 查找废弃购物车
  3. 使用决策框架按购物车价值分段
  4. 通过 brevo/send-email 发送恢复邮件
  5. 通过 brevo/send-sms 将短信跟进加入队列
  6. 通过 brevo/track-event 追踪所有事件

程序化执行

import { TajoAgent } from "@tajo/agent-sdk";
import { BrevoMCPServer } from "@tajo/brevo-mcp-server";
const brevo = new BrevoMCPServer({
apiKey: process.env.BREVO_API_KEY,
});
const agent = new TajoAgent({
specPath: "./cart-recovery-agent.md",
mcpServers: [brevo],
model: "claude-sonnet-4-6",
});
const result = await agent.run(
"Recover abandoned carts over $50 from the last 4 hours"
);
console.log(result.summary);
// → "Processed 23 abandoned carts. Sent 23 reminder emails,
// 8 SMS messages. 3 carts already recovered during execution."

第四步:调度代理

基于计划任务

# 在代理规范 frontmatter 中
triggers:
- schedule: "0 */4 * * *" # 每 4 小时
timezone: "America/New_York"

基于事件

triggers:
- event: cart_abandoned
conditions:
- cart_value: "> 50"
- time_since_activity: "> 30m"
debounce: 5m

第五步:监控和迭代

通过 Brevo 事件追踪代理性能:

-- 按购物车价值层级的恢复率
SELECT
CASE
WHEN cart_value < 100 THEN '$50-$100'
WHEN cart_value < 250 THEN '$100-$250'
ELSE '$250+'
END as tier,
COUNT(*) as carts_targeted,
SUM(CASE WHEN recovered THEN 1 ELSE 0 END) as recovered,
ROUND(SUM(CASE WHEN recovered THEN 1 ELSE 0 END)::numeric
/ COUNT(*) * 100, 1) as recovery_rate_pct
FROM cart_recovery_events
WHERE created_at > NOW() - INTERVAL '30 days'
GROUP BY tier
ORDER BY tier;

后续步骤

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

AI 助手

你好!关于文档有任何问题都可以问我。

免费开始使用Brevo