Skip to main content
Glama
RikaiDev

yomi

Official
by RikaiDev

Yomi (読み) — 개인용 LINE MCP 서버

Yomi는 개인 계정을 위한 오픈소스 LINE MCP 서버입니다. 브라우저, 봇 계정, LINE 공식 클라이언트 없이도 Claude나 로컬 AI 에이전트에서 모든 대화를 읽고, 답장하고, 이미지를 보내고, 검색할 수 있습니다.

이 이름은 여러 가지로 읽힙니다. 読み(요미) — 읽기: 메시지를 파싱하는 것만이 아니라, 당신이 하듯 상황을 읽는 것. 詠み(요미) — 읊다: 조용히 읽기만 하지 않고, 당신에게 다시 읽어 들려줍니다. 그리고 黄泉(요미) — 닿을 수 없는 저승; 黄泉帰り(요미가에리), "요미에서 돌아오다"의 바로 그 요미. 두 세계 사이를 오가는 전령처럼, 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도, 봇 계정도, 웹훅도 없습니다. Yomi는 당신 계정의 보조 기기로 로그인합니다.

가이드: LINE MCP 서버란 무엇인가요? · LINE MCP 是什麼?Yomi、官方 Bot 與桌面自動化的差異.

license runtime protocol npm

비공식. Yomi는 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.jsonengines.node입니다. Yomi의 나머지 기능은 이전 Node에서도 실행되지만, 검색, 범위, 캡처는 그렇지 않습니다.

⚠️ Yomi는 사용자 자신의 머신에서 실행하는 클라이언트가 필요합니다. 클라우드 전용 도구(ChatGPT, Claude.ai 웹)는 Yomi를 실행할 수 없습니다. Claude Desktop 또는 Claude Code에서 Yomi를 구성하면 채팅과 Cowork 모두에서 작동합니다. Desktop은 사용자 머신에서 Yomi를 시작하고 Cowork의 로컬 세션이 이를 로드하기 때문입니다. Cowork에게 Yomi를 설치하라고 요청하지 마세요: Cowork의 셸은 사용자 머신이 아닌 일회용 VM 내부에서 실행되므로, 거기에 설치된 것은 세션이 끝나면 사라집니다. 아래 단계를 직접, 자신의 터미널에서 따르세요.

실제로 사용하는 클라이언트를 선택하고 해당 섹션만 따르세요. 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의 셸은 사용자 머신이 아닌 일회용 VM 내부에서 실행되며, 실제 터미널에 입력하지 않습니다. 위의 세 번의 클릭으로 번들을 직접 설치하세요. 설치되면 Cowork의 로컬 세션에서 다른 도구처럼 Yomi를 사용할 수 있습니다.

  1. npx의 전체 경로를 찾으세요:

macOS / Linux: which npx
Windows:       where npx
  1. 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에는 해당되지 않습니다.)

  1. mcpServers 아래에 Yomi를 추가하고, 예시 command를 1단계에서 출력된 전체 경로로 바꾸세요. Windows에서는 JSON에서 경로의 각 \\\로 작성해야 합니다:

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

예를 들어 Windows 경로는 "C:\\Program Files\\nodejs\\npx.cmd"처럼 보일 수 있습니다. 두 예시를 맹목적으로 복사하지 말고 자신의 머신에서 보고된 경로를 사용하세요.

⚠️ 여기에 지정한 npx가 Yomi를 실행할 Node를 결정하지 않습니다. macOS와 Linux에서 npx#!/usr/bin/env node로 시작하는 스크립트이므로, 방금 가리킨 npx 옆에 설치된 Node가 아니라 Claude Desktop의 PATH에서 가장 먼저 오는 node로 실행됩니다. Desktop은 데스크톱 세션에서 PATH를 상속받는데, 이는 종종 터미널의 것과 다르며, 버전 관리자(nvm, fnm, asdf, volta 등)는 자신의 node를 다른 모든 것보다 앞에 둡니다. 따라서 which npx가 완벽하게 최신 설치를 보고해도 Yomi는 여전히 이전 Node에서 시작될 수 있습니다.

