> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clawdot.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# errand_save_address

> MCP 工具 errand_save_address —— 把地址存进跑腿地址簿，供下次下单直接复用

## errand\_save\_address

把用户选中（可补门牌）的地址存进跑腿地址簿，之后可以直接用 `address_id` 复用，不必每次重新搜索。可以在存地址时一并存联系人和联系电话，之后下单不必再报；电话只回脱敏形态。

地址、门牌、联系人三者都相同才算同一条：已经存在的会直接返回原地址，不会重复创建；同一个地点填不同门牌或不同联系人，会各存一条。

<Note>
  **地址链路**：先用 `errand_search_addresses` 搜到地点拿到坐标，再用 `errand_save_address` 存进地址簿；之后可以用 `errand_list_addresses` 查看、`errand_update_address` 修改、`errand_delete_address` 删除。
</Note>

### 参数

| 参数                 | 类型     | 必填 | 默认 | 说明                                               |
| ------------------ | ------ | -- | -- | ------------------------------------------------ |
| `consent_grant_id` | string | 是  | —  | 用户授权记录 ID（`cg_` 前缀），来自 `errand_verify_user_bind` |
| `address`          | string | 是  | —  | 地址（名称+详址）                                        |
| `lat`              | number | 是  | —  | 纬度（GCJ-02），来自 `errand_search_addresses`          |
| `lng`              | number | 是  | —  | 经度（GCJ-02），来自 `errand_search_addresses`          |
| `contact_name`     | string | 否  | —  | 联系人姓名                                            |
| `contact_phone`    | string | 否  | —  | 联系电话；存一次之后下单不必再报，加密保存，只回脱敏形态                     |
| `detail`           | string | 否  | —  | 门牌补充（如「3 号楼 303」）；下单时自动拼进地址，查询地址簿时原样返回           |
| `tag`              | string | 否  | —  | 标签（如「家」「公司」）                                     |

### 返回

存好的地址对象，`id` 带 `plat_` 前缀。

| 字段                     | 类型             | 说明                                     |
| ---------------------- | -------------- | -------------------------------------- |
| `id`                   | string         | 地址 ID（`plat_` 前缀），可直接当 `address_id` 下单 |
| `contact_name`         | string         | 联系人（可空）                                |
| `contact_phone_masked` | string         | 脱敏联系电话（如 `138****5678`）；没存过电话时为空串      |
| `address`              | string         | 地址                                     |
| `detail`               | string         | 门牌补充（如「3 号楼 303」）；没填过为空串               |
| `lat`                  | number         | 纬度（GCJ-02）                             |
| `lng`                  | number         | 经度（GCJ-02）                             |
| `tag`                  | string         | 标签                                     |
| `source`               | string         | 地址来源，跑腿存的恒为 `errand`                   |
| `last_used_at`         | string \| null | 最近使用时间                                 |
| `use_count`            | integer        | 使用次数                                   |

### 错误码

| code                      | 说明                            |
| ------------------------- | ----------------------------- |
| `CONSENT_GRANT_REQUIRED`  | 缺少用户授权（未传 `consent_grant_id`） |
| `CONSENT_GRANT_INVALID`   | 用户授权无效                        |
| `CONSENT_GRANT_EXPIRED`   | 用户授权已过期，需重新授权                 |
| `CONSENT_GRANT_WRONG_CAP` | 授权属于其它能力，跑腿需单独绑定              |
| `CAP_NOT_BOUND`           | 该 Agent 未开通跑腿能力               |
| `ADDRESS_INCOMPLETE`      | 存址缺地址或坐标                      |
| `ADDRESS_FIELD_TOO_LONG`  | 地址/联系人/门牌/标签/电话超出长度上限         |

完整错误码见 [错误处理](/gateway/error-handling)。

### 调用示例

```json theme={null}
{
  "name": "errand_save_address",
  "arguments": {
    "consent_grant_id": "<consent_grant_id>",
    "address": "五一广场 黄兴中路88号",
    "lat": 28.1965,
    "lng": 112.9773,
    "detail": "东门",
    "tag": "公司"
  }
}
```
