Skip to main content
Glama
RikaiDev

yomi

Official
by RikaiDev

Yomi (読み) — 个人 LINE MCP 服务器

Yomi 是一个面向你个人账户的开源 LINE MCP 服务器。你可以从 Claude 或任何本地 AI 代理读取、回复、发送图片,并搜索所有对话——无需浏览器、机器人账户或 LINE 自己的客户端。

这个名字有多种读法。読み(yomi)——一种阅读:不仅仅是解析你的消息,而是像你一样读懂情境。詠み(yomi)——吟诵:它不会沉默地阅读,而是把内容读回给你。还有 黄泉(yomi)——不可触及的领域;正是 黄泉帰りyomigaeri)中的 yomi,意为“从黄泉归来”。如同在两个领域之间穿梭的信使,Yomi 穿越封印与沉默,将你对话深处仍可读的消息带回光明。它不会召唤已经失去的历史;它帮助尚未消失的东西被再次看见。

与 LINE 官方 Bot MCP 服务器不同,后者通过 Messaging API 将 AI 代理连接到 LINE 官方账户,而 Yomi 作为辅助设备连接到您现有的个人 LINE 账户和对话。

Yomi 直接使用 LINE 的 TCompact-over-HTTPS 协议,解密 Letter-Sealing(E2EE)消息和媒体,并通过一个小型 stdio MCP 服务器将结果暴露给任何 AI 代理。将 Claude Desktop(或任何 MCP 客户端)指向它,代理就能像你一样跟上你的 LINE——读取、回复、发送图片、提及某人,并在本地搜索你的全部历史——而且通过 get_insight,还能读取情境:哪些对话在等待你的回复,谁将你的世界联系在一起,以及哪些已经逾期。

没有官方 API,没有机器人账户,没有 webhook。Yomi 以辅助设备身份登录你自己的账户。

指南:什么是 LINE MCP 服务器? · LINE MCP 是什么?Yomi、官方 Bot 与桌面自动化的差异

license runtime protocol npm

非官方。 Yomi 是一个独立的个人项目,与 LINE 无关,也未获得 LINE 的认可。使用它可能违反 LINE 的服务条款,并且在你的账户上运行额外的客户端可能面临限流或封禁的风险。它旨在用于阅读你自己的账户。请自行承担使用风险。参见免责声明


快速开始

原生桌面预览

Yomi Desktop 将 LINE 收件箱和本地代理工作区整合到一个原生应用中。它自带运行时:用户无需安装 Node、打开终端、克隆此仓库或配置 YOMI_RUN_MJS 原生桌面版与下文描述的 Claude Desktop MCPB 扩展是分开的。

平台

普通用户包

签名状态

安装体验

macOS 14+, Apple Silicon

Yomi-Desktop-macOS-arm64-<version>.dmg

已使用 Developer ID 签名并通过 Apple 公证

打开 DMG → 将 Yomi 拖到应用程序 → 打开 Yomi

Windows 10/11 x64

Yomi-Desktop-Windows-x64-<version>-Setup.exe

可信 OSS 签名申请进行中

在签名和安装程序冒烟测试通过之前,下载仍不可用

macOS 包已经过真实下载应用路径的测试:隔离的 DMG、安装到 /Applications、Gatekeeper 评估、首次启动、捆绑运行时消息刷新,以及无终端的 LINE 登录表单。Windows 安装程序包含等效的应用内手机/PIN 登录流程,并在发布前在原生 Windows 运行器上进行测试。

桌面构建是实验性的且非官方。LINE 的变更可能会破坏它们,运行额外的客户端可能使账户面临风险。建议使用测试账户并保留当前备份。预览安装程序仅在平台签名可用后作为 GitHub 预发布版发布。

参见桌面发布流程代码签名政策隐私政策

MCP 服务器和桌面扩展

你需要 Node.js 和一个 LINE 账户。Yomi 通过 npx 在本地运行;你无需克隆此仓库、安装 Bun 或构建任何东西。首先运行 node --version,如果命令缺失或版本不受支持,请安装当前的 LTS 版本。

Yomi 的本地搜索索引使用 Node 内置的 node:sqlite,因此需要 v22.13 或更高版本——除了 v23.0–v23.3,这些版本虽然比 v22.13 新,但仍然缺少该模块(它在 22.13.0 和 23.4.0 中都被取消了标志)。任何当前的 LTS 都可以。这是 package.json 中的 engines.node;Yomi 的其余部分可以在较旧的 Node 上运行,但搜索、范围和捕获功能则不行。

⚠️ Yomi 需要一个在你自己的机器上运行它的客户端。 仅云端工具(ChatGPT、Claude.ai 网页版)无法运行 Yomi。在 Claude Desktop 或 Claude Code 中配置 Yomi,它就能在聊天和 Cowork 中工作,因为 Desktop 会在你的机器上启动 Yomi,而 Cowork 的本地会话会加载它。不要要求 Cowork 为你安装 Yomi:Cowork 的 shell 运行在一个一次性的虚拟机中,而不是你的机器上,所以它在其中安装的任何东西在会话结束时都会消失。请按照以下步骤,在你自己的终端中操作。

选择你实际使用的客户端,只遵循该部分。Claude Code 和 Claude Desktop 有各自的 MCP 设置;配置一个不会配置另一个。

这是最简单的路径,也是唯一完全不需要命令行的路径。Claude Desktop 自带 Node 运行时,因此无需安装其他任何东西。

  1. 最新发布下载适合你机器的捆绑包:

    机器

    文件

    Windows (Intel/AMD)

    yomi-win32-x64.mcpb

    Mac (Apple Silicon)

    yomi-darwin-arm64.mcpb

    Linux (x64)

    yomi-linux-x64.mcpb

  2. 在 Claude Desktop 中,打开 设置 → 扩展,将下载的文件拖到该页面(或直接双击该文件)。

  3. 查看它要求的内容,点击 安装

  4. 开始对话并说 “登录 LINE”。Yomi 会显示一个表单,你输入手机号码,然后在手机上确认。全程无需终端。

这完全跳过了配置文件,也绕过了下文描述的 Windows MSIX 错误。

Cowork 用户注意: 不要要求 Cowork 为你安装 Yomi。Cowork 的 shell 运行在一次性的虚拟机中——而不是你的机器上——它不会输入到你的真实终端。请按照上面的三次点击自行安装捆绑包;安装后,Cowork 的本地会话可以像使用任何其他工具一样使用 Yomi。

  1. 找到 npx 的完整路径:

    macOS / Linux: which npx
    Windows:       where npx
  2. 打开 Claude Desktop 配置文件:

    macOS:   ~/Library/Application Support/Claude/claude_desktop_config.json
    Windows: %APPDATA%\Claude\claude_desktop_config.json

    ⚠️ Windows:文档中的路径可能不是 Claude 实际读取的路径。 Claude Desktop 以 MSIX 包形式发布,其文件系统是虚拟化的。应用从以下位置读取配置:

    %LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json

    设置 → 开发者 → 编辑配置 打开的是虚拟化的 %APPDATA%\Claude\ 文件。它们是两个不同的文件,永远不会同步,因此写入文档路径的正确 Yomi 配置会被**静默忽略**——没有错误,没有日志,Yomi 根本不会出现。这是 claude-code#26073,仍然开放。如果重启后 Yomi 没有出现,请将相同的配置也写入上面的 LocalCache 路径。(不适用于 Claude Code,或非 MSIX 安装的 Desktop。)

  3. mcpServers 下添加 Yomi,将示例 command 替换为步骤 1 中打印的完整路径。在 Windows 上,JSON 要求路径中的每个 \ 都写成 \\

{
  "mcpServers": {
    "yomi": {
      "command": "/opt/homebrew/bin/npx",
      "args": ["@rikaidev/yomi"]
    }
  }
}

例如,Windows 路径可能看起来像 "C:\\Program Files\\nodejs\\npx.cmd"。请使用你自己机器上报告的路径,而不是盲目复制任一示例。

⚠️ 你在这里指定的 npx 并不决定哪个 Node 运行 Yomi。 在 macOS 和 Linux 上,npx 是一个以 #!/usr/bin/env node 开头的脚本,因此它会运行 Claude DesktopPATH 中排在最前面的 node——而不是你刚刚指向的 npx 旁边的 Node。Desktop 从桌面会话继承其 PATH,这通常不是你的终端的 PATH,而版本管理器(nvm、fnm、asdf、volta 等)会将自己的 node 放在所有其他内容之前。所以 which npx 可能报告一个完全现代的安装,而 Yomi 仍然在旧 Node 上启动。

症状很具体:登录、读取和发送都正常,但搜索、范围和捕获失败,日志显示 No such built-in module: node:sqlite。Yomi 会在该错误中打印它实际获得的运行时——请阅读它,而不是假设。

解决方案是给服务器一个 PATH,其第一个条目包含受支持的 node

"yomi": {
  "command": "<the npx path from step 1>",
  "args": ["-y", "@rikaidev/yomi"],
  "env": { "PATH": "<dir holding a supported node><sep><a base PATH>" }
}

分隔符:macOS/Linux 上为 :,Windows 上为 ;。在其后保留一个可用的基础路径(/usr/local/bin:/usr/bin:/bin 或你平台的等效路径)——这会替换服务器的 PATH 而不是前置到它,而 npx 需要普通工具。

command 中指定绝对的 node起作用的,无论看起来多么合理:npx 会将包自己的 bin 作为子进程启动,并再次从 PATH 中解析 node,所以 command 只决定谁运行 npx,而不是谁运行 Yomi。设置 PATH 才是真正到达服务器的。

使用 AI 代理配置? MCP 配置现在大多由代理编写,而不是手工编写,因此上述步骤是针对阅读自己机器的人类用户。代理应该解析这些值,而不是输出占位符,而且这个设置有一个值得直说的陷阱:在 command 中指定 npx固定运行时。步骤:

  1. 找到一个实际拥有 Yomi 索引所需模块的 Node——不要从版本号推断:

    node -e 'require("node:sqlite")' && command -v node    # POSIX
    node -e "require('node:sqlite')" && where node         # Windows

    如果它抛出异常,该 Node 无法用于搜索/范围/捕获。尝试其他安装(which -a nodenvm lsfnm list 等),直到有一个通过;然后才继续。

  2. 按照上面的 JSON,将该 Node 的目录写入 env.PATH,并在其后保留一个基础 PATH。在目标机器上解析该目录(步骤 1 中路径的 dirname);不要从本 README 中复制示例——它们是 Apple Silicon Homebrew 路径,几乎在所有地方都是错误的。

    不要改为在 command 中放置绝对路径的 node。这看起来像是更强的修复,但实际上不是:npx 会将包的 bin 作为子进程启动,并为其从 PATH 重新解析 node,所以 command 只决定谁运行 npx。这是经过测量而非假设的——当 Node 20 在 PATH 中排在首位时,command 固定仍然给服务器提供了 Node 20。

    command -v 也可能返回一个包装器而不是真正的二进制文件——堆垫片、本地优先的 npx 包装器和版本管理器存根都很常见,有些会根据客户端的工作目录表现不同。不要试图推理出“真正的”那个。步骤 3 会解决这个问题。

  3. 使用一个触及索引的工具进行验证。yomi version 不是验证——它打印一个字符串而不打开 SQLite,所以它在一个无法运行搜索的 Node 上也会成功。调用 get_scope_policy:它需要 SQLite 且不需要 LINE 登录。如果它返回策略文本,则运行时正确。如果失败,错误会指出实际运行的 Node 及其所需内容。

  4. 完全退出并重新打开 Claude Desktop。首先确认 Yomi 已加载在 Settings → Developer 下:如果 Yomi 未列在那里,说明 Claude 从未读取你的配置——在 Windows 上,请参阅步骤 2 中的 MSIX 警告。一旦列出,工具即可在聊天和 Cowork 的本地会话中使用。