증상은 구체적입니다: 로그인, 읽기, 보내기는 모두 작동하지만 검색, 범위, 캡처가 실패하고 로그에 No such built-in module: node:sqlite라고 표시됩니다. Yomi는 해당 오류에서 실제로 사용된 런타임을 출력합니다 — 추측하지 말고 읽어보세요.

해결책은 서버에 첫 번째 항목이 지원되는 node를 보유한 PATH를 제공하는 것입니다:

"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 구성은 이제 손으로 작성하기보다 대부분 에이전트가 작성하므로, 위 단계는 자신의 머신을 읽는 사람을 위해 설명된 것입니다. 에이전트는 자리 표시자를 출력하는 대신 값을 확인해야 하며, 이 설정에는 명확히 언급할 가치가 있는 함정이 하나 있습니다: commandnpx를 지정하는 것은 런타임을 고정하지 않습니다. 절차:

  1. Yomi의 인덱스가 실제로 필요로 하는 모듈을 가진 Node를 찾으세요 — 버전 번호로 추론하지 마세요:

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

    오류가 발생하면 해당 Node는 검색/범위/캡처에 사용할 수 없습니다. 다른 설치(which -a node, nvm ls, fnm list, …)를 시도하여 통과하는 것을 찾을 때까지 계속하세요. 그 후에만 계속 진행하세요.

  2. 위 JSON에 따라 해당 Node의 디렉터리env.PATH에 쓰고, 그 뒤에 기본 PATH를 유지하세요. 대상 머신에서 디렉터리를 확인하세요(1단계 경로의 dirname). 이 README의 예시를 복사하지 마세요 — Apple Silicon Homebrew 경로이며 거의 모든 곳에서 틀립니다.

    대신 command에 절대 경로 node를 넣지 마세요. 더 강력한 수정처럼 보이지만 그렇지 않습니다: npx는 패키지의 bin을 자식 프로세스로 실행하고 그 자식에 대해 PATH에서 node를 다시 해석하므로, command는 누가 npx를 실행할지만 결정합니다. 이는 추측이 아니라 측정된 결과입니다 — PATH의 첫 번째가 Node 20일 때, command 고정으로도 서버에 Node 20이 전달되었습니다.

    command -v는 실제 바이너리 대신 래퍼를 반환할 수도 있습니다 — 힙 셰임, 로컬 우선 npx 래퍼, 버전 관리자 스텁이 모두 흔하며, 일부는 클라이언트의 작업 디렉터리에 따라 다르게 동작합니다. "진짜" 바이너리를 추론하려 하지 마세요. 3단계가 해결합니다.

  3. 인덱스에 접근하는 도구로 검증하세요. yomi version은 검증이 아닙니다 — SQLite를 열지 않고 문자열을 출력하므로 검색을 실행할 수 없는 Node에서도 성공합니다. get_scope_policy를 호출하세요: SQLite가 필요하며 LINE 로그인이 필요 없습니다. 정책 텍스트를 반환하면 런타임이 올바른 것입니다. 실패하면 오류가 실제로 실행된 Node와 필요한 것을 알려줍니다.

  4. Claude Desktop을 완전히 종료하고 다시 엽니다. 다른 것보다 먼저 Settings → Developer에서 Yomi가 로드되었는지 확인하세요: Yomi가 목록에 없으면 Claude가 구성을 읽지 않은 것입니다 — Windows에서는 2단계의 MSIX 경고를 참조하세요. 목록에 표시되면 도구는 채팅과 Cowork의 로컬 세션 모두에서 사용할 수 있습니다.

이 설정에 Claude Code를 설치할 필요는 없습니다.

claude mcp add yomi -- npx @rikaidev/yomi

claude 세션을 시작하세요. Yomi 도구가 자동으로 나타나야 합니다. 이 명령은 Claude Code만 구성합니다. Claude Desktop은 구성하지 않습니다.

이 형식은 런타임을 PATH에 맡깁니다. claude 세션이 해석하는 node가 지원되는 버전이라면 괜찮습니다 — Claude Desktop과 달리 볼 수 있는 것과 같은 PATH입니다. node -e 'require("node:sqlite")'로 확인하세요. 오류가 발생하거나 PATH에 의존하고 싶지 않다면 Node를 명시적으로 지정하세요:

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

어느 쪽이든 yomi version 대신 get_scope_policy로 검증하세요: 버전 명령은 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야."

