Monad Blitz Butler
AI-Powered Food Ordering Agent with Real Crypto Payments
Quickstart • Features • MCP Integration • API Reference • Configuration
______________________________________________________________________
概述
Monad Blitz Butler是一个人工智能语音代理,可以搜索餐馆、浏览菜单、下食品订单和给企业打电话——所有这些都是通过使用x402支付协议在Monad区块链上进行真实的加密货币支付来实现的。
主要亮点:
- 🎤 语音接口 -使用OpenAI的实时API进行自然对话
- 🍕 食品订购 -搜索餐厅、查看菜单、下订单
- 📞 人工智能电话 -代理人代表您致电企业(预订、查询)
- 💰 实际付款 -USDC小额支付的x402协议
- 🔗 MCP服务器 -与Claude Desktop、Cursor和其他MCP客户端集成
______________________________________________________________________
快速入门
先决条件
- Node.js 20+
- 实时访问API的OpenAI API密钥
- (可选)Tavilly API键,用于增强搜索
- (可选)用于电话呼叫的Vapi API密钥
安装
# Clone the repository
git clone https://github.com/yourusername/monad-blitz-butler
cd monad-blitz-butler
# Install dependencies
npm install
# Copy environment variables
cp .env.example .env环境设置
编辑 .env 使用API密钥:
# Required
OPENAI_API_KEY=sk-proj-...
# Thirdweb (for wallet connection)
NEXT_PUBLIC_THIRDWEB_CLIENT_ID=your_client_id
THIRDWEB_SECRET_KEY=your_secret_key
# Optional - Enhanced Features
TAVILY_API_KEY=tvly-... # Web search & menu extraction
GOOGLE_PLACES_API_KEY=AIza... # Restaurant search
VAPI_SECRET_KEY=... # AI phone calls
VAPI_PUBLIC_KEY=...运行应用程序
npm run dev打开 http://localhost:3000 开始和你的人工智能管家交谈吧!
______________________________________________________________________
特性
🍽️ 餐厅探索
- 按菜肴、地点、饮食偏好搜索餐厅
- 查看评级、小时数、电话号码和网站
- 基于用户偏好的自动过滤
📋 菜单浏览
- 从餐厅网站提取菜单项和价格
- 使用Tavily Extract API进行AI供电菜单分析
- 支持饮食限制和过敏
🛒 食品订购
- 下单时逐项列出明细
- 自动税务计算
- 交货与提货选项
- x402支付处理
📞 人工智能电话
- 在餐厅预订
- 询问等待时间、小时数、可用性
- 由Vapi AI语音提供支持
⚙️ 用户选项
- 保存饮食偏好(纯素、素食、无麸质等)
- 食物过敏追踪
- 饮食偏好
- 价格范围过滤
- 位置设置
______________________________________________________________________
MCP集成
Monad Blitz Butler包括一个MCP(模型上下文协议)服务器,可以与Claude Desktop、Cursor、Windsurf和其他MCP兼容客户端集成。
Claude Desktop快速入门
- 安装MCP服务器:
npm install -g monad-blitz-butler-mcp- 配置Claude桌面:
首选 Claude > Settings > Developer > Edit Config > claude_desktop_config.json:
{
"mcpServers": {
"MonadBlitzButler": {
"command": "npx",
"args": ["monad-blitz-butler-mcp"],
"env": {
"OPENAI_API_KEY": "",
"TAVILY_API_KEY": "",
"GOOGLE_PLACES_API_KEY": ""
}
}
}
}- 重新启动克劳德桌面 开始使用这些工具!
可用的MCP工具
| 工具 | 描述 | 成本 |
|---|---|---|
findRestaurants | 按查询和位置搜索餐厅 | 免费 |
getMenuDetails | 从餐厅网站提取菜单项 | 免费 |
webSearch | 进行网络搜索 | 0.5美元 |
placeOrder | 下食品订单 | 1 USDC+订单总额 |
callBusiness | 拨打人工智能电话 | 0.1美元 |
checkBalance | 检查代理钱包余额 | 免费 |
requestDeliveryQuote | 获取DoorDash送货报价 | 免费 |
confirmDelivery | 确认并发货 | 运费 |
克劳德提示示例
用Claude Desktop试试这些:
- *“在旧金山附近找素食餐馆”*
- *“格拉西亚斯·马德雷的菜单上有什么?”*
- *“从Chipotle点一份鳄梨酱卷饼碗”*
- *“打电话给乔的披萨店,询问他们的等待时间”*
- *“寻找纽约市最好的拉面”*
其他MCP客户端
对于Cursor、Windsurf和其他客户:
# Install globally
npm install -g monad-blitz-butler-mcp
# Get configuration
monad-blitz-butler-mcp --print-config将输出粘贴到客户端的MCP配置中。
______________________________________________________________________
api参考
REST端点
| 端点 | 方法 | 描述 |
|---|---|---|
/api/session | GET | 获取OpenAI实时会话令牌 |
/api/balance | GET | 获取代理钱包余额 |
/api/deposit | POST | 将资金存入代理钱包 |
/api/places | GET | 搜索餐馆(谷歌地点+塔维利) |
/api/menu-scrape | GET | 从网站提取菜单 |
/api/web-search | GET | 网络搜索(Tavily/DuckDuckGo) |
/api/vapi-call | POST | 发起AI电话呼叫 |
/api/doordash/* | 各种 | DoorDash交付集成 |
x402支付协议
所有付费操作都使用x402支付协议:
// Example: Checking balance before operation
const balance = getBalance();
if (balance < cost) {
return {
success: false,
error: '402 Payment Required',
message: `Insufficient funds. Need ${cost} USDC, have ${balance} USDC.`,
required: cost,
available: balance,
};
}
// Deduct payment
const result = spendBalance(cost);______________________________________________________________________
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
OPENAI_API_KEY | 是 | 具有实时API访问权限的OpenAI API密钥 |
NEXT_PUBLIC_THIRDWEB_CLIENT_ID | 是 | 钱包的Thirdweb客户端ID |
THIRDWEB_SECRET_KEY | 是 | Thirdweb密钥 |
TAVILY_API_KEY | 否 | Tavilly API用于增强搜索 |
GOOGLE_PLACES_API_KEY | 否 | 餐馆的Google Places API |
VAPI_SECRET_KEY | 没有 | 电话的Vapi密钥 |
VAPI_PUBLIC_KEY | 否 | Vapi公钥 |
AGENT_PRIVATE_KEY | 否 | 代理钱包私钥 |
AGENT_WALLET_ADDRESS | 否 | 代理钱包地址 |
用户选项
用户可以通过UI配置首选项:
- 位置:搜索餐厅的城市或地址
- 饮食选择:纯素、素食、无麸质、无乳制品、清真、犹太洁食、有机、Keto、Paleo
- 过敏:花生、树坚果、牛奶、鸡蛋、小麦、大豆、鱼、贝类、芝麻+定制
- 菜系:美国、墨西哥、意大利、日本、中国、韩国、泰国、越南、印度、地中海、希腊、中东、法国、西班牙、加勒比海、Fusion
- 价格范围: $, $$, $$$, $$$$
______________________________________________________________________
建筑
monad-blitz-butler/
├── src/
│ ├── app/
│ │ ├── api/ # API routes
│ │ │ ├── session/ # OpenAI session
│ │ │ ├── places/ # Restaurant search
│ │ │ ├── menu-scrape/ # Menu extraction
│ │ │ ├── web-search/ # Web search
│ │ │ ├── vapi-call/ # Phone calls
│ │ │ └── doordash/ # Delivery
│ │ ├── agentConfigs/ # Agent definitions
│ │ │ └── monadButler/ # Butler agent
│ │ ├── components/ # UI components
│ │ │ ├── Transcript.tsx # Chat transcript
│ │ │ ├── RestaurantCard.tsx # Restaurant cards
│ │ │ ├── OrderCard.tsx # Order display
│ │ │ └── ConfigureModal.tsx # Preferences
│ │ ├── hooks/ # React hooks
│ │ └── contexts/ # React contexts
│ └── components/ # Shared components
├── mcp/ # MCP server
│ ├── server.ts # MCP server entry
│ └── tools/ # MCP tools
└── public/ # Static assets______________________________________________________________________
发展
本地运行
# Development mode
npm run dev
# Build for production
npm run build
# Start production server
npm start测试MCP服务器
# Run MCP inspector
npx @modelcontextprotocol/inspector mcp/server.ts______________________________________________________________________
故障排除
常见问题
“无法解析会话描述”
- 确保您的OpenAI API密钥具有实时API访问权限
- 检查您是否使用了正确的型号:
gpt-4o-realtime-preview-2025-06-03
“Google Places API REQUEST_DENIED”
- 您的API密钥可能有HTTP引用限制
- 创建没有限制的新密钥或使用基于IP的限制
“资金不足”
- 使用“资金代理”按钮为您的代理钱包充值
- 请通过以下方式检查您的余额
checkBalance工具
日志
检查浏览器控制台和终端以获取详细的错误消息。
______________________________________________________________________
贡献
欢迎投稿!请在提交PR之前阅读我们的投稿指南。
- 复刻仓库
- 创建要素分支:
git checkout -b feature/amazing-feature - 提交您的更改:
git commit -m 'Add amazing feature' - 推到分支:
git push origin feature/amazing-feature - 打开拉取请求
______________________________________________________________________
许可证
MIT许可证-请参阅 许可证 了解详情。
______________________________________________________________________
致谢
______________________________________________________________________
Built with ❤️ for the Monad ecosystem