不需要为此设置安装 Claude Code。

claude mcp add yomi -- npx @rikaidev/yomi

启动一个新的 claude 会话。Yomi 工具应该会自动出现。此命令仅配置 Claude Code;它不配置 Claude Desktop。

此形式将运行时留给 PATH,只要你的 claude 会话解析到的 node 是受支持的版本就没问题——这是你可以看到的同一个 PATH,与 Claude Desktop 的不同。使用 node -e 'require("node:sqlite")' 检查。如果它抛出异常,或者你根本不想依赖 PATH,请显式指定 Node:

claude mcp add yomi -e PATH="$(dirname "$(command -v node)"):$PATH" -- npx -y @rikaidev/yomi

无论哪种方式,请使用 get_scope_policy 而不是 yomi version 进行验证:版本命令打印一个字符串而不打开 SQLite,所以它在一个无法运行搜索的 Node 上也会通过。

在此仓库的克隆中运行 Claude Code? 请明确指定 @rikaidev/yomi@latest。如果没有标签,npx 会先查找本地 bin,而在此仓库中 package.json 声明了 "bin": {"yomi": ...},但没有任何东西将其链接到 node_modules/.bin——所以 npx 会跳过安装并以 sh: yomi: command not found 失败。显式标签会使其获取已发布的包。仅影响 Yomi 本身的工作副本;其他任何地方,未加标签的形式都没问题。

此标准配置适用于大多数 MCP 客户端:

{
  "mcpServers": {
    "yomi": {
      "command": "npx",
      "args": ["@rikaidev/yomi"]
    }
  }
}

Cursor SettingsMCPAdd new MCP Server → 命名为 yomi,命令类型,值:npx @rikaidev/yomi

或者添加到项目根目录的 .cursor/mcp.json

添加到 .vscode/mcp.json

{
  "servers": {
    "yomi": {
      "command": "npx",
      "args": ["@rikaidev/yomi"]
    }
  }
}

添加到 ~/.config/opencode/opencode.json

{
  "mcp": {
    "yomi": {
      "type": "local",
      "command": ["npx", "@rikaidev/yomi"],
      "enabled": true
    }
  }
}
codex mcp add yomi npx @rikaidev/yomi

或者添加到 ~/.codex/config.toml

[mcp_servers.yomi]
command = "npx"
args = ["@rikaidev/yomi"]

添加到 cline_mcp_settings.json

{
  "mcpServers": {
    "yomi": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@rikaidev/yomi"]
    }
  }
}

添加到 ~/.codeium/windsurf/mcp_config.json — 与标准配置相同的 JSON。

amp mcp add yomi -- npx @rikaidev/yomi

Advanced settingsExtensionsAdd custom extension → 命名为 yomi,类型 STDIO,命令:npx @rikaidev/yomi

grok mcp add yomi -- npx @rikaidev/yomi

首次登录

连接后,告诉代理:

"登录 LINE — 我的号码是 +8869XXXXXXXX。"

在手机上批准设备(参见 登录),然后:

"总结我未读的 LINE 消息,并告诉我谁在等待回复。"


Related MCP server: LINE Bot MCP Server (SSE Support)

你能做什么

Yomi 通过 MCP 暴露 20 个工具(值得命名的那些;见表格)。大型读取结果使用 token 高效的 TOON;小型状态和写入结果使用紧凑的 JSON。错误保持纯文本,媒体使用原生 MCP 图像/音频/资源内容。 下面的“诚实错误”是指明确命名问题的失败(例如 missing_decrypt_material)——Yomi 从不伪造回退、占位符或虚假成功。

读取

工具

功能

get_unread_digest

一次性:每个有未读消息的会话,包含其最新消息,E2EE 解密,发送者名称已解析。专为“总结我的未读并建议下一步”而设计。只读——从不标记任何已读。

list_conversations

聊天/群组/房间,包含未读计数和解密后的最后一条消息预览。最新活跃的排在最前。

get_chat_messages

单个会话,已解密。使用 before 游标深入分页。每条消息携带任何原始 MENTION 元数据,以便你看到谁被 @ 提及(文本中的字面 @name 不是提及)。

get_message_media / get_message_image

任何解密的附件(图像/视频/音频/文件)。非媒体时给出诚实错误。

find_contact / list_contacts

按名称子字符串查找好友列表,或完整列表。原始 LINE 数据——无模糊评分,无亲和力排名。

get_group_members

持久群组的成员。没有群组记录的临时房间会诚实地失败,而不是返回虚假的空列表。

洞察(读取情境,而不仅仅是消息)

工具

功能

get_insight

一个紧凑的上下文网络,覆盖你的本地索引——代理推理的结构,而不是消息转储。返回 connectors(出现在你的 ≥2 个聊天中的人,以及结构性的桥梁,移除它们会分裂你的联系人图)、relationships(每个会话的参与度和你在那里的典型回复节奏),以及 open(最新消息不是你的会话,按它们相对于该节奏逾期程度排序,每个都有预览)。它只计算结构和统计:它故意决定消息是发给谁的、是开放请求还是结束确认,或昵称的真实身份——那是代理从每个预览中读取的语言,仅在线程值得判断时才解引用 get_chat_messages。编码为 TOON,约为等效 JSON 的 ¼ token。

写入(这些真的会发送——不是草稿)

工具

功能

send_message

立即发送 E2EE 文本消息(1:1 使用配对密钥,群组/房间使用群组密钥)。可选的 mentions 附加真实的 @ 提及,LINE 会高亮并通知;省略它们,字面 @name 只是不会通知任何人的文本。每次调用发送一次,无重试。

send_image

加密、上传到 LINE OBS,并立即发送 E2EE 图像。适用于 1:1、群组和房间。每次调用发送一次。如果无法解析密钥或上传被拒绝,则诚实失败。

mark_read

发送对方可见的已读回执。仅显式操作——读取消息和后台捕获从不标记任何已读。

搜索(本地、跨会话——LINE 没有这样的原语)

工具

功能

search_messages

对所有已索引的对话进行混合搜索。首次使用时自动收集,跨聊天多样化结果,并返回每个命中点周围的小段上下文窗口。返回 modehybrid/semantic/keyword),确保没有任何内容被隐藏。

collect_messages

显式批量索引到本地数据库 + 嵌入以支持语义搜索。唯一允许批量获取的工具;每次调用只运行一次,绝不在定时器上运行。

范围与隐私(全部离线工作,无需 LINE 会话)

工具

功能

exclude_chats

将对话加入拒绝列表 并清除 其已索引的数据。不仅仅是阻止未来捕获——如果拒绝列表把旧数据留在索引中,那就是虚假的隐私。

include_chats

重新允许某个对话(不会恢复已清除的数据)。

list_excluded_chats / get_scope_policy

显示拒绝列表 / 完整隐私策略(从 PRIVACY.md 读取)。

会话

工具

功能

login / login_complete

无密码的辅助设备登录。详见下文。login 是唯一可以在没有现有会话的情况下调用的工具。


登录

前提条件: 在你的主手机上,启用 設定 › 我的帳號 › 允許自其他裝置登入设置 › 账户 › 允许从其他设备登录)。没有它,LINE 永远不会向此设备提供登录提示——这是首次登录看似卡住的最常见原因。

⚠️ 单一桌面会话限制: LINE 每个账户只允许 一个桌面客户端会话同时存在。 由于 Yomi 以桌面辅助设备(DESKTOPMAC)身份连接,登录 Yomi 将使你的官方 LINE Desktop 应用退出登录(而重新登录 LINE Desktop 将使 Yomi 的会话失效)。你不能同时使用 Yomi 和官方 LINE Desktop 客户端。

你只需以 E.164 格式向代理提供你的电话号码——它会在调用工具时自行提供 地区(例如 +886 号码对应 TW)。

Yomi 驱动 LINE 的 无密码(辅助设备) 流程。登录如何呈现 取决于你的 MCP 客户端:

  • 具有 MCP elicitation 能力的客户端login 会提示你输入 电话/地区,在对话框中显示 PIN,并阻塞至完成。一次调用,无需 通过模型传递 PIN。你的电话号码永远不会进入对话记录。

  • 不具备该能力的客户端(例如当前的 Claude Desktop) — 需要两次调用。login(使用你的 电话 + 地区)在其结果中返回 PIN;在你的主手机上于 LINE 中输入 PIN 并批准该设备;然后调用 login_complete,它会阻塞直到 手机确认。代理应立即调用 login_complete——它负责 等待,因此你无需回报任何内容。

  • 从终端npx @rikaidev/yomi login 在 stdout 上运行整个流程,包括 PIN 和 所有内容。始终可作为后备方案使用。

唯一重要的截止时间是 LINE 的: 从 PIN 显示时起,你大约有 3 分钟 来输入 PIN 并批准设备。Yomi 自己的客户端会在那之后继续 监听很多分钟,所以手机慢永远不会是失败原因——只有 LINE 的 3 分钟代码有效期才是。

登录后,会话——包括登录 证书——会被持久化 (参见 下文),未来的登录 完全跳过 PIN