휴대폰에서 기기를 승인하고(Logging in 참조), 다음을 말하세요:

"읽지 않은 LINE을 요약하고 누가 답장을 기다리고 있는지 알려줘."


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

할 수 있는 일

Yomi는 MCP를 통해 20개의 도구를 제공합니다(이름을 붙일 가치가 있는 것들; 표 참조). 큰 읽기 결과는 토큰 효율적인 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의 약 ¼ 토큰.

쓰기 (실제로 전송 — 초안 아님)

도구

기능

send_message

지금 E2EE 텍스트 메시지를 전송(1:1은 쌍 키, 그룹/룸은 그룹 키). 선택적 mentions는 LINE이 강조하고 알림을 보내는 실제 @멘션을 첨부. 생략하면 리터럴 @name은 아무도 알리지 않는 텍스트일 뿐. 호출당 한 번 전송, 재시도 없음.

send_image

암호화, LINE OBS에 업로드, 지금 E2EE 이미지를 전송. 1:1, 그룹, 룸 모두 작동. 호출당 한 번 전송. 키를 확인할 수 없거나 업로드가 거부되면 정직한 실패.

mark_read

상대방이 볼 수 있는 읽음 확인을 전송. 명시적일 때만 — 메시지 읽기 및 백그라운드 캡처는 아무것도 읽음으로 표시하지 않음.

검색 (로컬, 대화 간 — LINE에는 그러한 기본 기능이 없음)

도구

기능

search_messages

모든 인덱싱된 대화에 대한 하이브리드 검색. 최초 사용 시 자동 수집하고, 채팅 전반에 걸쳐 결과를 다양화하며, 각 검색 결과 주변의 작은 컨텍스트 창을 반환합니다. 아무것도 숨겨지지 않도록 mode(hybrid/semantic/keyword)를 반환합니다.

collect_messages

로컬 DB에 명시적으로 대량 인덱싱하고 의미 검색을 위해 임베딩합니다. 대량 가져오기가 허용된 유일한 도구이며, 호출당 한 번만 실행되고 타이머로 실행되지 않습니다.

범위 및 개인정보 보호(모든 작업은 오프라인으로 수행되며 LINE 세션 불필요)

도구

기능

exclude_chats

대화를 차단 목록에 추가하고 이미 인덱싱된 데이터를 삭제합니다. 단순히 향후 캡처만 막는 것이 아닙니다. 이전 데이터를 인덱스에 남겨두는 차단 목록은 가짜 개인정보 보호일 뿐입니다.

include_chats

대화를 다시 허용합니다(삭제된 데이터는 복원하지 않음).

list_excluded_chats / get_scope_policy

차단 목록 / 전체 개인정보 보호 정책을 표시합니다(PRIVACY.md에서 읽음).

세션

도구

기능

login / login_complete

비밀번호 없는 보조 기기 로그인. 아래 참조. login은 기존 세션 없이 호출할 수 있는 유일한 도구입니다.


로그인

전제 조건: 기본 휴대폰에서 設定 › 我的帳號 › 允許自其他裝置登入 (설정 › 내 계정 › 다른 기기에서 로그인 허용)을 활성화하세요. 이 설정이 없으면 LINE은 이 기기에 로그인 프롬프트를 제공하지 않습니다. 이는 첫 로그인이 멈춘 것처럼 보이는 가장 흔한 원인입니다.

⚠️ 데스크톱 세션 1개 제한: LINE은 계정당 데스크톱 클라이언트 세션을 하나만 허용합니다. Yomi는 데스크톱 보조 기기(DESKTOPMAC)로 연결되므로, Yomi에 로그인하면 공식 LINE 데스크톱 앱이 로그아웃됩니다(그리고 LINE 데스크톱에 다시 로그인하면 Yomi의 세션이 무효화됩니다). Yomi와 공식 LINE 데스크톱 클라이언트를 동시에 사용할 수 없습니다.

에이전트에게 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은 PIN을 포함한 전체 흐름을 stdout에서 실행합니다. 항상 대체 수단으로 사용할 수 있습니다.

