ahoy
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chineseahoy - Agent Phone Skill
ahoy - Agent 电话技能
Phone numbers for AI agents with calls and SMS. All your agents share the same number via World ID.
ENS: ahoy.base.eth
API: https://useahoy.app
XMTP Bot: check /health endpoint for current address
为AI Agent提供支持通话和短信功能的电话号码。所有Agent可通过World ID共享同一个号码。
ENS: ahoy.base.eth
API: https://useahoy.app
XMTP Bot: 查看/health接口获取当前地址
Install
安装
bash
npx skills add github:trionlabs/ahoybash
npx skills add github:trionlabs/ahoyQuick Start
快速开始
Option A: One-shot (no World ID, $0.99)
选项A:一次性使用(无需World ID,费用0.99美元)
bash
undefinedbash
undefined1. Get a temp number for 5 minutes
1. 获取一个有效期5分钟的临时号码
Returns: { id, phoneNumber, endpoints: { send, inbox, call, release } }
返回: { id, phoneNumber, endpoints: { send, inbox, call, release } }
2. Send SMS from your temp number
2. 从你的临时号码发送短信
POST https://useahoy.app/oneshot/:id/send
{ "to": "+15551234567", "message": "Hello from ahoy" }
POST https://useahoy.app/oneshot/:id/send
{ "to": "+15551234567", "message": "Hello from ahoy" }
3. Read received SMS
3. 读取收到的短信
4. Make a TTS call
4. 发起TTS语音通话
POST https://useahoy.app/oneshot/:id/call
{ "to": "+15551234567", "message": "Hello, this is ahoy" }
POST https://useahoy.app/oneshot/:id/call
{ "to": "+15551234567", "message": "Hello, this is ahoy" }
5. Release early (or wait 5 min for auto-release)
5. 提前释放号码(或等待5分钟自动释放)
undefinedundefinedOption B: Persistent number (World ID required, $3.99/month)
选项B:持久号码(需要World ID,费用3.99美元/月)
bash
undefinedbash
undefined1. Provision a sybil-resistant number
1. 申请一个防女巫攻击的号码
2. Enable XMTP forwarding
2. 开启XMTP转发
3. Check your numbers (free)
3. 查看你拥有的号码(免费)
4. Read SMS inbox (free)
4. 读取短信收件箱(免费)
5. Check billing status (free)
5. 查看账单状态(免费)
6. Verify a phone is backed by a verified human
6. 验证某个手机号是否对应已认证的真人用户
7. Renew for 30 more days
7. 续费30天
WARNING: This is a proof of concept. Service may be unstable. Use at your own risk.
警告:本项目属于概念验证版本,服务可能不稳定,请自行承担使用风险。Payment
支付
- Network: World Chain (eip155:480) or Base (eip155:8453)
- Token: USDC
- One-shot (no World ID):
- Oneshot session (5 min temp number): $0.99
- Persistent (World ID required):
- Provision: $3.99/month (1 free month for AgentKit verified humans)
- Verify phone: $0.01
- Renew (30 days): $3.99
- Free (AgentKit auth only):
- Number lookup, inbox, status
- Pay to: ahoy.base.eth ()
0x1C66D49FB1e9782Aa838A2Ec9fa6F346C85096E0
- 网络: World Chain (eip155:480) 或 Base (eip155:8453)
- 代币: USDC
- 一次性使用(无需World ID):
- 单次会话(5分钟临时号码):0.99美元
- 持久号码(需要World ID):
- 号码申请:3.99美元/月(AgentKit认证用户可享1个月免费)
- 手机号验证:0.01美元
- 续费(30天):3.99美元
- 免费功能(仅需AgentKit认证):
- 号码查询、收件箱查看、状态查询
- 收款地址: ahoy.base.eth ()
0x1C66D49FB1e9782Aa838A2Ec9fa6F346C85096E0
SMS Commands
SMS 指令
Text your ahoy number:
| Command | Description |
|---|---|
| Read recent messages |
| Number info |
| Show commands |
| Any other text | Stored in inbox + forwarded to XMTP |
向你的ahoy号码发送短信:
| 指令 | 描述 |
|---|---|
| 读取最近消息 |
| 查看号码信息 |
| 显示指令列表 |
| 其他任意文本 | 存储在收件箱中并转发到XMTP |
Voice
语音功能
Call your ahoy number and talk to an AI assistant powered by Claude.
Per-call conversation history. Auto-answers with context about the verified human.
拨打你的ahoy号码即可与由Claude驱动的AI助手对话。支持单次通话的对话历史留存,会结合已认证用户的上下文自动应答。
XMTP Bridge
XMTP 桥接
DM the ahoy XMTP bot to bridge SMS and decentralized messaging:
| Command | Description |
|---|---|
| Send SMS from your ahoy number |
| Read recent SMS messages |
| Check registration |
| Show commands |
Pass when provisioning to auto-register your wallet for XMTP forwarding:
?notify=xmtpPOST https://useahoy.app/provision?notify=xmtpAll incoming SMS will be forwarded to your XMTP address as DMs.
向ahoy XMTP机器人发送私信即可桥接短信和去中心化消息:
| 指令 | 描述 |
|---|---|
| 从你的ahoy号码发送短信 |
| 读取最近的短信消息 |
| 查看注册状态 |
| 显示指令列表 |
申请号码时传入参数即可自动注册你的钱包用于XMTP短信转发:
?notify=xmtpPOST https://useahoy.app/provision?notify=xmtp所有收到的短信都会以私信形式转发到你的XMTP地址。
API Reference
API 参考
One-shot (x402 only, no World ID needed)
一次性使用(仅需x402认证,无需World ID)
| Method | Path | Price | Description |
|---|---|---|---|
| | $0.99 | Get a temp number for 5 min |
| | free | Send SMS from temp number |
| | free | Read received SMS |
| | free | Make TTS call from temp number |
| | free | Release early |
| | $0.01 | Check if a phone is backed by a verified human |
| 请求方法 | 路径 | 价格 | 描述 |
|---|---|---|---|
| | 0.99美元 | 获取一个5分钟有效期的临时号码 |
| | 免费 | 从临时号码发送短信 |
| | 免费 | 读取收到的短信 |
| | 免费 | 从临时号码发起TTS通话 |
| | 免费 | 提前释放号码 |
| | 0.01美元 | 检查某个手机号是否对应已认证的真人用户 |
Paid (x402 + AgentKit, World ID required)
付费功能(需x402 + AgentKit认证,需要World ID)
| Method | Path | Price | Description |
|---|---|---|---|
| | $3.99 | Provision a persistent number with sybil resistance |
| | $3.99 | Same + registers wallet for XMTP SMS forwarding |
| | $3.99 | Extend billing 30 days |
| 请求方法 | 路径 | 价格 | 描述 |
|---|---|---|---|
| | 3.99美元 | 申请一个防女巫攻击的持久号码 |
| | 3.99美元 | 同上,同时注册钱包用于XMTP短信转发 |
| | 3.99美元 | 延长30天有效期 |
Free (AgentKit auth only)
免费功能(仅需AgentKit认证)
| Method | Path | Description |
|---|---|---|
| | Get your assigned number |
| | Read your SMS inbox |
| | Check number status + billing |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| | 获取你分配到的号码 |
| | 读取你的短信收件箱 |
| | 查看号码状态和账单信息 |
Public (no auth)
公开接口(无需认证)
| Method | Path | Description |
|---|---|---|
| | Health check + XMTP bot address |
| | x402 service discovery |
| | OpenAPI spec |
| 请求方法 | 路径 | 描述 |
|---|---|---|
| | 健康检查 + 获取XMTP机器人地址 |
| | x402服务发现 |
| | OpenAPI 规范文档 |
Discovery
服务发现
bash
undefinedbash
undefinedagentcash
agentcash
npx agentcash discover https://useahoy.app
npx agentcash discover https://useahoy.app
x402 discovery
x402 discovery
undefinedundefinedNumber Lifecycle
号码生命周期
- Active (30 days) - SMS, voice AI, XMTP forwarding all work
- Suspended (after expiry) - number reserved, stops receiving. POST /renew to reactivate
- Released (7-day grace expires) - number gone, provision a new one
- 活跃(30天)- 短信、语音AI、XMTP转发功能全部可用
- 暂停(过期后)- 号码保留,停止接收消息。调用POST /renew即可重新激活
- 释放(7天宽限期到期后)- 号码被回收,需重新申请新号码
Security
安全
- Phone numbers encrypted at rest (AES-256-GCM)
- No phone data on-chain (EAS attestation stores only humanId + isVerified)
- World ID verification required (AgentKit proof-of-human)
- Rate limited (60 req/min per IP)
- 静态存储的手机号采用AES-256-GCM加密
- 链上不存储任何手机号数据(EAS attestation仅存储humanId + 认证状态)
- 需要World ID认证(AgentKit真人证明)
- 限流规则:每个IP每分钟最多60次请求
On-Chain
链上相关
- EAS attestation on World Chain when provisioned (schema: )
uint256 humanId, bool isVerified - x402 Bazaar discovery extension on all paid endpoints
- AgentKit free-trial for verified humans (1 free provision)
- 号码申请成功后会在World Chain上生成EAS attestation(schema: )
uint256 humanId, bool isVerified - 所有付费接口支持x402 Bazaar发现扩展
- 认证用户可享AgentKit免费试用(1次免费号码申请)
Example: One-shot (no World ID)
示例:一次性使用(无需World ID)
1. Agent calls POST /oneshot
2. x402: agent pays $0.99 USDC on Base
3. ahoy provisions a temp Twilio number
4. Returns: { id: "abc", phoneNumber: "+14155551234", endpoints: {...} }
5. Agent sends SMS: POST /oneshot/abc/send { to: "+1555...", message: "hello" }
6. Agent checks inbox: GET /oneshot/abc/inbox
7. After 5 min: number auto-releases from Twilio1. Agent调用POST /oneshot
2. x402: Agent在Base网络支付0.99美元USDC
3. ahoy申请一个临时Twilio号码
4. 返回: { id: "abc", phoneNumber: "+14155551234", endpoints: {...} }
5. Agent发送短信: POST /oneshot/abc/send { to: "+1555...", message: "hello" }
6. Agent查看收件箱: GET /oneshot/abc/inbox
7. 5分钟后: 号码自动从Twilio释放Example: Persistent number (World ID)
示例:持久号码(World ID)
1. Agent wallet 0xAAA calls POST /provision
2. x402: agent pays $3.99 USDC on Base
3. AgentKit: verifies wallet -> resolves to humanId via World ID
4. ahoy: checks if human already has a number
5. ahoy: provisions Twilio number with SMS + voice webhooks
6. ahoy: creates EAS attestation on World Chain
7. Returns: { numbers: [...], provisioned: true }
8. Someone texts the number -> stored in inbox
9. Agent reads via GET /messages or receives via XMTP
10. Someone calls the number -> AI assistant answers (Claude)1. Agent钱包地址0xAAA调用POST /provision
2. x402: Agent在Base网络支付3.99美元USDC
3. AgentKit: 验证钱包 -> 通过World ID解析为humanId
4. ahoy: 检查该用户是否已经拥有号码
5. ahoy: 申请Twilio号码并配置短信+语音webhook
6. ahoy: 在World Chain上生成EAS attestation
7. 返回: { numbers: [...], provisioned: true }
8. 其他人向该号码发送短信 -> 存储在收件箱
9. Agent通过GET /messages读取短信或通过XMTP接收
10. 其他人拨打该号码 -> AI助手(Claude)应答