还有一个实验性的 MCP Apps UI(一个 ui://yomi/login 卡片),适用于渲染交互式视图的客户端。它在 规范上是正确的,并且能在 MCP Inspector 下渲染,但某些宿主在获取资源时 未完成视图握手,因此它 仅用于显示,绝不在关键路径上—— 上述流程无论如何始终有效。

会话与凭据

Yomi 拥有自己的登录。启动时它调用一次 resumeSession(),从 macOS 钥匙串(服务 dev.rikai.yomi.credentials,账户 line)读取 LINE 会话,并在需要时静默刷新令牌。

  • 第一方凭据。 无密码登录会持久化认证令牌、 刷新令牌、证书、MID 以及 E2EE 密钥对本身——然后读回 它们以验证写入确实落盘。无法持久化的登录会在 登录时大声失败,而不是在下次重启时静默失败。

  • 共享会话。 会话存储在规范的 dev.rikai.yomi.credentials 钥匙串条目(或本地凭据存储)中,使 Yomi MCP 和 Yomi Desktop 能够 无缝共享完全相同的 LINE 登录会话。

  • 平台说明。 在 macOS 上,会话位于登录钥匙串中。在 Linux 和 Windows 上,Yomi 目前回退到本地 JSON 文件——功能可用,但 保护程度不如操作系统密钥存储,且经过的测试也不如 macOS 路径。 原生安全存储后端(libsecret / DPAPI)已计划中;在此之前,请 相应对待非 macOS 安装。

login 和离线范围/搜索工具外,每个工具在没有会话时 都会返回诚实的错误。Yomi 在其他方面是纯查询服务器——它从不轮询, 从不后台回填;每次工具调用只发出它需要的 LINE 请求, 而 collect_messages 是唯一一次跨多个聊天获取的路径。


搜索

LINE 没有跨对话搜索;Yomi 在本地构建了一个。索引是 仓库中被 gitignore 的 SQLite 数据库(data/search-index.db)——没有任何内容离开 你的机器

搜索在设计上是 混合式 的。它始终运行 FTS5 关键词搜索(对 bigram 预处理文本进行 bm25,因此覆盖了没有词边界的 CJK 子串),并且 在存在嵌入时运行语义搜索,然后通过 倒数排名融合(Reciprocal Rank Fusion) 融合两个排名列表。纯语义搜索会静默丢弃 存在于未嵌入消息中的精确匹配;纯关键词会漏掉释义;融合两者 能同时呈现精确术语和语义匹配。响应的 mode 字段始终 报告哪些方法做出了贡献。

语义排名将每条消息保持为独立的向量。针对真实索引的 LINE 对话进行测试发现,嵌入重叠的对话窗口会稀释 中心消息并降低检索质量。因此上下文仅在排名之后添加: Yomi 限制单个聊天淹没顶部结果,并为每个胜出结果扩展 两侧各两条消息,使代理能看到赋予该命中意义的对话交流, 而不会削弱嵌入本身。

语义排名使用 Xenova/bge-small-zh-v1.5(BAAI 通用嵌入,小型, 以中文为主但支持多语言),通过 transformers.js 实现。嵌入 推理完全在 进程内 CPU 上运行——你的消息文本绝不会被发送到任何地方。

唯一的注意事项是 一次性模型下载:在首次 collect_messagessearch_messages 时,transformers.js 会从 huggingface.co 获取模型(约 90 MB) 并在本地缓存;之后的每次运行完全离线。首次获取是 向 HuggingFace 发出的出站 HTTPS 请求,用于获取模型权重——它携带你的 IP 和 正在下载的模型信息,但不包含任何消息内容和 LINE 数据。如果你需要 Yomi 完全气隙运行,请在首次搜索前预填充 transformers.js 缓存(或将其指向 本地模型目录),这样就不会发出任何网络调用。


辅助设备的现实(在相信"我无法获取旧消息"之前请先阅读)

Yomi 以你账户上的 辅助设备 身份运行。这决定了它能看到什么:

  • 未启用 Letter Sealing 的群聊在 LINE 服务器上是明文——完整 历史和媒体,无任何限制。

  • 启用 Letter Sealing 的群聊是 E2EE 加密的,此时纪元(epoch)很重要。 此类 群组使用共享的 群组密钥 加密,该密钥会轮换(在成员变更或 客户端配置新密钥时)。LINE 只会向设备提供 当前 群组密钥——没有 API 可以获取已被取代的密钥。因此辅助设备只能解密 从其持有的密钥对应的纪元开始的消息;在 较早纪元——即 Yomi 获取当前密钥之前——发送的消息 可能无法解密,即使是在它 可以 读取较早历史的群组中 也是如此。这是 Letter Sealing 按纪元轮换群组密钥的固有限制, 不是这里的 bug。它也可能横向影响:你的手机持有的纪元 与 Yomi 持有的纪元不一定相同,因此 两个设备可能各自读取 同一个群组的不同片段

  • 安装 Yomi 本身不会轮换任何内容,因此"在我安装 Yomi 之前"是 错误的边界。 Yomi 只会 解析 现有的群组密钥;它从不 注册(生成)密钥,因为生成会为每个成员轮换群组的共享密钥, 并使所有在旧密钥下加密的消息无法读取。因此全新安装 会获取 当前 密钥并读回到上次轮换——这可能早于 安装日期数月。边界是上次重新加密,而不是你的安装日期。而且 一旦 Yomi 见过某个纪元,它就会保留该密钥,因此安装 之后 的轮换 使其能够读取两侧的消息。如果某个群组一直到 今天 都无法解密, 那不是此限制——请报告该问题。

  • 1:1 媒体 使用账户级 E2EE 密钥链,辅助设备完全拥有 它(LINE 在配对期间同步它)——Yomi 可以 解密它能看到的 1:1 图片/文件。

  • 1:1 历史 回填 是唯一真正的限制。 LINE 不会像对群组那样 向辅助设备提供 过去的 1:1 消息历史。Yomi 连接期间 收到的消息可以正常解密;深入滚动到配对之前 的 1:1 历史可能会返回空。这是 LINE 服务端的限制, 不是这里的 bug。

当解密真正失败时,Yomi 会返回明确的 missing_decrypt_material 错误——绝不会返回虚假的卡片或占位符。沉默是诚实的;捏造的结果不是。


开发

适用于从事 Yomi 源代码的贡献者(需要 bun 或 Node.js 24+ — .nvmrc 固定了 CI 安装的相同 24 版本,因此在此目录中 nvm use 会选用它;请注意 nvm 不读取 engines,这就是为什么两者 分开声明并由测试守护):

bun install                 # install dependencies (or npm install)
bun run.mjs                 # run the stdio MCP server
bun run.mjs login           # run the login flow in a terminal
npm run build               # tsc --noEmit — type-check only (Yomi ships & runs from src/)
npm test                    # bun test

构建仅进行类型检查和编译;此仓库在自身构建过程中不会与实时 LINE 服务器通信。连接 MCP 客户端并调用 login 才是 真正开始会话的方式。

src/
  line/     LINE protocol core: TCompact/Thrift codec, E2EE (Letter-Sealing,
            group keys, media), Talk/Auth/Sync service clients, session state,
            passwordless login flow.
  auth/     Credential store (macOS Keychain, JSON-file fallback off-darwin).
  search/   Local cross-conversation index (SQLite + FTS5) and the offline
            embedding pipeline (transformers.js).
  mcp/      The stdio server: tool schemas, handlers, the privacy-policy loader,
            and the experimental MCP Apps login view (mcp/ui/).
  util/     [TAG]-prefixed logger (stderr only — stdout is the MCP JSON-RPC stream).

Yomi 写给人类的所有内容都输出到 stderrstdout 保留给 MCP JSON-RPC 流。一个多余的 console.log 会破坏协议——不要在 服务器可达的任何路径上添加它。


隐私

默认情况下,Yomi 会将所有对话索引到本地、设备端搜索索引中,以便代理可以跨对话进行搜索——这是一种默认全量捕获、按聊天逐个选择退出的方式。任何内容都不会被上传;离开你设备的唯一数据就是代理本身在其回复中呈现的内容。(Yomi 自身发起的唯一非 LINE 网络调用是首次搜索时从 HuggingFace 一次性下载嵌入模型——只下载模型权重,不传出任何消息内容;参见搜索。)PRIVACY.md 是权威政策文档,Yomi 会在连接时(以及通过 get_scope_policy)向代理展示同一文本,以便代理在任何批量读取之前披露默认行为。


免责声明

Yomi 是一个独立的、非官方的个人项目,用于学习和访问自己的 LINE 账户。它与 LINE 公司无关联、未经授权、也未获认可。"LINE" 是其各自所有者的商标。

运行 Yomi 可能违反 LINE 的服务条款,在账户上运行额外的客户端可能导致该账户被限速或封禁。Yomi 旨在用于访问你自己的账户和数据。你需自行承担使用方式的责任。本软件按"原样"提供,不附带任何形式的担保——参见LICENSE

致谢

Yomi 的 LINE 协议实现参考了三个开源项目编写,这些项目的字段布局、E2EE 块排序、请求结构和 Thrift 定义为本独立实现提供了参考:

  • evex-dev/linejs(MIT)——请求结构和 Letter-Sealing E2EE 载荷布局。

  • DeachSword/CHRLINE(BSD-3-Clause)——协议字段布局和无密码登录流程。

  • er1ce/LINE-Protocol(Apache-2.0)——Thrift 枚举定义(ContentType、MessageRelationType、ServiceCode)。

根据其许可证要求,其版权声明和完整许可证文本已在NOTICE中转载。

许可证

MIT

Available Tools

41 tools
accept_invitationA

Accepts a group/chat invitation for your LINE account — you join the chat. Use for a group you were invited to (its chatId appears with invited status). One accept per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE group/room MID whose invitation to accept, as returned by list_conversations.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It adds behavioral context such as 'you join the chat' and 'One accept per call,' implying it is a one-shot action. However, it does not disclose what happens if called multiple times, authentication requirements, or error conditions (e.g., already a member).

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

Conciseness5/5

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

The description consists of two concise sentences with no fluff. The purpose is front-loaded, and every sentence contributes meaning. It efficiently conveys the action, context, and constraint (one accept per call).

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no output schema, no nested objects), the description covers the essential aspects: what it does, when to use it, and parameter sourcing. It lacks details on success/error responses but is adequate for an agent to infer behavior.

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

Parameters4/5

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

The input schema has 100% description coverage for the single parameter chatId. The description adds value by specifying that the chatId comes from list_conversations, which provides usage context beyond the schema's description alone.

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

Purpose5/5

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

The description clearly states the verb 'Accepts' and the resource 'group/chat invitation for your LINE account'. It specifies the action 'you join the chat' and distinguishes the tool by mentioning the chatId appears with invited status, differentiating it from sibling tools like invite_member or list_conversations.

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

Usage Guidelines4/5

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

The description provides clear context: 'Use for a group you were invited to (its chatId appears with invited status).' This tells the agent when to use this tool. However, it does not explicitly state when not to use it or mention alternative tools, though siblings like leave_group and invite_member provide implicit contrast.

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

add_friendA

Adds a person to your LINE friends by their MID (e.g. from get_group_members or find_contact). One add per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
midYesMID of the person to add as a friend, e.g. from get_group_members.

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the burden of behavioral disclosure. It reveals a key behavioral trait: 'One add per call.' It also implies mutation (adding a friend). It does not discuss permissions or rate limits, but for a simple operation this is adequate.

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

Conciseness5/5

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

Two short sentences, each essential. No redundancy, directly conveys purpose and a key constraint. Front-loaded with the verb and resource.

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?

Given the tool's simplicity (1 parameter, no output schema), the description covers all necessary aspects: what it does, how to use it, and a limitation. No gaps for a tool of this complexity.

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

Parameters4/5

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

Schema coverage is 100%, so the parameter is already documented. The description adds value by providing usage context ('e.g. from get_group_members or find_contact') beyond the schema description, helping the agent understand valid inputs.

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

Purpose5/5

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

The description clearly states the action ('Adds'), the resource ('a person to your LINE friends'), and the method ('by their MID'). It provides examples of where to obtain the MID, making the purpose unmistakable. It distinguishes itself from sibling tools like block_contact or find_contact.

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

Usage Guidelines4/5

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

The description gives context on how to obtain the MID from other tools (get_group_members, find_contact), implying usage context. However, it does not explicitly state when not to use it or compare with alternatives like accept_invitation.

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

block_contactA

Blocks a contact for your LINE account — they can no longer message you. Reversible with unblock_contact. One block per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
midYesMID of the contact to block.

TDQS

A4/5.0
Behavior3/5

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

No annotations, so description must carry behavioral info. States 'they can no longer message you' and 'one block per call', but omits details like idempotency or permissions.

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

Conciseness5/5

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

Two concise sentences front-loading purpose and key behavior with no superfluous information.

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

Completeness4/5

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

Adequately covers purpose, one-time action, and reversibility for a simple tool. Lacks return value info, but not critical given no output schema.

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 coverage is 100% for 'mid'; description does not add extra semantics beyond schema.

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

Purpose5/5

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

Clear verb 'Blocks' and resource 'contact'. Differentiates from sibling 'unblock_contact' by explicitly mentioning reversibility.

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

Usage Guidelines4/5

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

Mentions reversibility via 'unblock_contact', implying when to use. Lacks explicit exclusions or alternatives like 'remove_friend'.

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

cancel_reactionA

Removes this account's reaction from a LINE message. Undoes a react_message. One cancellation per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesLINE message id whose reaction to remove, as returned by get_chat_messages.

TDQS

A4.5/5.0
Behavior4/5

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

