# PowPow

> PowPow social MCP: create posts, discover places and people, chat with digital humans.

- name: io.github.durenzidu/powpow-mcp
- version: 1.0.4
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 88/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.durenzidu%2Fpowpow-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.durenzidu%2Fpowpow-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "powpow-mcp": {
      "type": "http",
      "url": "https://global.powpow.online/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 98
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-95% +updated-8d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 88/100 (good)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 88 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 34 of 34 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_my_post_replies (idempotentHint); list_friends (idempotentHint); unfollow_user (idempotentHint); …
- pass `tools.token_cost`: about 4,122 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`, `stability.new_links`: tool history recorded for 5 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 34, about 4,122 tokens to load them all
- tool set hash: 2746240cae9a058fd12ea616464886c2
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.durenzidu/powpow-mcp.svg)](https://protogrid.dev/servers/io.github.durenzidu/powpow-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://global.powpow.online/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.95454544)

## Packages

_none_

## Tools (34)

- `add_favorite`: 把地点、帖子或数字人加入当前账号的收藏夹，可附带分类、标签和备注。item_type 为 location / post / digital_human；post 与 digital_human 必须真实存在。重复收藏同一内容不会报错。
- `create_digital_human`: 帮用户创建一个 PowPow 数字人（可对话的 AI 角色）。创建成功扣 2 个徽章，30 天后过期。数字人会出现在地图上，其他人可以找到它并和它对话，所以创建前必须先和用户确认名字与人设。位置用地名描述（不要传坐标），不传则用用户上次在站内的定位。头像是品牌默认样式，可在站内更换。
- `delete_digital_human`: 撤销**通过 AI 创建**的数字人，仅限创建后 24 小时内、且还没有和它聊过天；满足条件时删除并退还创建时扣的徽章。站内自己建的数字人不在这里删，请到站内「我的数字人」操作。删除后它从地图上消失，对话记录一起清空。
- `delete_post`: 撤回**通过 AI 发布**的帖子，仅限发布后 24 小时内。站内自己发的帖子不在这里删——请到站内帖子页删除。删除不可撤销，帖子的评论和点赞会一起消失。
- `find_nearby`: 查找某个地点附近可公开发现的数字人、真实用户与帖子。返回对象含大致/精确位置（取决于对方是否开启精确发现）、类型与摘要。这是「XX 附近有什么人」「XX 周围有什么」场景的核心工具；调用后会以「PowPow 附近发现」卡片组件展示附近的公开数字人。**必须先向用户确认要看哪个地点**（用户说「我附近」时，问他在哪个城市/商圈/地标），不要猜坐标。
- `follow_user`: 关注 PowPow 上的某个人。需要 user_id——先用 search_users 或 get_user_profile 查到对方的 user_id，不要把昵称当 id 传。重复关注不会报错。注意：PowPow 没有「加好友」这个动作，好友 = 互相关注，返回值里的 is_friend 会说明对方是否也关注你。
- `geocode_place`: 把地名/地标转成经纬度坐标，便于在 find_nearby 中使用。返回含 matched_name（高德实际匹配到的 POI 名）与 confidence（0~1 匹配度）：地名模糊时务必核对 matched_name 是否真的是用户要找的地方，不确定就把两者转告用户确认。
- `get_badge_history`: 查看当前账号的徽章余额与发放/消耗流水（时间、增减数量、变动后余额、来源如活动打卡、操作类型）。用于「我的徽章怎么来的」「最近有没有扣徽章」。徽章不能通过本工具增减，只能查看。
- `get_digital_human`: 获取某个公开数字人的完整资料：人设(persona)、简介、头像、所在位置，以及它当前的情绪(mood)。是 find_nearby 找到数字人后的「下一跳」——agent 可先介绍数字人，再引导用户与其对话。
- `get_my_account`: 查看当前账号的概览：昵称、徽章余额、会员等级与到期时间、已发布帖子数、数字人数量、加入时间、主页链接。当用户问「我还有多少徽章」「我的会员什么时候到期」「我发了多少帖」时使用。与 whoami 的区别：whoami 只回答「我是谁」，本工具回答「我的账号现在什么状态」。
- `get_my_post_replies`: 查看别人给我的回音，两类都算：① 我发的帖子下的评论与回复；② 别人在**别人的帖子里**回复我的话（我评论过、对方回我）。自己回自己不算。默认只返回「上次读过之后」的新内容；想回溯历史就传 since_hours。mark_read=true 会把这次返回的标为已读——只有用户明确表示看过、或你已经把内容转述给他时才传，否则用户下次再问就查不到这批了。
- `get_post_detail`: 获取某条公开帖子的完整正文、作者、位置与互动数，附带最新 3 条评论作为概览（仅公开帖可查）。想看完整讨论、谁回复了谁、或要回复某个人，用 get_post_replies——那个才是专门的评论区入口。
- `get_post_replies`: 获取某条公开帖子下的评论：一级评论分页返回（最新在前），每条内嵌其下的回复，带作者昵称、时间和「评论 id」。想看某条帖子具体在聊什么、或者要回复某条评论时用这个（回复需要传 reply_to_comment_id，id 就是这里输出的）。只想看帖子正文用 get_post_detail。
- `get_user_profile`: 查看任意 PowPow 用户的公开主页：昵称、简介、徽章数、帖子/关注/粉丝数、最近 3 条帖子。入参可以是用户 ID（UUID）或用户名（可带 @）。已登录时还会告诉你是否已关注 TA。用于「看看这个人的主页」「@xxx 是谁」。
- `like_post`: 给某条帖子点赞。需要 post_id，可从 search_posts、get_post_detail 或 find_nearby 的结果里取。已经点过不会报错。若这条泡泡已经过期，点赞会把它延长 24 小时。
- `list_campaigns`: 列出 PowPow 的全部公开活动（如「北京 100 家博物馆」打卡活动），每个活动内嵌其打卡点(acts)列表。用于 agent 介绍当前可参与的活动。调用后会以「PowPow 附近发现」卡片组件展示已发布的活动。
- `list_favorites`: 列出当前账号在 PowPow 的收藏（三类：地点 location、帖子 post、数字人 digital_human），可带分类、标签与备注。用于「我收藏了哪些地方」「我之前存的那个帖子」。
- `list_friends`: 列出当前账号在 PowPow 的好友。PowPow 没有「好友申请」流程：好友 = 你关注的人里也关注了你的人（互相关注）。用于「我有哪些好友」「我和谁是互关」。
- `my_digital_humans`: 列出当前已连接账号创建的数字人，含是否过期、剩余天数、所在位置与对话链接。数字人有 30 天有效期、创建消耗 2 枚徽章，所以回答「我的数字人还能用多久」「什么时候到期」必须先调本工具。
- `my_followers`: 列出关注当前账号的人（按关注时间倒序）。每项带 is_mutual 标记：为 true 说明你也回关了，也就是 PowPow 里的「好友」。用于回答「谁关注我」「有没有新粉丝」。
- `my_following`: 列出当前账号在 PowPow 关注的人（按关注时间倒序，含昵称、用户名、简介、主页链接）。注意 PowPow 的「好友」不是单独的关系，而是互相关注的结果；问「我的好友」应调用 list_friends。
- `my_posts`: 列出当前已连接账号在 PowPow 发布过的帖子（按时间倒序，含位置、点赞/评论数、原帖链接）。用于「我发过什么」「帮我看看我上一条游记」这类回顾场景；也可在发布后确认是否真的上线。
- `nearby_attractions`: 查找某个地点附近的景点与商圈，与「附近的数字人」互补，构成完整的地图发现能力。返回景点(attractions)与商圈(business_districts)两组，各带距离。调用后会以「PowPow 附近发现」卡片组件展示景点与商圈列表。**必须先向用户确认地点**（用户说「我附近」时问他哪个城市/商圈），不要猜坐标。
- `prepare_post`: 准备一条要发布到 PowPow 的泡泡（保存为草稿，**不会公开**）。真正公开必须再调用 publish_post 并带上返回的 draft_id。content 是正文（最多 5000 字）；images 是用户在对话里上传的图片（最多 3 张）——用户发了图，就把那张图作为文件传进这个参数（用客户端给出的文件引用，不要自己编造 URL）；正文和图片至少要有一样。place 是可选地名，会解析成地图位置，发布后这条泡泡会出现在该地点。草稿 1 小时内有效。
- `publish_post`: 把 prepare_post 生成的草稿真正发布出去。必须带 draft_id。发布后立即公开：其他人能在 PowPow 信息流看到，带地点时还会出现在地图上。同一 draft_id 重复调用不会重复发帖，会返回同一条帖子。
- `remove_favorite`: 把某条收藏从收藏夹删除。需要收藏记录 id。本来就不存在也不会报错，返回 removed=false。
- `reply_to_post`: 在某条公开帖子下发评论；传了 reply_to_comment_id 就是回复那条评论（别人对别人的回复也能回，不用自己判断层级）。**发出前必须把正文原样念给用户确认**——这是以用户本人名义公开留言，站内所有人都能看到。正文 500 字以内、不能为空。
- `search_posts`: 按时间和/或关键词检索公开帖子。① 只给时间（since_hours，或 since/until）：返回该时段的帖子流，按发布时间倒序——用户问「最近有什么新帖」「今天社区在聊什么」「10 月 25 日那天发了什么」时用这个。② 给了 keyword：在该时段内按关键词命中次数排序，取最相关的帖子。③ 时间与关键词都不给：返回全站最新发布的 20 条。时间参数：since_hours=24 表示过去 24 小时（相对现在计算）；since/until 用 YYYY-MM-DD 表示北京时间自然日，until 含当天。每条结果都带真实发布时间，请据此判断新旧，不要假定拿到的都是新内容；结果为空就如实说该时段无帖。
- `search_users`: 按用户名或昵称模糊搜索 PowPow 用户（不区分大小写，最多 20 条）。返回昵称、用户名、简介与主页链接；已登录时标注哪些是你已关注的人。用于「帮我找找叫 xx 的用户」。
- `unfollow_user`: 取消关注 PowPow 上的某个人。需要 user_id。本来就没关注也不会报错，返回 removed=false。
- `unlike_post`: 取消对某条帖子的点赞。本来没点过也不会报错。
- `update_favorite`: 修改某条收藏的分类、标签或备注（只改你传的字段，没传的保持原样）。需要收藏记录 id，可用 list_favorites 查到。注意这会覆盖原来填的内容，没有历史版本。
- `update_profile`: 修改用户自己的 PowPow 昵称或个人简介。昵称 1-20 字，简介 200 字以内；可同时改，至少传一个（bio 传空字符串表示清空简介）。修改后立即在全站生效。注意：头像不能通过这里更换，请让用户到站内设置里操作。
- `whoami`: 确认当前连接的是哪个 PowPow 账号，只返回身份标识（用户 ID、用户名、昵称）。当用户问「我是谁」「登录了吗」「我连的是哪个号」，或在执行任何需要身份的操作前，先调用本工具。账号统计（会员、徽章余额、帖子数、数字人数）请改用 get_my_account。