중요한 마감은 LINE의 것입니다: PIN이 표시된 시점부터 입력하고 기기를 승인하는 데 약 3분이 주어집니다. 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 파일로 대체합니다. 기능은 하지만 OS 비밀 저장소보다 보호 수준이 낮고 macOS 경로보다 덜 검증되었습니다. 네이티브 보안 저장소 백엔드(libsecret / DPAPI)가 계획되어 있습니다. 그때까지는 비-macOS 설치를 그에 맞게 취급하세요.

login과 오프라인 범위/검색 도구를 제외한 모든 도구는 세션이 없을 때 정직한 오류를 반환합니다. Yomi는 그 외에는 순수한 쿼리 서버입니다. 폴링하지 않고 백그라운드에서 백필하지 않으며, 각 도구 호출은 필요한 LINE 요청만 정확히 수행하고 collect_messages만 여러 채팅을 한 번에 가져오는 유일한 경로입니다.


검색

LINE에는 대화 간 검색이 없습니다. Yomi는 로컬에 검색 기능을 구축합니다. 인덱스는 저장소의 gitignore된 SQLite 데이터베이스(data/search-index.db)입니다. 어떤 것도 기기를 떠나지 않습니다.

검색은 설계상 하이브리드입니다. 항상 FTS5 키워드 검색(단어 경계가 없는 CJK 하위 문자열도 포함하도록 bigram 전처리된 텍스트에 대한 bm25)을 실행하고, 임베딩이 존재할 때 의미 검색을 실행한 다음 Reciprocal Rank Fusion으로 두 순위 목록을 융합합니다. 순수 의미 검색은 임베딩되지 않은 메시지에 있는 정확한 일치 항목을 조용히 놓치고, 순수 키워드는 의역을 놓칩니다. 둘을 융합하면 정확한 용어와 의미 일치가 함께 표시됩니다. 응답의 mode 필드는 항상 어떤 방법이 기여했는지 보고합니다.

의미 순위는 각 메시지를 자체 벡터로 유지합니다. 실제 인덱싱된 LINE 대화에 대한 테스트에서 겹치는 대화 창을 임베딩하면 중심 메시지가 희석되고 검색 품질이 저하되는 것을 발견했습니다. 따라서 컨텍스트는 순위가 매겨진 후에만 추가됩니다. Yomi는 한 채팅이 상위 결과를 도배하지 못하도록 제한하고 각 우승 메시지의 양쪽에 두 개의 메시지를 확장하여 에이전트가 검색 결과에 의미를 부여한 대화를 볼 수 있게 하면서도 임베딩 자체는 약화시키지 않습니다.

의미 순위는 transformers.js를 통해 Xenova/bge-small-zh-v1.5(BAAI 범용 임베딩, 소형, 중국어 우선이지만 다국어)를 사용합니다. 임베딩 추론은 완전히 프로세스 내 CPU에서 실행됩니다. 메시지 텍스트가 외부로 전송되지 않습니다.

유일한 주의 사항은 일회성 모델 다운로드입니다. 첫 collect_messages 또는 search_messages에서 transformers.js가 **huggingface.co**에서 모델(~90MB)을 가져와 로컬에 캐시합니다. 이후 모든 실행은 완전히 오프라인입니다. 이 첫 번째 가져오기는 모델 가중치에 대한 HuggingFace로의 아웃바운드 HTTPS 요청입니다. IP 주소와 어떤 모델이 다운로드되는지가 전달되지만 메시지 내용이나 LINE 데이터는 포함되지 않습니다. Yomi를 완전히 에어갭 환경에서 사용해야 한다면 첫 검색 전에 transformers.js 캐시를 미리 채우거나 (또는 로컬 모델 디렉터리를 가리키도록) 설정하여 네트워크 호출이 전혀 발생하지 않도록 하세요.


보조 기기의 현실( "이전 메시지를 가져올 수 없다"는 말을 믿기 전에 읽으세요)

