Skip to main content
Glama
liu-xindi

polylens-bilibili

by liu-xindi

get_comment_replies

Read-only

Fetches replies to selected Bilibili video comments, paginated in chronological order, with total and withheld counts and per-comment errors for unavailable or rate-limited threads.

Instructions

二级评论按时间正序排列。

total 是该主评论下平台能列出的二级评论总数,可用来算页数。 withheld 是该主评论下平台未列出的二级评论条数(已删除或被折叠)。 某条主评论取不到(评论不存在、不属于这个视频)时只在它的 error 里说明,其他照常返回。 中途被风控或限流时,已取完的照常返回,其余的 error 里说明原因。 parent_id 为空表示直接回复主评论,否则是所回复的那条二级评论的 id。 parent_id 指向的二级评论不在列表里时,那条被平台隐藏了,取不到。 除 jq 外参数相同的调用返回同一结果,from_cache 表示是否来自缓存; 被限速的不完整结果不缓存,要新数据用 refresh。 调用没收到结果时服务端仍会取完,之后用相同参数再取直接用缓存。 image_urls、link_titles 是字符串,多个时以换行分隔。

(comment replies, sub-replies, thread)

Input Schema

NameRequiredDescriptionDefault
jqYes必填的 jq 表达式。输入是单条主评论下的二级评论组成的数组,每条字段:id,author,author_url,author_level,is_up,ip_location,content,like_count,parent_id,created_at,is_top,up_liked,image_urls,link_titles。体积大、多数任务用不到的字段:author_url(查看评论者资料时需要)、is_up、created_at、is_top、up_liked;特定任务需要时照常使用。结果为字符串时原样返回,其他结果编码为表格或 JSON;结果为数组时 jq_count 是其长度。
pagesYes每条主评论取几页,每页 20 条。has_more 表示后面还有。与主评论合计每分钟约取 30 页,取得多则耗时长,可以分几次取。
videoYes视频链接、b23.tv 短链,或裸 BV/av 号;含链接的分享文案也可直接传入。
refreshNo跳过缓存重新取,并更新缓存。
start_pageNo每条主评论从第几页开始,1 起。
comment_idsYes主评论 id 列表,从 get_comments 返回的 comments 表里取。
descriptionYes格式为 工具名:目的。

Output Schema

NameRequiredDescriptionDefault
resultsYes
video_idYes
cached_atNo
elapsed_sNo
from_cacheNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv0.12.1
    • addedInput schema / properties / description
      Added value: +{
      +  "description": "格式为 工具名:目的。",
      +  "title": "Description",
      +  "type": "string"
      +}
    • changedInput schema / properties / pages / description
      Previous value: -"每条主评论取几页,每页 20 条。has_more 表示后面还有。"New value: +"每条主评论取几页,每页 20 条。has_more 表示后面还有。与主评论合计每分钟约取 30 页,取得多则耗时长,可以分几次取。"
    • addedInput schema / properties / refresh
      Added value: +{
      +  "default": false,
      +  "description": "跳过缓存重新取,并更新缓存。",
      +  "title": "Refresh",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / url
      Removed value: -{
      -  "description": "视频链接、b23.tv 短链,或裸 BV/av 号;含链接的分享文案也可直接传入。",
      -  "title": "Url",
      -  "type": "string"
      -}
    • addedInput schema / properties / video
      Added value: +{
      +  "description": "视频链接、b23.tv 短链,或裸 BV/av 号;含链接的分享文案也可直接传入。",
      +  "title": "Video",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "url",
      -  "comment_ids",
      -  "pages",
      -  "jq"
      -]New value: +[
      +  "description",
      +  "video",
      +  "comment_ids",
      +  "pages",
      +  "jq"
      +]
    • removedOutput schema / $defs / ReplyThreadItem / properties / cached_at
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Cached At"
      -}
    • addedOutput schema / properties / cached_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Cached At"
      +}
    • addedOutput schema / properties / from_cache
      Added value: +{
      +  "default": false,
      +  "title": "From Cache",
      +  "type": "boolean"
      +}
  2. Changed9 schema fields changedv0.3.1
    • addedInput schema / properties / jq
      Added value: +{
      +  "description": "必填的 jq 表达式。输入是单条主评论下的二级评论组成的数组,每条字段:id,author,author_url,author_level,is_up,ip_location,content,like_count,parent_id,created_at,is_top,up_liked,image_urls,link_titles。体积大、多数任务用不到的字段:author_url(查看评论者资料时需要)、is_up、created_at、is_top、up_liked;特定任务需要时照常使用。结果为字符串时原样返回,其他结果编码为表格或 JSON;结果为数组时 jq_count 是其长度。",
      +  "title": "Jq",
      +  "type": "string"
      +}
    • removedInput schema / properties / limit
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "integer"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "description": "每个楼只取最早的多少条回复,has_more 表示被截断。不传则取完整个楼。",
      -  "title": "Limit"
      -}
    • addedInput schema / properties / pages
      Added value: +{
      +  "description": "每条主评论取几页,每页 20 条。has_more 表示后面还有。",
      +  "title": "Pages",
      +  "type": "integer"
      +}
    • addedInput schema / properties / start_page
      Added value: +{
      +  "default": 1,
      +  "description": "每条主评论从第几页开始,1 起。",
      +  "title": "Start Page",
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "url",
      -  "comment_ids"
      -]New value: +[
      +  "url",
      +  "comment_ids",
      +  "pages",
      +  "jq"
      +]
    • addedOutput schema / $defs / ReplyThreadItem / properties / cached_at
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Cached At"
      +}
    • addedOutput schema / $defs / ReplyThreadItem / properties / error
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Error"
      +}
    • addedOutput schema / $defs / ReplyThreadItem / properties / jq_count
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Jq Count"
      +}
    • addedOutput schema / $defs / ReplyThreadItem / properties / total
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Total"
      +}
  3. First observedv0.1.0

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Exceptional disclosure beyond annotations: chronological ordering, total/withheld counting semantics, per-comment error isolation (a failed main comment only surfaces in its own error), partial-return behavior under rate limiting, cache identity rules, and the fact that rate-limited incomplete results are not cached. It is fully consistent with readOnlyHint=true and safe to call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence carries real behavioral payload, which is a strength, but the text is not front-loaded: it opens with an ordering detail rather than what the tool returns, and the purpose only emerges from the accumulating details. Structure is dense but reader-hostile on first pass.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and annotations present, the description needn't explain return values, and it still covers caching, error isolation, rate limiting, and withholding semantics thoroughly. For a 7-parameter, paginated, cached read tool, an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters and the baseline is 3. The description adds marginal value on refresh/pages caching semantics, but the meanings of comment_ids, video, start_page and jq are already supplied by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description details the content (二级评论 under a main comment) and closes with the keyword hint '(comment replies, sub-replies, thread)', so an agent can infer the resource. But there is no explicit verb-first statement of what the tool does, and no differentiation from the sibling get_comments, which fetches main comments vs. these sub-replies. Purpose is inferable but not stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives actionable operational guidance—use refresh for new data, split heavy fetches across calls due to the ~30 pages/min limit, and cache reuse across identical-parameter calls. However it never states when to use this tool over get_comments or any alternative sibling, so selection guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.