---
name: handout-access-handover
description: 理解房主或物业经理（PO/PM）关于分享房产、移除权限、卖房或变更管理人的叙述，选择 Handout 对应邀请或交接流程，核查依赖并预览权限和历史数据影响。不服务 Tenant/SP 自助角色。
metadata:
  version: 1.1.3
---

# Handout 权限与交接

## 检查 Skill 更新

每次启用时读取 `https://handout.us/oauth/agent-setup`，将本包的 `metadata.version` 与 `skill_release.versions` 中同名版本比较。发现新版时，用用户的对话语言提示更新，提供更新已安装 Skill 及同语言完整声明文件的操作。保留现有成功连接、凭据和权限，继续当前业务任务，无需等待更新。MCP 返回的 `handout_notice` 也触发相同检查，同一对话、同一版本避免重复提醒。只有宿主确认后才报告安装完成；版本查询失败时继续工作，不把版本未知说成已过期或已是最新。

仅供 PO/PM。使用用户本人的连接及 App 权限，暂不开放 Tenant/SP Skill。先读 me.get 和 property_access/handover 的 app_schema.get（含 action_data_schemas）。未连接时使用[连接指引](https://handout.us/skills/handout-connect/zh-CN/SKILL.md)。只读连接不能准备写入，不能自行升级或删除已有连接。

## 从用户意图选流程

- “让 Alice 看这套房”是权限分享，不是产权转移。明确只读时提议 viewer；是否需要操作不清楚再问。
- “我替房主管理”不代表当前人拥有产权。核对成员，用真实收件人/角色发邀请；填一个 Owner 名字不授予账户访问。
- “移除 Alice”先读当前状态：未接受撤销邀请，已接受移除 membership；独立历史/财务授权可能仍保留，必须解释。
- “房子卖了”“换管理人”是关系交接，不是删除或普通邀请。仅追问 ownership/management、收件人和要共享的历史。
- Agent 负责解析姓名、邮箱并匹配记录，不让用户查 user ID、checklist key 或填完整权限表。跨业务参考[事件判断](https://handout.us/skills/tobby-landlord/zh-CN/references/event-to-record.md)。

叙述或收到邀请，不自动等于接受/扩大权限。展示人名、房产、角色、历史范围和影响；prepare 后明确批准，再 confirm，仅传 action/preview_id/user_confirmed:true。变更收件人、角色、历史或版本必须重新预览。

## 房产权限

1. property_access.list(property_id) 查询成员及未接受邀请。
2. prepare_invite 使用 property_id、data:{invited_email,access_role}；角色 owner/manager/viewer，viewer 只读。对方使用匹配的真实账户接受后才授权。
3. 收件人用 invitation(invite_id) 或实际收到的 invitation token 检查，再 prepare_accept。确认使用解析出的 invite ID，不把邀请 token 当 OAuth 凭据储存。新用户无需已有房产。
4. prepare_revoke(property_id,invite_id) 取消未接受邀请；prepare_remove(property_id,user_id,data:{access_role,next_primary_owner_user_id?}) 移除已接受成员，二者不能混用。
5. App 保护最后一个 Owner、primary Owner 和角色冲突。需要替代 primary 时必须选已有 Owner。移除 membership 不自动撤销独立财务/历史授权。

区分邀请创建、email_queued/email_status、email_sent 和接受状态。email_queued=true 只代表后台已接收发送请求，不代表邮件已发送或已送达；不要因 email_sent=false 就重复创建邀请。邮件失败时保留真实邀请及返回恢复信息，不重复造邀请或声称已授权。日志不记录密钥/令牌/邀请秘密。

## Ownership / Management 交接

先读 handover.options/list，prepare_create 使用 data:{property_id,kind,subject_user_id?}，kind 为 owner/manager。ownership 当前要求单一已确认 Owner；PM 只能结束自身管理关系，新任管理授权遵守 Owner 规则。创建房产、填 Owner 名字和账户交接均不是法律产权证明或实际资金转移。

- 复用已有交接；get 返回 checklist、revision 和用户可读私有归档。
- prepare_refresh 刷新依赖。prepare_resolve 使用实际 key 与 resolution:reviewed/stop/retain/external_cancelled，必须有事实依据。停止提醒会改变线上记录；核阅财务并不自动对账或付款。
- history_options(handover_id,query?,type?) 的类型 maintenance/assets/documents；prepare_invite 的 data:{email,record_keys,allow_reshare?} 必须逐项展示，并说明会替换该交接未接受的邀请。
- 收件人 prepare_accept(grant_id) 必须使用真实邀请及匹配的已验证邮箱。财务不继承；ownership 接受可产生等待原关系结束的 successor property period。
- prepare_end 仅在 checklist/依赖就绪后，展示权限、归档和关系结束影响再批准。不是单纯勾选完成。
- prepare_revoke 遵守 App grant 撤销规则；received(grant_id) 查看已接受历史，file(grant_id,record_key) 仅返回授权文件的短期访问。PM 私有归档不等于共享历史包。

冲突时重新读取并准备，不能替换 revision 强行沿用旧批准。用户亲自完成身份验证和真实签名，Agent 不能代签。解释语言用用户语言；新增描述按已确认的存储语言处理，保留事实和人名。

## 租客注册邀请（在 App 中完成）

当 PO/PM 想邀请租客注册时，引导到 Leases → 打开租约 → Tenants → Tenant invitation code；在此面板选择已保存的邮箱并点击 Send invitation email，也可从该租约的租客名单发送邮件。每份租约共用一个邀请码，链接固定为 `https://handout.us/public/tenant-signup?code=...`。各租客使用名单中各自的已验证邮箱关联，不能用 property_access 邀请代替，也不能把 Lease ID 当邀请码。无邀请码可以注册，之后从租客 Dashboard 的“关联你的租约”输入邀请码。重发邮件沿用原码；邀请码 7 天有效，重置或撤销使旧码和链接失效，已关联账号保留访问权。邀请码过期时由 PO/PM 在该入口重置。当前公开 MCP 不开放租客邀请发送或 Tenant 自助工具，不能声称已通过 Agent 完成发送或关联。