Discloses scope (this account's reaction), undo behavior (undoes react_message), and limitation (one per call). No annotations provided, so description carries burden and does it well.

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

Conciseness5/5

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

Two concise sentences with all essential info: action, scope, relation to sibling, usage constraint. No wasted words.

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?

For a simple one-parameter tool with no output schema, description is fully informative: purpose, behavior, parameter source, usage patterns, and limitations.

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

Parameters4/5

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

Only parameter messageId has schema description, which is 100% covered. Description adds context 'as returned by get_chat_messages', improving usability beyond schema.

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

Purpose5/5

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

Clear verb 'Removes' and resource 'this account's reaction'. Distinguishes from sibling 'react_message' by stating 'Undoes a react_message'.

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

Usage Guidelines4/5

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

Explicitly links to react_message as undo. Mentions 'One cancellation per call' implying usage constraint. No explicit when-not-to-use, but context is clear.

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

collect_messagesA

Bulk-fetch recent messages from LINE conversations into Yomi's local cross-conversation search index (LINE has no native cross-chat search). Fetches up to perChat per chat (default 100) for chatIds, or all conversations when omitted, and best-effort embeds them for semantic search — re-running also repairs any messages still missing a vector. A background capture loop keeps the index current on its own, so call this only to force a reconcile or backfill specific chats. Undecryptable messages are skipped, not fabricated.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdsNoLINE chat/group/room MIDs to collect from, as returned by list_conversations. Omit to collect from all conversations.
perChatNoMaximum recent messages to fetch per chat (default 100).

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that embeddings are done best-effort, re-running repairs missing vectors, and undecryptable messages are skipped (not fabricated). It also mentions the autonomous background loop, providing comprehensive behavioral insight.

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

Conciseness4/5

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

The description is a single, coherent paragraph that is concise yet informative. It front-loads the purpose and then adds details, but could benefit from slight structural improvements (e.g., bullet points) for even easier scanning.

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?

Given the tool's simplicity (2 optional parameters, no output schema), the description covers all necessary aspects: purpose, when to use, behavior (best-effort embedding, repair, error handling), and parameter defaults. It is sufficiently complete.

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 both parameters. The description restates the parameter roles and defaults but adds no new semantic information beyond what is in the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: bulk-fetching recent messages from LINE conversations into a cross-conversation search index. It uses specific verbs ('bulk-fetch') and resources ('recent messages'), and distinguishes itself from siblings by noting LINE's lack of native cross-chat search and the tool's role in indexing.

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

Usage Guidelines4/5

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

The description specifies that the tool should only be called to force a reconcile or backfill specific chats, as a background capture loop normally keeps the index current. This provides clear usage context, though it could explicitly reference sibling tools like get_chat_messages for comparison.

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

create_groupA

Creates a new LINE group/room immediately with the given members (no message is sent). chatType 0 = group (invitees must accept before joining), 1 = room (members added directly); default 1. Provide name and mids (initial members, e.g. from find_contact). One create per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
midsYesMIDs of the initial members to add.
nameYesName for the new group.
chatTypeNoLINE chat type: 0 = group (invite-based), 1 = room (direct add). Default 1.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description must bear full burden. It discloses that no message is sent, chatType affects member addition (invite vs direct), and only one create per call. Does not mention errors, rate limits, or idempotency, but is transparent about core behavior.

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

Conciseness4/5

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

Description is concise with four sentences that front-load the main purpose. No redundant information; each sentence adds unique value.

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

Completeness3/5

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

No output schema or annotations, but description covers key behavior. Lacks details on return value (e.g., created group ID), error handling, or prerequisites like login. Adequate for a simple tool but not fully comprehensive.

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

Parameters4/5

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

Schema coverage is 100% with good descriptions. The description adds value by clarifying chatType meaning (group vs room) and noting that mids can come from find_contact, which aids parameter selection.

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

Purpose5/5

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

Clearly states the tool creates a LINE group/room immediately with given members and no message is sent. Distinguishes between chatType 0 and 1, differentiating from sibling tools like list_groups or leave_group.

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

Usage Guidelines4/5

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

Provides clear when-to-use guidance: creating a group with initial members. Mentions that mids can come from find_contact and defaults chatType to 1. Does not explicitly state when not to use or give alternatives but implies the context.

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

exclude_chatsA

Add conversations to Yomi's privacy denylist. Excluded chats are (1) skipped by future collect_messages/search_messages auto-collect — never fetched or indexed — and (2) PURGED now: their already-indexed messages and embeddings are deleted from the local index in the same call. A real privacy action, not just a future filter. Local-index operation; works without a live LINE session.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdsYesLINE chat/group/room MIDs to exclude, as returned by list_conversations.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses both future filtering and immediate data purging, and notes it works locally without a live LINE session. No behavioral traits are hidden.

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

Conciseness5/5

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

Three sentences, each essential: purpose, effects, and operational context. Front-loaded and no redundancy.

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

Completeness4/5

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

Comprehensive for a mutation tool with no output schema, covering what the tool does and its side effects. Minor gap: no mention of return value, but acceptable given the action-oriented nature.

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

Parameters4/5

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

Schema coverage is 100% with a clear description of parameter. The tool description adds meaning by explaining the consequences of passing chat IDs (skip and purge), going beyond schema details.

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

Purpose5/5

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

The description clearly states it adds conversations to a privacy denylist, with explicit effects (skipping future auto-collect and purging existing data). It distinguishes from siblings like include_chats and list_excluded_chats by describing the dual action.

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

Usage Guidelines4/5

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

The description implies usage for privacy exclusion of chats, but does not explicitly mention when not to use or provide alternatives. However, the context 'a real privacy action' and sibling names suggest reversal with include_chats.

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

find_contactA

Find LINE friends whose display name contains name (case-insensitive substring). Returns each match's mid for send_message. Raw friend-list lookup — no ranking, no fuzzy scoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSubstring to match against friends' display names, case-insensitive.

TDQS

A4.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses substring matching, case-insensitivity, and return of mid, but omits details like no-match behavior or pagination.

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

Conciseness5/5

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

Two concise sentences front-load the purpose and provide key details with no wasted words.

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?

For a simple lookup tool with one parameter, the description covers return value (mid) and matching behavior, sufficient for the agent to use it correctly.

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

Parameters4/5

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

Schema coverage is 100% and description adds case-insensitivity detail, enhancing understanding beyond the schema's description.

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

Purpose5/5

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

Description clearly states it finds LINE friends with display name containing the given substring (case-insensitive), specifying the output as mid for send_message and distinguishing from ranking/fuzzy scoring.

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

Usage Guidelines4/5

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

Implied usage for exact substring matching with mention of no ranking or fuzzy scoring, but does not explicitly exclude alternatives like list_contacts for full listing.

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

get_chat_messagesA

Fetch messages from one LINE conversation. Text is E2EE-decrypted when keys are available; each message has fromName (resolved sender), a mediaType flag (image/video/audio/file) plus messageId for get_message_media, and mentions (LINE's raw contentMetadata.MENTION, or null — a literal "@name" in text is not itself a mention). Without before, returns the most recent count. With before (id/deliveredTime of the oldest message already seen), returns one older page — repeat to page further back.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoMaximum number of messages to return (default 50).
beforeNoCursor to fetch messages older than this point. Use the id and/or deliveredTime of the oldest message already seen.
chatIdYesLINE chat/group/room MID, as returned by list_conversations.

TDQS

A4.5/5.0
Behavior5/5

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

No annotations provided so description carries full burden. It discloses E2EE decryption, resolved sender name, mediaType flag, mentions handling, and paging behavior thoroughly.

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

Conciseness4/5

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

Single paragraph, front-loaded with main action. Every sentence adds value, though could be slightly more structured (e.g., separate sections).

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

Completeness4/5

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

Given no output schema and tool complexity (paging, E2EE, mentions), description covers key behavioral aspects and return fields adequately.

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

Parameters4/5

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

Schema coverage is 100%. Description adds meaningful context beyond schema, such as E2EE decryption, fromName, and mentions as raw contentMetadata.MENTION, enhancing parameter understanding.

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

Purpose5/5

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

Description clearly states 'Fetch messages from one LINE conversation' with specific verb and resource. It distinguishes from sibling tools like get_message_media by mentioning messageId for that purpose.

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

Usage Guidelines4/5

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

Describes when to use `before` for paging and explains default behavior (most recent messages). Does not explicitly mention alternatives but provides clear usage context.

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

get_group_membersA

List the members of one LINE group (mid + displayName each). Resolves persistent groups (c...); ad-hoc rooms (r...) without a group record return an honest error, never a fabricated empty list.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE group chat MID, as returned by list_conversations.

TDQS

A4.3/5.0
Behavior4/5

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

Discloses that ad-hoc rooms return an honest error, not a fabricated empty list. No annotations exist, so description provides useful behavioral context beyond the basic listing operation.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no wasted words. Every sentence adds value.

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?

Explains output format, handles edge case for ad-hoc rooms, and parameter is well-defined. No output schema exists, so description compensates fully.

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?

Single parameter chatId with 100% schema coverage. Description adds no new information beyond schema, but schema is sufficient. Baseline score of 3 is appropriate.

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

Purpose5/5

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

Clearly states verb 'List', resource 'members of one LINE group', and output format 'mid + displayName each'. Distinguishes itself from sibling tools like list_conversations and get_chat_messages.

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

Usage Guidelines4/5

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

Explicitly states when to use (persistent groups) and when not (ad-hoc rooms returning error). Lacks explicit mention of alternatives but provides clear context.

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

get_insightA

A compact "what needs my attention" context network over the local index — you make the final call, this assembles the evidence cheaply. Nodes: connectors (people across ≥2 of your chats, with structural bridges) and relationships (per-conversation engagement, reply rhythm, recency). open: conversations whose latest message is NOT yours, ranked by how overdue they are relative to your usual reply rhythm there, each with fromName (last speaker), a preview of the latest message, overdueRatio/typicality, and a lastMessageId pointer. It carries NO message threads and makes NO judgement about addressee, nicknames, or open-request vs closing-ack — those are language understanding you do by reading each preview (a group message may be addressed to someone else, who then owns it), fetching the full thread with get_chat_messages only for the few worth it. Reads across all conversations (denylist-excluded dropped). Empty only when the index is empty.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdNoOptional focus: restrict `relationships` and `pending` to this chat (as returned by list_conversations). Omit to scan all conversations.
sinceHoursNoLookback window in hours, measured back from the newest captured message (not wall-clock). Default 504 (21 days).

TDQS

A4.7/5.0
Behavior5/5

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

Discloses that it carries no message threads, makes no judgement about addressee, reads across all conversations, and returns empty only when index empty. Fully transparent given no annotations.

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

Conciseness5/5

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

Dense but efficient: every sentence provides value, front-loaded with purpose. No redundancy.

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?

Explains output structure, parameters, edge cases (empty index, denylist). Complete without output schema.

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

Parameters4/5

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

Schema has 100% coverage with descriptions, but description adds context: chatId is optional, sinceHours default is 504. Adds practical meaning beyond schema.

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

Purpose5/5

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

Clearly states it assembles a 'what needs my attention' context network, describing nodes and 'open' conversations. Distinguishes from siblings by noting it carries no message threads and leaves judgement to the user.

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

Usage Guidelines4/5

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

Provides context on when to use ('get compact evidence') and suggests following up with get_chat_messages for full threads. Implicitly excludes use for fetching threads, but no explicit alternatives or when-not-to-use.

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

get_message_imageA

Download and decrypt one LINE image message. Legacy alias of get_message_media restricted to images; prefer get_message_media for video/audio/file.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID the message belongs to. Required to locate E2EE key material.
previewNoFetch the smaller preview object instead of the full-resolution original.
messageIdYesLINE message id, as returned by get_chat_messages.

TDQS

A4.2/5.0
Behavior3/5

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

Mentions decryption and that it's restricted to images, but lacks details on error handling or side effects. With no annotations, the description could be more thorough.

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

Conciseness5/5

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

Two concise sentences with no wasted words. Front-loaded with the primary action and includes essential usage guidance.

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

Completeness4/5

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

Given no output schema and no annotations, the description covers purpose, legacy status, and alternative tool. Minor gap: does not explicitly state return format.

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 coverage is 100% with clear descriptions; the description does not add extra parameter information, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Download and decrypt one LINE image message' and distinguishes itself from sibling get_message_media by noting it's a legacy alias restricted to images.

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

Usage Guidelines5/5

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

Explicitly tells when to use this tool (for images) and when to prefer the alternative: 'prefer get_message_media for video/audio/file'.

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

get_message_mediaA

Download and decrypt one LINE media message of any downloadable type (image, video, audio, file). Returns image/audio MCP content, or an embedded resource blob (with filename when known) for video/file. Non-media messages (text, sticker refs, unsupported types) return an honest error naming the content type — never fabricated bytes.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID the message belongs to. Required to locate E2EE key material.
previewNoFetch the smaller preview object instead of the full-resolution original (images/video only).
messageIdYesLINE message id, as returned by get_chat_messages.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Discloses decryption, return content types for each media, and honest error for non-media. Lacks mention of rate limits or authorization needs.

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

Conciseness5/5

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

Two sentences, front-loaded with main action, no redundant words. Every sentence adds critical information about behavior and types.

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?

Handles all return types explicitly, including error case. No output schema, but description compensates fully. Covers edge cases and diverse media types.

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

Parameters4/5

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

Schema covers all 3 parameters (100%), baseline 3. Description adds context: chatId for E2EE key material, messageId from get_chat_messages, preview for smaller objects. Adds value beyond schema.

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

Purpose5/5

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

Description clearly states the tool downloads/decrypts LINE media messages of any downloadable type, listing specific types (image, video, audio, file) and distinguishing from siblings by specifying error behavior for non-media.

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?

No explicit 'when to use' guidance or alternatives, but description implies only use for media messages by stating non-media return an error. Missing comparison to siblings like send_message or get_chat_messages.

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

get_scope_policyA

Return Yomi's data-capture privacy policy (the disclosure to show the user) plus the current list of excluded conversations. Call this to show the user, in concrete terms, what Yomi captures by default and how to exclude conversations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It indicates a read operation returning data, but does not disclose authorization needs, rate limits, or any side effects. Adequate for a simple getter.

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

Conciseness5/5

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

Two concise sentences with no wasted words; front-loaded with purpose.

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

Completeness3/5

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

Given no output schema, description could detail the structure of the returned policy or excluded conversations list. It mentions 'disclosure to show the user' but lacks specifics, leaving some ambiguity.

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

Parameters4/5

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

No parameters in input schema; baseline score of 4 applies since description adds no param info beyond schema, which is fine given zero parameters.

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

Purpose5/5

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

Description clearly specifies returning Yomi's data-capture privacy policy and the list of excluded conversations, distinguishing it from sibling tools like list_excluded_chats.

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

Usage Guidelines4/5

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

Explicitly states the use case: 'Call this to show the user, in concrete terms, what Yomi captures by default and how to exclude conversations.' Does not mention when not to use, but context is clear.

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

get_unread_digestA

One-shot unread digest: every LINE conversation with unread messages, each with its most recent messages (default 10), E2EE-decrypted, with resolved sender names. Saves calling list_conversations then get_chat_messages per chat. Read-only: never marks anything read, never touches the search index; denylist-excluded conversations are omitted. Returns an empty list when nothing is unread — never fabricated.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of conversations to scan for unread (default 20).
perChatNoMaximum recent messages to include per unread conversation (default 10).

TDQS

A4.6/5.0
Behavior5/5

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

Discloses all key behaviors: read-only nature, no side effects on read status or search index, inclusion/exclusion criteria (denylist), output behavior (empty list vs missing data). Since annotations are absent, description fully covers transparency.

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

Conciseness5/5

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

Three sentences: one states purpose and output, second contrasts with alternatives, third clarifies behavioral constraints. Every sentence adds value, no redundancy.

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

Completeness4/5

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

Covers behavior, side effects, and edge cases (empty result). Lacks explicit output structure details, but since no output schema exists, the description provides enough for an agent to understand the returned data conceptually. Could mention that messages include text, timestamps, etc., but the key elements are described.

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?

Parameter descriptions in schema are already clear (limit for conversations to scan, perChat for messages per unread chat). Description reiterates default values but doesn't add new semantic details beyond confirming they are defaults. Schema coverage is 100%, so baseline 3 applies.

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

Purpose5/5

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

Specific verb+resource: 'get unread digest' with clear scope: all conversations with unread messages, including decrypted messages and resolved names. Distinguishes from sibling tools list_conversations + get_chat_messages by being one-shot.

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

Usage Guidelines5/5

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

Explicitly states when to use: instead of combining list_conversations and get_chat_messages. Also clarifies limitations: denylist-excluded conversations omitted, returns empty list when nothing unread.

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

include_chatsA

Remove conversations from Yomi's denylist, re-allowing future capture. Does NOT restore data purged when the chat was excluded — capture resumes from empty history going forward. Local-index operation; works without a live LINE session.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdsYesLINE chat/group/room MIDs to re-include.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: it only re-allows future capture, does not restore purged data, and operates on a local index. No contradictions.

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

Conciseness5/5

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

Three succinct sentences, each adding value: first states purpose, second clarifies limitation, third gives operational context. No redundant information.

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?

For a simple tool with one parameter and no output schema, the description is complete. It covers purpose, limitations, and operational context, leaving no gaps for an agent to decide.

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 coverage is 100% (only parameter chatIds is described in the schema). The description does not add extra meaning beyond 'LINE chat/group/room MIDs to re-include.' Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action 'Remove conversations from Yomi's denylist, re-allowing future capture.' It specifies the resource (conversations) and distinguishes from the sibling tool 'exclude_chats' by being the inverse operation.

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

Usage Guidelines4/5

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

The description provides clear context: it does NOT restore purged data, and it is a local-index operation. While it doesn't explicitly list when to use vs alternatives, the inverse relationship with exclude_chats is implied, and the limitations guide appropriate usage.

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

invite_memberA

Invites members into a LINE group immediately. Invitees must accept before joining. Provide mids (from find_contact or get_group_members). One call per invite batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
midsYesMIDs of the people to invite.
chatIdYesLINE group/room MID to invite into, as returned by list_conversations.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description covers key behaviors (immediate invite, acceptance required, one batch per call) but lacks details on error handling, permissions, or idempotency.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the primary action, no unnecessary words.

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

Completeness4/5

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

For a simple two-parameter tool, the description covers the main functionality and usage, though absence of output schema and annotations is compensated with adequate behavioral notes.

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

Parameters4/5

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

With 100% schema coverage, the description adds value by explaining the source of mids and batch constraint, going beyond the schema's property descriptions.

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

Purpose5/5

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

The description clearly states the action (invites) and the resource (LINE group members), and distinguishes from sibling tools like kick_member and leave_group.

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

Usage Guidelines4/5

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

Provides guidance on sourcing mids from find_contact or get_group_members and notes batch limitations, but does not explicitly compare with other group tools or mention when not to use.

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

kick_memberA

Removes (kicks) members from a LINE group immediately — they lose access at once (re-adding needs a fresh invite); visible to every member. Provide mids (from get_group_members). One call per removal batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
midsYesMIDs of the members to remove.
chatIdYesLINE group/room MID to remove members from, as returned by list_conversations.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully discloses immediate loss of access, visibility to all members, and need for fresh invite to re-add. This covers key behavioral traits.

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

Conciseness5/5

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

Two sentences with no filler, front-loaded with the main action. Every sentence adds essential information.

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

Completeness4/5

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

Given no output schema, the description adequately covers prerequisites and behavior. It does not explain return values, but the tool is simple enough that this is acceptable.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds context by specifying that mids come from get_group_members and chatId from list_conversations, adding value beyond the schema.

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

Purpose5/5

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

The description uses specific verb 'removes (kicks)' and resource 'members from a LINE group', clearly distinguishing it from sibling tools like invite_member and leave_group.

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

Usage Guidelines4/5

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

Explicitly states to provide mids from get_group_members and that one call handles one batch. While not mentioning when not to use, the sibling context and prerequisites are clear.

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

leave_groupA

Makes THIS LINE account leave a group immediately — it loses access to the group and its history. One leave per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE group/room MID to leave, as returned by list_conversations.

TDQS

A4/5.0
Behavior4/5

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

Even without annotations, the description discloses key behaviors: immediate action, loss of history access, and 'one leave per call' constraint. This is sufficient for a simple tool.

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

Conciseness5/5

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

Two sentences, zero waste. The first sentence states action and effect, the second adds a constraint. Highly efficient.

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

Completeness4/5

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

Given no output schema and simple structure, the description adequately covers the tool's purpose, effect, and parameter. Could mention if the group must exist, but otherwise complete.

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 coverage is 100% with a clear description for chatId. The description adds no additional semantic value to the parameter beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'leave', the resource 'group', and the effect 'loses access to its history'. It distinguishes itself from siblings like kick_member (which removes others) and rename_group.

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?

The description implies when to use (to make the account leave a group) but does not explicitly contrast with alternatives like kick_member or provide conditions for when not to use.

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

list_contactsA

List the authenticated user's full LINE friend list as-is (mid + displayName). No ranking, no interaction-frequency ordering.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions the output fields and lack of ordering, but omits any side effects, authentication requirements, rate limits, or pagination behavior. As a read operation, it is likely safe, but this is not stated.

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

Conciseness5/5

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

The description is a single sentence that conveys the essential purpose and constraints without unnecessary words. It is front-loaded with the main action.

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

Completeness4/5

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

Given the simplicity of the tool (no parameters, no output schema), the description is largely sufficient. It names the output fields and clarifies the lack of ordering. However, it could benefit from details about output format, authentication, or pagination limits.

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

Parameters4/5

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

There are no parameters, and schema description coverage is 100%. The description adds no parameter information because none exist, which is appropriate. Baseline for 0 params is 4.

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

Purpose5/5

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

The description clearly states the verb 'list', the resource 'LINE friend list', and specifies the data returned (mid + displayName). It also clarifies what it does not include (ranking, interaction-frequency ordering), distinguishing it from potential similar tools.

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?

The description implies this tool is for retrieving the raw, unfiltered friend list, but it does not explicitly state when to use it versus alternatives like find_contact or get_insight. No when-not-to-use or excluded cases are mentioned.

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

list_conversationsA

List LINE conversations (chats, groups, rooms) with unread counts, a preview of the last message, and a human-readable name (group title, or the other party's display name for a 1:1).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of conversations to return (default 20).

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description bears the full burden. It discloses the output structure, which is helpful, but does not mention side effects, rate limits, authentication, or ordering behavior. Adequate but not exhaustive.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the action and efficiently conveys the tool's purpose and output. No redundant words.

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

Completeness4/5

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

For a simple list tool with one optional parameter, the description covers the core functionality and output fields. Minor gaps like sorting order or pagination details are missing but not critical given the schema.

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?

The schema has 100% coverage for the single parameter 'limit', and the description does not add any additional meaning beyond what the schema already provides. Baseline score of 3 applies as the description adds no extra value.

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

Purpose5/5

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

The description clearly states the verb 'list', the resource 'LINE conversations', and explicitly mentions the returned fields (unread counts, last message preview, human-readable name). It is specific and distinguishes from sibling tools like list_contacts or list_stickers.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as list_contacts or get_chat_messages. It does not mention any prerequisites, restrictions, or context for appropriate use.

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

list_excluded_chatsA

List the conversations currently on Yomi's privacy denylist. Returns [{ chatId, name }]; name is best-effort resolved when a live LINE session exists, otherwise null — never a fabricated placeholder. Local-index operation; works without a live LINE session.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

Discloses return format, name resolution behavior (best-effort, null without session, never fabricated), and offline capability. No annotations provided, so description compensates fully.

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

Conciseness5/5

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

Two concise sentences front-loading purpose then details. Every sentence adds value; no redundancy.

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

Completeness4/5

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

Fully explains return value and offline behavior. With no output schema, description provides necessary coverage. Could mention empty array case, but not critical.

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

Parameters4/5

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

No parameters exist (0 param schema). Schema coverage is 100%. Baseline 4 applies as description need not add parameter info.

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

Purpose5/5

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

Clearly states 'list the conversations on Yomi's privacy denylist' with specific verb and resource. Differentiates from sibling tools like list_conversations (all chats) and exclude_chats (adding to list).

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

Usage Guidelines4/5

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

Specifies it is a local-index operation working without a live LINE session, indicating when to use. No explicit alternatives but context from sibling tools provides implicit guidance.

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

list_stickersA

List the sticker packages this LINE account OWNS — the only stickers it can send. Returns each package's packageId (STKPKGID), title, and version (STKVER). Get individual sticker ids via search_stickers, then send_sticker. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoLocale for package titles, e.g. 'en' or 'zh-Hant'. Defaults to 'en'.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, but description explicitly states 'Read-only', which is a key behavioral trait. It also describes the return fields (packageId, title, version). However, it omits details like auth requirements or pagination, which are less critical for a simple list operation.

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

Conciseness5/5

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

The description is concise with three front-loaded sentences: purpose, return fields, and usage guidance. No unnecessary words or repetitions.

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

Completeness4/5

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

Given no output schema, the description partially compensates by listing return fields. It covers the core functionality and usage context, though it could explicitly state the result format (e.g., array of objects).

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 coverage is 100%, with the language parameter already described well in the schema. The description does not add additional semantic meaning beyond what the schema provides, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'List the sticker packages this LINE account OWNS' with a specific verb (list) and resource (sticker packages), and distinguishes from siblings by noting it only lists owned packages that can be sent.

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

Usage Guidelines5/5

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

Explicitly directs to use search_stickers for individual sticker ids and then send_sticker for sending, providing clear workflow guidance and distinguishing when to use this tool vs. alternatives.

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

loginA

Log in to LINE via the passwordless secondary-device flow. Requires 設定 > 我的帳號 > 允許自其他裝置登入 enabled on the primary phone — with it off LINE never prompts that phone and NO login can succeed, so raise this with the human up front rather than after a failure. On MCP clients with form elicitation, this call first confirms that setting, then prompts for phone/region and PIN and completes login by itself; if the human says the setting is off, it returns the enabling steps without starting a login (relay them verbatim, then call login again). On clients without it (e.g. Claude Desktop), phone/region come from the arguments or a persisted login, and this returns as soon as LINE issues the PIN (or reports none needed) — then call login_complete IMMEDIATELY (do not wait for the human). LINE gives ~3 minutes from PIN display to confirm on the phone; login_complete blocks past that, so calling it late only wastes that window.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneNoPhone number in E.164 form, e.g. +8869XXXXXXXX. Omit to be prompted (elicitation) or to reuse a persisted number.
regionNoRegion code, e.g. TW, JP, TH, ID, US. Omit to be prompted (elicitation) or to reuse a persisted region.

TDQS

A4.8/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Thoroughly explains flow: setting check, prompt sequence, client differences, PIN timeline, and blocking behavior of login_complete.

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

Conciseness4/5

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

Description is long but every sentence adds necessary context. Front-loaded with purpose, then layered details. Could be slightly tighter but complexity justifies length.

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?

Covers prerequisites, client differences, parameter interactions, timing constraints, and error handling. No output schema but describes return behavior adequately. Complete for a complex login flow.

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

Parameters4/5

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

Schema coverage is 100% (both parameters described). Description adds value by specifying E.164 format, region code examples, and clarifying that omitting parameters triggers prompting or reuse of persisted values.

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

Purpose5/5

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

Clearly states 'Log in to LINE via the passwordless secondary-device flow.' Specifies verb and resource, and distinguishes from sibling tool 'login_complete' by describing their interaction.

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

Usage Guidelines5/5

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

Provides explicit when-to-use, prerequisites (setting on primary phone), handling of failure (setting off), client-specific behavior, and immediate follow-up requirement for login_complete.

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

login_completeA

Finish a passwordless login that login started on a client without form elicitation (not needed on form-elicitation-capable clients). No arguments. Call immediately after login returns — do not wait for the human. Blocks while they enter the PIN (skipped if a stored certificate is valid) and approve the device, then returns the profile. LINE's real deadline is ~3 minutes from PIN display. Errors if no login is pending.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior5/5

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

Discloses key behaviors: blocks while user enters PIN, skips if stored certificate valid, requires device approval, returns profile, and errors if no pending login. With no annotations, description fully covers the tool's behavior.

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

Conciseness5/5

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

Single paragraph with front-loaded purpose, every sentence adds value (timing, blocking behavior, deadline, errors). No wasted words.

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

Completeness4/5

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

Covers most essential aspects (flow, timing, errors) but lacks details about the returned profile structure. Without output schema, a bit more on what the profile contains would improve completeness.

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

Parameters4/5

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

No parameters exist; description states 'No arguments.' Schema coverage is 100%, so no additional meaning needed. Baseline 4 for zero-parameter tools.

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

Purpose5/5

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

The description clearly states that this tool finishes a passwordless login initiated by 'login', specifies when it is needed (not on form-elicitation-capable clients), and distinguishes it from the sibling 'login' tool.

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

Usage Guidelines5/5

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

Explicitly instructs to call immediately after 'login' returns without waiting, mentions the 3-minute deadline, and warns of errors if no login is pending. Provides clear when-to-use vs. when-not (form-elicitation-capable clients).

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

mark_readA

Send a LINE read receipt (mark a conversation read up to messageId, or the latest when omitted) — a real action the other party can see. Use ONLY when the user explicitly wants to mark a chat read; reading (get_chat_messages, get_unread_digest) and background capture never mark read. Fails honestly if there is nothing to mark.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID to mark read, as returned by list_conversations.
messageIdNoOptional message id to mark read up to. Omit to mark read up to the latest message.

TDQS

A4.4/5.0
Behavior4/5

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

Discloses real action visible to other party and honest failure. No annotations provided, so description carries full burden; covers key traits but could mention side effects.

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

Conciseness5/5

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

Two sentences, front-loaded with action, no wasted words.

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

Completeness4/5

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

Adequate for a simple tool with no output schema; covers input semantics and behavioral impact. Slight gap on return value but acceptable.

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 coverage is 100%, so baseline 3. Description adds explanation of messageId omission behavior, but does not significantly enhance schema info.

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

Purpose5/5

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

Clearly states the tool sends a LINE read receipt, marks a conversation read up to a message ID, and distinguishes from reading tools like get_chat_messages.

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

Usage Guidelines5/5

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

Explicitly says 'Use ONLY when the user explicitly wants to mark a chat read' and names alternatives that do not mark read.

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

preview_stickerA

Show sticker preview images (MCP image content from the public sticker CDN) so you and the user can SEE them before sending. Give a packageId (from list_stickers/search_stickers) to preview its first stickers, or add a stickerId to preview just one. Each image is labeled with its stickerId + packageId for send_sticker. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax stickers to preview when no stickerId is given (default 8).
packageIdYesSticker package id (STKPKGID) to preview.
stickerIdNoOptional specific sticker id (STKID) to preview just that sticker.

TDQS

A4.3/5.0
Behavior3/5

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

Declares read-only nature and mentions it returns MCP image content from the public CDN. Without annotations, this covers basic safety but misses details like auth or rate limits. Adequate for a simple read operation.

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

Conciseness5/5

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

Three sentences with no waste: purpose, usage guidance, and labeling info. Front-loaded with main action.

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?

Complete for the tool's simplicity: explains what it does, how to use parameters, and what output looks like (images labeled). No output schema needed.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value by explaining the relationship between packageId and stickerId, and mentions default limit. Goes beyond schema.

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

Purpose5/5

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

The description clearly states it shows sticker preview images using MCP image content from the public sticker CDN, distinguishing it from siblings like send_sticker (sends) and list_stickers (lists metadata).

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

Usage Guidelines4/5

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

Provides clear usage context: give a packageId from list_stickers/search_stickers to preview stickers, or add a stickerId for a single sticker. Mentions labeling for send_sticker. Lacks explicit when-not or alternatives, but context is strong.

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

react_messageA

Adds a reaction to a LINE message, visible to the conversation. reactionType: 2 = 👍 LIKE, 3 = ❤️ LOVE, 4 = 😆 LAUGH, 5 = 😮 SURPRISE, 6 = 😢 SAD, 7 = 😡 ANGRY (default 2). One reaction per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
messageIdYesLINE message id to react to, as returned by get_chat_messages.
reactionTypeNoPredefined reaction: 2=👍LIKE, 3=❤️LOVE, 4=😆LAUGH, 5=😮SURPRISE, 6=😢SAD, 7=😡ANGRY. Default 2.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description carries burden. Lists reactionType values and default, and mentions visibility. However, does not disclose side effects, permissions, or rate limits. Adequate but not comprehensive.

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

Conciseness5/5

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

Two concise sentences: first for purpose, second for parameter enum. Front-loaded and no unnecessary words.

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

Completeness3/5

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

Simple tool (2 params, no output schema). Description covers basic purpose and parameters but lacks usage context, return value (fire-and-forget?), or edge cases. Adequate for minimal viability.

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

Parameters4/5

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

Schema coverage is 100%. Description adds value for messageId by noting it is 'as returned by get_chat_messages', providing context beyond the schema. However, reactionType info largely duplicates schema.

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

Purpose5/5

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

Description clearly states the action: 'Adds a reaction to a LINE message, visible to the conversation.' Specific verb (adds) and resource (reaction to LINE message). Distinguishes from sibling 'cancel_reaction' (which removes reactions) and other messaging tools.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives (e.g., cancel_reaction, unsend_message). Only mentions 'One reaction per call' but does not clarify use cases or prerequisites.

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

rename_groupA

Renames a LINE group/chat immediately; the new name is visible to every member. Works on groups/rooms (chatId starting with c/r). One rename per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew group name.
chatIdYesLINE group/room MID to rename, as returned by list_conversations.

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavioral traits. It notes that the rename is 'immediate' and 'visible to every member', and restricts to chatId starting with c or r. It does not mention permissions, reversibility, or error cases, but provides adequate basic behavior for a simple mutation.

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

Conciseness5/5

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

Two sentences that cover purpose, effect, scope, and usage constraint. No redundant information, perfectly front-loaded with the core action. Every word earns its place.

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

Completeness4/5

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

Given the simplicity of the tool (2 required params, no output schema), the description reasonably explains the effect and constraints. It could mention the response type or error handling, but it is sufficient for an agent to understand the tool's behavior. No output schema exists, but the description covers the essential outcome.

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

Parameters4/5

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

Schema coverage is 100% with both parameters described. The description adds extra value by specifying that chatId must start with 'c' or 'r', which is not in the schema. This helps the agent correctly format the chatId parameter beyond the schema's generic description.

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

Purpose5/5

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

The description clearly states the action (renames) and the resource (LINE group/chat). It specifies that the new name is visible to all members, and distinguishes the tool by noting it works on groups/rooms with a specific chatId prefix, setting it apart from siblings like create_group.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: renaming a group/chat with a specific chatId prefix. It mentions 'one rename per call' to guide usage, but does not explicitly state exclusions or alternatives, which is acceptable as no sibling directly competes.

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

search_messagesA

Search across your LINE messages. Hybrid ranking: FTS5 keyword search (covers every indexed message, so exact matches are never dropped) fused with semantic similarity when embeddings are available — the mode field reports which contributed (hybrid | semantic | keyword). If the index is empty and a session is live, it auto-collects all conversations first; a populated index searches locally with no network. Empty index with no session returns an honest notice, never a fabricated match list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (default 20).
queryYesSearch query. Plain keywords and natural-language descriptions both work — keyword matching catches exact terms, semantic matching catches paraphrases.

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses key behaviors: auto-collection on empty index with live session, hybrid ranking, mode reporting, and honest failure on empty index without session. This is thorough and transparent.

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

Conciseness4/5

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

The description is somewhat lengthy but each sentence adds valuable information. It is front-loaded with the core purpose and then details the behavior, making it efficient for an agent to parse.

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

Completeness4/5

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

Given the complexity of hybrid search and auto-collection, the description covers the key behaviors well. While there is no output schema, it mentions the mode field, providing enough context for an agent to understand the return structure.

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

Parameters4/5

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

Schema coverage is 100%, and the description adds meaningful nuance to the query parameter, specifying that plain keywords and natural-language descriptions both work. This goes beyond the schema's basic description.

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

Purpose5/5

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

The description clearly states it searches across LINE messages with a hybrid ranking approach, and distinguishes itself from sibling tools like list_conversations and get_chat_messages by focusing on search functionality.

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

Usage Guidelines4/5

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

The description provides explicit context for when the tool auto-collects versus searches locally, and mentions the behavior when the index is empty. However, it does not explicitly state when not to use this tool in favor of alternatives.

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

search_stickersA

Search the account's OWNED sticker packages by title and expand each match into its individual sticker ids (STKID), ready for send_sticker. Case-insensitive substring match on the package title. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax matching packages to expand with sticker ids (default 8).
queryYesSubstring to match against owned package titles (case-insensitive).
languageNoLocale for package titles to match against, e.g. 'en' or 'zh-Hant'. Defaults to 'en'.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It explicitly states 'Read-only' and explains the expansion behavior. However, it does not detail output structure or edge cases like no matches.

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

Conciseness5/5

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

The description is extremely concise, with three brief statements covering purpose, matching behavior, and read-only nature. No superfluous words.

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

Completeness4/5

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

Given the lack of output schema and annotations, the description covers the main purpose and behavior well. It hints at the output (sticker IDs) but does not specify the exact structure, which is a minor gap.

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 coverage is 100%, providing full parameter descriptions. The tool description adds no new information beyond the schema; it repeats the query substring match and limit defaults, so no added value.

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

Purpose5/5

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

The description clearly states the tool searches owned sticker packages by title and expands results into sticker IDs, ready for send_sticker. It specifies case-insensitive substring match, distinguishing it from list_stickers which likely lists all packages.

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

Usage Guidelines4/5

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

The description indicates the output is ready for send_sticker, implying a use case. It does not explicitly mention when not to use or alternatives, but the context is clear enough for an agent to infer appropriate usage.

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

send_audioA

Sends an E2EE audio message to a LINE conversation immediately (same pipeline as send_file). Provide exactly one of filePath or audioBase64; optional durationMs sets the recipient player length. Works for 1:1/group/room. One send per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
fileNameNoOptional original filename (used for the upload name; defaults to the basename of filePath or audio.m4a).
filePathNoLocal filesystem path to the audio file. Mutually exclusive with audioBase64.
durationMsNoOptional audio duration in milliseconds, for the recipient player progress bar.
audioBase64NoBase64-encoded audio bytes. Mutually exclusive with filePath.

TDQS

A4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states it sends an E2EE audio message immediately, but does not mention any required permissions, rate limits, or what happens on failure. The behavioral transparency is insufficient.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the core purpose, and contains no superfluous information.

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

Completeness4/5

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

For a send tool with no output schema and 5 parameters, the description covers the key aspects: what it does, how to use params, and applicable conversation types. It could mention return value or error handling, but overall it is sufficiently complete.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying mutual exclusivity between filePath and audioBase64, and explains that durationMs sets the recipient player length. This goes beyond the schema's individual parameter descriptions.

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

Purpose5/5

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

The description clearly states the action ('sends'), the resource ('E2EE audio message'), and the target ('LINE conversation'). It also notes it uses the same pipeline as send_file, which helps distinguish it from other send tools.

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

Usage Guidelines4/5

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

The description provides clear usage guidance: 'Provide exactly one of filePath or audioBase64' and mentions optional durationMs. It specifies applicability to 1:1/group/room and that one send per call is allowed. However, it does not explicitly indicate when to use this tool versus alternatives like send_message or send_file.

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

send_contactA

Shares a LINE contact card to a conversation immediately — the recipient sees a tappable card for contactMid (e.g. from find_contact or get_group_members). displayName is optional (resolved from the mid when omitted). Works for 1:1/group/room. One send per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
contactMidYesMID of the person whose contact card to share, as returned by find_contact or get_group_members.
displayNameNoOptional display name for the card. Resolved from contactMid when omitted.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the send is immediate, one per call, and displayName is optional (resolved from contactMid when omitted). It could mention permissions or error handling, but the key behavioral traits are covered.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action, and contains no unnecessary words. Every sentence adds meaningful context.

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

Completeness4/5

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

With 3 parameters (2 required) and no output schema, the description explains what the tool does, how to use it, and key constraints. It does not mention the response or success/failure signals, but for a side-effect tool, the information is sufficient for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining chatId as a LINE chat/group/room MID, contactMid as coming from find_contact or get_group_members, and displayName's optional behavior. This enriches the schema definitions.

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

Purpose5/5

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

The description explicitly states the tool shares a LINE contact card to a conversation, specifying the action and resource. It distinguishes from sibling send tools like send_message or send_image by focusing on contact cards and referencing find_contact/get_group_members for the MID.

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

Usage Guidelines4/5

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

The description clearly indicates the tool is for sharing contact cards and works in 1:1/group/room. It does not explicitly state when not to use it or mention alternatives, but the context from sibling tools makes the intended use case clear.

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

send_fileA

Sends an E2EE file attachment (any type — .docx, .pdf, .zip, …) to a LINE conversation immediately (same pipeline as send_image; the original filename is sealed end-to-end). Works for 1:1/group/room; fails honestly if the key cannot be resolved or the upload is rejected. One send per call. Provide exactly one of filePath or fileBase64; fileName is required with fileBase64 (and overrides the basename when given with filePath).

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
fileNameNoOriginal filename shown to the recipient (sealed E2EE). Required with fileBase64; optional with filePath (defaults to its basename).
filePathNoLocal filesystem path to the file. Mutually exclusive with fileBase64.
fileBase64NoBase64-encoded file bytes. Mutually exclusive with filePath; requires fileName.

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: E2EE, filename sealed, same pipeline as send_image, honest failure, one send per call, and mutual exclusivity of filePath/fileBase64. No contradictions.

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

Conciseness5/5

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

Two sentences, no wasted words. First sentence covers core action and scope; second sentence adds edge cases and constraints. Efficiently structured.

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?

Given no output schema, the description adequately sets expectations (send succeeds or fails honestly). It covers the key aspects needed for an agent to invoke the tool correctly.

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

Parameters5/5

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

Schema coverage is 100%, but description adds significant value: clarifies mutual exclusivity of filePath/fileBase64, fileName requirement with fileBase64, and default behavior with filePath. This exceeds the schema documentation.

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

Purpose5/5

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

Description clearly states it sends an E2EE file attachment to a LINE conversation, specifies supported file types, and distinguishes by noting it uses the same pipeline as send_image. This provides a specific verb+resource and differentiates from siblings like send_message and send_image.

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

Usage Guidelines4/5

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

Description explains when to use (sending files) and mentions failure conditions (key resolution/upload rejection). It doesn't explicitly state when not to use or list alternatives, but the guidance is sufficient for correct invocation.

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

send_imageA

Sends an E2EE image to a LINE conversation immediately (encrypt → upload to OBS → send). Works for 1:1/group/room; fails honestly if the key cannot be resolved or the upload is rejected. One send per call. Provide exactly one of imagePath or imageBase64.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
imagePathNoLocal filesystem path to the image file. Mutually exclusive with imageBase64.
imageBase64NoBase64-encoded image bytes. Mutually exclusive with imagePath.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses behavioral traits: the E2EE encryption process, the upload to OBS, failure conditions ('fails honestly'), and the limitation of one send per call. This exceeds the minimum required for transparency.

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

Conciseness5/5

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

The description is concise (three sentences) with front-loaded action and no extraneous details. Every sentence adds value: purpose, constraints, and parameter guidance.

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

Completeness4/5

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

Given the tool sends an image and has no output schema, the description covers essential aspects: encryption, upload, target types, failure cases, and input constraints. It lacks details on return values (e.g., success indicator) but is sufficient for most agents.

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

Parameters4/5

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

The schema already provides 100% coverage with descriptive parameter descriptions. The description adds value by explicitly stating 'Provide exactly one of imagePath or imageBase64', reinforcing the mutual exclusivity constraint. This is helpful but not critical given the schema.

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

Purpose5/5

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

The description clearly states the verb 'sends' and the resource 'E2EE image' with a detailed workflow (encrypt → upload → send). It specifies the target conversation types (1:1/group/room) and distinguishes from other send tools by focusing on images with E2EE.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool: for immediate sending of a single encrypted image. It mentions failure conditions (key resolution, upload rejection) and the constraint 'one send per call'. However, it does not explicitly mention when not to use it (e.g., for multiple images) or suggest alternatives.

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

send_locationA

Sends a location (map pin) to a LINE conversation immediately — latitude/longitude plus optional title (place name) and address. Works for 1:1/group/room. One send per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoOptional place name shown on the pin.
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
addressNoOptional address shown under the pin.
latitudeYesLatitude in decimal degrees.
longitudeYesLongitude in decimal degrees.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It mentions 'immediately' and 'One send per call,' but does not disclose rate limits, permissions, or side effects. Some useful context, but incomplete.

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

Conciseness5/5

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

Two concise sentences, no wasted words. The first sentence covers the action and parameters, the second covers scope and limit. Highly efficient.

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

Completeness4/5

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

For a tool with 5 parameters and no output schema, the description covers the essential action and constraints. However, it does not mention what is returned (e.g., success indication or message ID), leaving a potential gap for the agent.

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

Parameters4/5

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

Schema description coverage is 100%. The description adds 'place name' for title and 'address shown under the pin,' which clarifies semantics beyond the schema. Baseline of 3 is exceeded by this additional nuance.

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

Purpose5/5

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

The description clearly states it sends a location (map pin) with latitude/longitude and optional title/address, and specifies it works for 1:1/group/room. This differentiates it from sibling tools like send_message or send_image.

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

Usage Guidelines4/5

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

The description indicates immediate sending and limits to one send per call, which provides context. However, it does not explicitly compare to alternatives or provide when-not-to-use guidance.

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

send_messageA

Sends a text message to a LINE conversation immediately (not a draft). Always E2EE (pairwise for 1:1, group key for group/room); fails honestly rather than sending plaintext if the key cannot be resolved. One send per call. To @mention someone, put the visible "@name " into text AND pass a matching mentions entry — without mentions, "@name" is plain text and notifies no one. Resolve MIDs via get_group_members or find_contact first.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesPlain-text message body, including the literal "@name" text for any mentions — mentions only mark up text that is already there.
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
mentionsNoOptional @mentions. Each entry marks a span of `text` as a mention of one user, which LINE highlights and notifies. Omit to send `text` as plain, non-notifying text.
replyToMessageIdNoOptional message id (from get_chat_messages) this replies to — LINE renders a quoted reply. Omit for a normal message.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses critical behaviors: immediate sending (not a draft), E2EE handling ('fails honestly rather than sending plaintext'), per-call limitation ('One send per call'), and mention mechanics. This level of detail is essential for an AI agent to understand the tool's side effects and constraints.

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

Conciseness4/5

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

The description is dense with useful information, but every sentence serves a purpose—no fluff. It is slightly long but front-loaded with the core action and then details. Structured logically: main action, then E2EE, then mentions, then dependencies. Could be trimmed slightly but overall efficient.

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?

Given the complexity and the set of sibling tools (31 tools including send_image, send_file, etc.), this description fully equips the agent. It addresses all relevant concerns: immediate sending, mentions prerequisites, E2EE safety, and how to obtain needed MIDs. No output schema is needed for this action.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds substantial meaning: it explains the relationship between the text parameter and mentions entries, specifies UTF-16 code units for offsets, and clarifies that replyToMessageId makes a quoted reply. It also instructs how to obtain MIDs for mentions, which is not in the schema.

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

Purpose5/5

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

The description explicitly states 'Sends a text message to a LINE conversation immediately (not a draft)', uses a specific verb ('sends'), identifies the resource ('LINE conversation'), and distinguishes from related tools like send_image or send_file by focusing on text messages. It also clarifies behavioral nuances like E2EE and mentions, making the purpose unmistakable.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use: for immediate text messages. It explains prerequisites for mentions ('resolve MIDs via get_group_members or find_contact first') and correct usage ('put the visible "@name " into text AND pass a matching mentions entry'). It does not explicitly state when to avoid this tool, but the context of sending text versus other media is implied.

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

send_stickerA

Sends a LINE sticker to a conversation immediately, named by stickerId (STKID) + packageId (STKPKGID). Only OWNED stickers can be sent — get ids from search_stickers/list_stickers. Works for 1:1/group/room. One send per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
versionNoSticker version (STKVER). Defaults to "1".
packageIdYesLINE sticker package id (STKPKGID).
stickerIdYesLINE sticker id (STKID).

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It states immediate sending and per-call limitation. It could mention if a response is returned, but overall sufficiently transparent for a simple send operation.

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

Conciseness5/5

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

Three sentences, no redundant words. The core action is front-loaded, and each sentence provides necessary information. Highly efficient.

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?

For a tool with 4 parameters, no output schema, and no nesting, the description covers all essential aspects: input requirements, usage restrictions, and conversation types. It is complete enough for an agent to use 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 coverage is 100%, so baseline is 3. The description adds context by explaining the naming convention (STKID, STKPKGID) and version default, but the schema descriptions are already adequate.

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

Purpose5/5

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

The description clearly states the tool sends a LINE sticker to a conversation, specifying the exact identifiers (stickerId and packageId). It distinguishes itself from sibling tools like send_message by focusing on stickers.

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

Usage Guidelines5/5

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

Explicitly mentions that only owned stickers can be sent and directs the agent to search_stickers/list_stickers for IDs. Also specifies scope (1:1/group/room) and limit (one send per call), providing clear when-to-use guidance.

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

send_videoA

Sends an E2EE video to a LINE conversation immediately (same pipeline as send_file; uses LINE chunked video encryption so it plays and integrity-verifies on official clients). Provide exactly one of filePath or videoBase64; optional durationMs sets the scrubber length. Works for 1:1/group/room. One send per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
chatIdYesLINE chat/group/room MID to send to, as returned by list_conversations.
fileNameNoOptional original filename (used for the upload name; defaults to the basename of filePath or video.mp4).
filePathNoLocal filesystem path to the video file. Mutually exclusive with videoBase64.
durationMsNoOptional video duration in milliseconds, for the recipient player scrubber.
videoBase64NoBase64-encoded video bytes. Mutually exclusive with filePath.

TDQS

A3.8/5.0
Behavior4/5

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

Discloses encryption (E2EE, LINE chunked video encryption) and immediate delivery. No annotations provided, so description carries full burden. Missing rate limits or error behavior, but key traits are covered.

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

Conciseness5/5

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

Three sentences: first defines purpose and encryption, second parameter constraints, third target types and send limit. No redundancy, all information earns its place.

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

Completeness3/5

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

Covers all key aspects for a send tool with 5 parameters and no output schema. However, does not describe the return value or confirm success/failure signaling, leaving a small gap.

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

Parameters4/5

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

Adds value beyond schema by stating mutual exclusivity of filePath and videoBase64, explaining durationMs sets scrubber length, and noting fileName default behavior. Schema coverage is 100%, so baseline is 3; description elevates to 4.

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

Purpose4/5

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

Clearly states 'Sends an E2EE video to a LINE conversation immediately' with specific verb and resource. Could better differentiate from other media tools like send_audio or send_image, which are siblings.

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?

Provides explicit constraints: 'Provide exactly one of filePath or videoBase64', 'Works for 1:1/group/room', 'One send per call'. However, no guidance on when to use this vs. send_file, send_audio, etc., leaving the agent to infer.

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

unblock_contactA

Unblocks a previously blocked contact for your LINE account. Undoes block_contact. One unblock per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
midYesMID of the contact to unblock.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. States 'One unblock per call' (a behavioral constraint). However, lacks disclosure of side effects, required permissions, or error handling (e.g., if contact is not blocked).

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

Conciseness5/5

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

Two short sentences, front-loaded with the main action. No unnecessary words. Every sentence adds value.

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

Completeness4/5

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

Tool is simple with one required param and no output schema. Description covers the function and its relationship to block_contact. Could mention what happens if mid is already unblocked, but not essential for a basic tool.

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 coverage is 100%, and the description only repeats the schema's param description ('MID of the contact to unblock'). No additional semantic context beyond what schema provides.

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

Purpose5/5

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

Clearly states 'Unblocks a previously blocked contact for your LINE account.' Specific verb (unblocks) and resource (contact). Explicitly pairs with block_contact sibling, distinguishing it.

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

Usage Guidelines5/5

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

Explicitly says 'Undoes block_contact.' This directly tells the agent when to use this tool (when you have a blocked contact to unblock) and identifies the related alternative (block_contact).

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

unsend_messageA

Retracts (unsends) one of YOUR OWN LINE messages for everyone — deletes it from the conversation for all participants and CANNOT be undone. LINE allows unsending only your own messages. SAFETY GATE: you must pass confirm: true, or the call refuses so it can never fire by accident. One unsend per call.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be true to proceed. Retraction is irreversible; the call refuses unless this is explicitly true.
messageIdYesLINE message id to retract (must be your own), as returned by get_chat_messages.

TDQS

A4.7/5.0
Behavior5/5

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

Without annotations, the description fully discloses irreversible action, deletion for all participants, requirement for own messages, safety gate (confirm: true), and one unsend per call. Thorough and accurate.

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

Conciseness5/5

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

Three concise sentences, no superfluous words, well-structured with key information upfront.

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?

Covers all essential aspects: action, scope, safety, constraints. No output schema needed for a void action. Complete for its complexity.

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

Parameters4/5

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

Schema already describes both parameters with 100% coverage. Description adds value by specifying that messageId comes from get_chat_messages and explaining the confirm requirement's purpose (irreversibility safety).

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

Purpose5/5

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

Clearly specifies the action (retracts/unsends), the resource (your own LINE messages), and the effect (deletes for all participants). Distinguishes from sibling tools like send_message or react_message.

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

Usage Guidelines4/5

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

Provides clear context: only own messages, one unsend per call. Implicitly tells when to use (to undo a sent message). No explicit alternatives or when-not-to-use, but sibling tools don't have similar functionality, so it's acceptable.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 39 tool updatesv0.4.1
    • Addedaccept_invitation
    • Addedadd_friend
    • Addedcancel_reaction
    • Addedcollect_messages
    • Addedcreate_group
    • Addedexclude_chats
    • Addedfind_contact
    • Addedget_chat_messages
    • Addedget_group_members
    • Addedget_insight
    • Addedget_message_image
    • Addedget_message_media
    • Addedget_scope_policy
    • Addedget_unread_digest
    • Addedinclude_chats
    • Addedinvite_member
    • Addedkick_member
    • Addedleave_group
    • Addedlist_contacts
    • Addedlist_conversations
    • Addedlist_excluded_chats
    • Addedlist_stickers
    • Addedlogin_complete
    • Addedmark_read
    • Addedpreview_sticker
    • Addedreact_message
    • Addedrename_group
    • Addedsearch_messages
    • Addedsearch_stickers
    • Addedsend_audio
    • Addedsend_contact
    • Addedsend_file
    • Addedsend_image
    • Addedsend_location
    • Addedsend_message
    • Addedsend_sticker
    • Addedsend_video
    • Addedunblock_contact
    • Addedunsend_message
  2. 38 tool updatesv0.3.0
    • Removedaccept_invitation
    • Removedadd_friend
    • Removedcancel_reaction
    • Removedcollect_messages
    • Removedcreate_group
    • Removedexclude_chats
    • Removedfind_contact
    • Removedget_chat_messages
    • Removedget_group_members
    • Removedget_message_image
    • Removedget_message_media
    • Removedget_scope_policy
    • Removedget_unread_digest
    • Removedinclude_chats
    • Removedinvite_member
    • Removedkick_member
    • Removedleave_group
    • Removedlist_contacts
    • Removedlist_conversations
    • Removedlist_excluded_chats
    • Removedlist_stickers
    • Removedlogin_complete
    • Removedmark_read
    • Removedpreview_sticker
    • Removedreact_message
    • Removedrename_group
    • Removedsearch_messages
    • Removedsearch_stickers
    • Removedsend_audio
    • Removedsend_contact
    • Removedsend_file
    • Removedsend_image
    • Removedsend_location
    • Removedsend_message
    • Removedsend_sticker
    • Removedsend_video
    • Removedunblock_contact
    • Removedunsend_message
  3. 40 tool updatesv0.2.0
    • First observedaccept_invitation
    • First observedadd_friend
    • First observedblock_contact
    • First observedcancel_reaction
    • First observedcollect_messages
    • First observedcreate_group
    • First observedexclude_chats
    • First observedfind_contact
    • First observedget_chat_messages
    • First observedget_group_members
    • First observedget_message_image
    • First observedget_message_media
    • First observedget_scope_policy
    • First observedget_unread_digest
    • First observedinclude_chats
    • First observedinvite_member
    • First observedkick_member
    • First observedleave_group
    • First observedlist_contacts
    • First observedlist_conversations
    • First observedlist_excluded_chats
    • First observedlist_stickers
    • First observedlogin
    • First observedlogin_complete
    • First observedmark_read
    • First observedpreview_sticker
    • First observedreact_message
    • First observedrename_group
    • First observedsearch_messages
    • First observedsearch_stickers
    • First observedsend_audio
    • First observedsend_contact
    • First observedsend_file
    • First observedsend_image
    • First observedsend_location
    • First observedsend_message
    • First observedsend_sticker
    • First observedsend_video
    • First observedunblock_contact
    • First observedunsend_message

TDQS

A4/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap: get_message_image is a legacy alias of get_message_media, which could cause confusion. Also, collect_messages and search_messages are related but serve different roles (indexing vs querying). Overall, boundaries are clear.

Naming Consistency4/5

Tool names predominantly follow verb_noun pattern (e.g., list_stickers, send_message), but there are minor deviations like login (not login_user) and get_insight (unconventional verb). Overall, consistent enough for an agent to predict patterns.

Tool Count3/5

41 tools is a large surface area, but LINE is a feature-rich platform. Some tools could be consolidated (e.g., send_media variants into a single tool with a type parameter). The count feels slightly excessive for the domain.

Completeness5/5

The tool set covers all major LINE operations: messaging (text, image, video, audio, file, location, contact, sticker), group management (create, rename, invite, kick), contact management, reactions, unsend, search, privacy controls, and login flow. No obvious gaps.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to send messages, manage rich menus, and interact with users through LINE Official Accounts via the LINE Messaging API. Supports both individual messaging and broadcasting to all followers with text and customizable flex messages.
    18
    767
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Integrates the LINE Messaging API with AI agents via the Model Context Protocol, supporting both stdio and SSE transport protocols. It allows agents to send messages, manage rich menus, and retrieve user profile information for LINE Official Accounts.
    10
    767
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI tools to read and send messages through LINE Desktop via MCP, supporting manual or automatic sending without official LINE API tokens.
    59
    111
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RikaiDev/yomi'

If you have feedback or need assistance with the MCP directory API, please join our Discord server