Yomi는 계정의 보조 기기로 실행됩니다. 이는 Yomi가 볼 수 있는 범위를 결정합니다:

  • Letter Sealing이 없는 그룹 채팅은 LINE 서버에서 평문입니다 — 전체 기록 및 미디어, 제한 없음.

  • Letter Sealing이 있는 그룹 채팅은 E2EE이며, 여기서 epoch가 중요합니다. 이러한 그룹은 공유 그룹 키로 암호화되며(멤버십 변경 시 또는 클라이언트가 새 키를 프로비저닝할 때) 회전합니다. LINE은 기기에 현재 그룹 키만 제공합니다. 대체된 키를 가져오는 API는 없습니다. 따라서 보조 기기는 보유한 키의 epoch부터 메시지를 해독합니다. Yomi가 현재 키를 얻기 전의 이전 epoch에서 보낸 메시지는 해독 불가능하게 반환될 수 있습니다. 이전 기록을 읽을 수 있는 그룹에서도 마찬가지입니다. 이는 Letter Sealing의 epoch별 그룹 키에 내재된 특성이며 여기의 버그가 아닙니다. 또한 측면으로도 작용할 수 있습니다. 휴대폰이 보유한 epoch와 Yomi가 보유한 epoch가 같을 필요는 없으므로 두 기기가 동일한 그룹의 서로 다른 조각을 각각 읽을 수 있습니다.

  • Yomi 설치 자체는 아무것도 회전시키지 않으므로 "Yomi 설치 전"은 잘못된 경계입니다. Yomi는 기존 그룹 키를 해석만 하며 새 키를 등록(생성)하지 않습니다. 생성은 그룹의 공유 비밀을 모든 멤버에 대해 회전시키고 이전 키로 암호화된 모든 메시지를 읽을 수 없게 만들기 때문입니다. 따라서 새 설치 시 현재 키를 가져와 마지막 회전 시점까지 읽습니다. 이는 설치보다 수 개월 전일 수 있습니다. 경계는 설치 날짜가 아니라 마지막 재키 변경입니다. 그리고 Yomi가 epoch를 보면 해당 키를 유지하므로 설치 회전이 발생해도 양쪽을 모두 읽을 수 있습니다. 그룹이 오늘까지 전부 해독 불가능하게 반환된다면 이는 이 제한이 아닙니다. 보고해 주세요.

  • 1:1 미디어는 계정 수준 E2EE 키체인을 사용하며, 보조 기기가 완전히 보유합니다 (LINE이 페어링 중에 동기화). Yomi는 볼 수 있는 1:1 이미지/파일을 해독할 수 있습니다.

  • **1:1 기록 백필이 유일한 실제 제한입니다.** LINE은 그룹의 경우처럼 보조 기기에 과거 1:1 메시지 기록을 제공하지 않습니다. Yomi가 연결된 동안 수신된 메시지는 정상적으로 해독되지만, 페어링 이전의 1:1 기록을 깊이 스크롤하면 비어 있을 수 있습니다. 이는 LINE 서버 측 제한이며 여기의 버그가 아닙니다.

해독이 실제로 실패하면 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가 사람을 위해 작성하는 모든 것은 stderr로 출력됩니다. stdout은 MCP JSON-RPC 스트림 전용입니다. 잘못된 console.log는 프로토콜을 손상시킵니다. 서버가 도달할 수 있는 경로에는 추가하지 마세요.


개인정보 보호

기본적으로 Yomi는 모든 대화를 로컬 온디바이스 검색 인덱스에 색인하여 에이전트가 대화 전체를 검색할 수 있게 합니다 — 기본값은 전체 수집이며, 채팅별로 제외할 수 있습니다. 어떤 데이터도 업로드되지 않습니다. 기기를 떠나는 유일한 데이터는 에이전트가 답변에서 직접 노출하는 내용뿐입니다. (Yomi 자체가 수행하는 유일한 비-LINE 네트워크 호출은 첫 검색 시 HuggingFace에서 임베딩 모델을 일회성으로 다운로드하는 것입니다 — 모델 가중치만 들어오고 메시지 내용은 나가지 않습니다. 검색 참조.) PRIVACY.md가 표준 정책이며, Yomi는 연결 시(그리고 get_scope_policy를 통해) 에이전트에게 동일한 텍스트를 제공하여 대량 읽기 전에 기본값을 공개할 수 있게 합니다.


고지 사항

Yomi는 독립적이고 비공식적인 개인 프로젝트로, 학습과 자신의 LINE 계정 접근을 위해 만들어졌습니다. LINE Corporation과 제휴, 승인, 보증 관계가 없습니다. "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