Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Crawler Summary
LINE messaging integration via Chrome extension gateway. Send/read LINE messages, manage contacts, groups, profile, and reactions. Authenticate with QR code login. Provides HMAC-signed API access through the Chrome extension gateway (line-chrome-gw.line-apps.com). --- name: line-client description: LINE messaging integration via Chrome extension gateway. Send/read LINE messages, manage contacts, groups, profile, and reactions. Authenticate with QR code login. Provides HMAC-signed API access through the Chrome extension gateway (line-chrome-gw.line-apps.com). --- LINE Client Skill Full LINE messaging client via the Chrome extension gateway JSON API. Repo & Files - **Repo:** /da Published capability contract available. No trust telemetry is available yet. 2 GitHub stars reported by the source. Last updated 2/24/2026.
Freshness
Last checked 2/24/2026
Best For
Contract is available with explicit auth and schema references.
Not Ideal For
line-client is not ideal for teams that need stronger public trust telemetry, lower setup complexity, or more explicit contract coverage before production rollout.
Evidence Sources Checked
editorial-content, capability-contract, runtime-metrics, public facts pack
LINE messaging integration via Chrome extension gateway. Send/read LINE messages, manage contacts, groups, profile, and reactions. Authenticate with QR code login. Provides HMAC-signed API access through the Chrome extension gateway (line-chrome-gw.line-apps.com). --- name: line-client description: LINE messaging integration via Chrome extension gateway. Send/read LINE messages, manage contacts, groups, profile, and reactions. Authenticate with QR code login. Provides HMAC-signed API access through the Chrome extension gateway (line-chrome-gw.line-apps.com). --- LINE Client Skill Full LINE messaging client via the Chrome extension gateway JSON API. Repo & Files - **Repo:** /da
Public facts
7
Change events
1
Artifacts
0
Freshness
Feb 24, 2026
Published capability contract available. No trust telemetry is available yet. 2 GitHub stars reported by the source. Last updated 2/24/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Feb 24, 2026
Vendor
2manslkh
Artifacts
0
Benchmarks
0
Last release
Unpublished
Key links, install path, and a quick operational read before the deeper crawl record.
Summary
Published capability contract available. No trust telemetry is available yet. 2 GitHub stars reported by the source. Last updated 2/24/2026.
Setup snapshot
git clone https://github.com/2manslkh/line-api.gitSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Everything public we have scraped or crawled about this agent, grouped by evidence type with provenance.
Vendor
2manslkh
Protocol compatibility
OpenClaw
Auth modes
api_key
Machine-readable schemas
OpenAPI or schema references published
Adoption signal
2 GitHub stars
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Merged public release, docs, artifact, benchmark, pricing, and trust refresh events.
Extracted files, examples, snippets, parameters, dependencies, permissions, and artifact metadata.
Extracted files
0
Examples
5
Snippets
0
Languages
typescript
Parameters
python
import json
from pathlib import Path
from src.chrome_client import LineChromeClient
tokens = json.loads((Path.home() / ".line-client" / "tokens.json").read_text())
client = LineChromeClient(auth_token=tokens["auth_token"])
# Send a message
client.send_message("U...", "Hello!")
# Get profile
profile = client.get_profile()python
from src.hmac import HmacSigner
from src.auth.qr_login import QRLogin
import qrcode
signer = HmacSigner(mode="server")
login = QRLogin(signer)
result = login.run(
on_qr=lambda url: send_qr_image_to_user(qrcode.make(url)),
on_pin=lambda pin: send_pin_to_user_IMMEDIATELY(pin), # TIME SENSITIVE!
on_status=lambda msg: print(msg),
)
# result.auth_token, result.mid, result.refresh_tokenbash
python scripts/qr_login_server.py /tmp/qr.png
python
from src.chrome_client import APIError
try:
client.send_message(mid, "test")
except APIError as e:
print(e.code, e.api_message)
# 10051 = session expired / invalid
# 10052 = HTTP error from backend
# 10102 = invalid argumentstext
User's Phone (LINE app)
↕ (scan QR / enter PIN)
LINE Servers (line-chrome-gw.line-apps.com)
↕ (JSON REST + X-Hmac signing)
LineChromeClient (this repo)
↕ (WASM HMAC via Node.js signer)
lstm.wasm + lstmSandbox.jsFull documentation captured from public sources, including the complete README when available.
Docs source
GITHUB OPENCLEW
Editorial quality
ready
LINE messaging integration via Chrome extension gateway. Send/read LINE messages, manage contacts, groups, profile, and reactions. Authenticate with QR code login. Provides HMAC-signed API access through the Chrome extension gateway (line-chrome-gw.line-apps.com). --- name: line-client description: LINE messaging integration via Chrome extension gateway. Send/read LINE messages, manage contacts, groups, profile, and reactions. Authenticate with QR code login. Provides HMAC-signed API access through the Chrome extension gateway (line-chrome-gw.line-apps.com). --- LINE Client Skill Full LINE messaging client via the Chrome extension gateway JSON API. Repo & Files - **Repo:** /da
Full LINE messaging client via the Chrome extension gateway JSON API.
/data/workspace/line-client (github.com/2manslkh/line-api)src/chrome_client.py → LineChromeClientsrc/auth/qr_login.py → QRLoginsrc/hmac/signer.js (Node.js, auto-starts on port 18944)~/.line-client/tokens.json~/.line-client/sqr_certlstm.wasm + lstmSandbox.js (required, in repo root)import json
from pathlib import Path
from src.chrome_client import LineChromeClient
tokens = json.loads((Path.home() / ".line-client" / "tokens.json").read_text())
client = LineChromeClient(auth_token=tokens["auth_token"])
# Send a message
client.send_message("U...", "Hello!")
# Get profile
profile = client.get_profile()
Tokens expire in ~7 days. If expired (APIError(10051)), re-run QR login.
QR login requires user interaction: scan QR on phone + enter PIN.
from src.hmac import HmacSigner
from src.auth.qr_login import QRLogin
import qrcode
signer = HmacSigner(mode="server")
login = QRLogin(signer)
result = login.run(
on_qr=lambda url: send_qr_image_to_user(qrcode.make(url)),
on_pin=lambda pin: send_pin_to_user_IMMEDIATELY(pin), # TIME SENSITIVE!
on_status=lambda msg: print(msg),
)
# result.auth_token, result.mid, result.refresh_token
Critical: The PIN must reach the user within ~60 seconds. Send it the instant on_pin fires.
createSession → session IDcreateQrCode → callback URL (append ?secret={curve25519_pubkey}&e2eeVersion=1)checkQrCodeVerified — poll until scan (uses X-Line-Session-ID, no origin header)verifyCertificate — MUST be called even if it fails (required state transition!)createPinCode → 6-digit PIN (skip if cert verified in step 4)checkPinCodeVerified — poll until user enters PINqrCodeLoginV2 → JWT token + certificate + refresh tokenpython scripts/qr_login_server.py /tmp/qr.png
Emits JSON events on stdout: {"event": "qr", "path": "...", "url": "..."}, {"event": "pin", "pin": "123456"}, {"event": "done", "mid": "U..."}.
| Method | Args | Description |
|--------|------|-------------|
| get_profile() | — | Get your own profile (displayName, mid, statusMessage, etc.) |
| get_contact(mid) | mid: str | Get a single contact's profile |
| get_contacts(mids) | mids: list[str] | Get multiple contacts |
| get_all_contact_ids() | — | List all friend MIDs |
| find_contact_by_userid(userid) | userid: str | Search by LINE ID |
| find_and_add_contact_by_mid(mid) | mid: str | Add friend by MID |
| find_contacts_by_phone(phones) | phones: list[str] | Search by phone numbers |
| add_friend_by_mid(mid) | mid: str | Add friend (RelationService) |
| get_blocked_contact_ids() | — | List blocked MIDs |
| get_blocked_recommendation_ids() | — | List blocked recommendations |
| block_contact(mid) | mid: str | Block a contact |
| unblock_contact(mid) | mid: str | Unblock a contact |
| block_recommendation(mid) | mid: str | Block a friend suggestion |
| update_contact_setting(mid, flag, value) | mid, flag: int, value: str | Update contact setting (e.g. mute) |
| get_favorite_mids() | — | List favorited contact MIDs |
| get_recommendation_ids() | — | List friend suggestions |
| Method | Args | Description |
|--------|------|-------------|
| send_message(to, text, ...) | to: str, text: str, reply_to: str (opt) | Send a text message. Supports replies via reply_to=message_id |
| unsend_message(message_id) | message_id: str | Unsend/delete a sent message |
| get_recent_messages(chat_id, count=50) | chat_id: str | Get latest messages in a chat |
| get_previous_messages(chat_id, end_seq, count=50) | chat_id, end_seq: int | Paginated history (older messages) |
| get_messages_by_ids(message_ids) | message_ids: list[str] | Fetch specific messages |
| get_message_boxes(count=50) | — | Get chat list with last message (inbox view) |
| get_message_boxes_by_ids(chat_ids) | chat_ids: list[str] | Get specific chats with last message |
| get_message_read_range(chat_ids) | chat_ids: list[str] | Get read receipt info |
| send_chat_checked(chat_id, last_message_id) | chat_id, last_message_id: str | Mark messages as read |
| send_chat_removed(chat_id, last_message_id) | chat_id, last_message_id: str | Remove chat from inbox |
| send_postback(to, postback_data) | to, postback_data: str | Send postback (bot interactions) |
| Method | Args | Description |
|--------|------|-------------|
| get_chats(chat_ids, with_members=True, with_invitees=True) | chat_ids: list[str] | Get chat/group details |
| get_all_chat_mids() | — | List all chat MIDs (groups + invites) |
| create_chat(name, target_mids) | name: str, target_mids: list[str] | Create a new group chat |
| accept_chat_invitation(chat_id) | chat_id: str | Accept group invite |
| reject_chat_invitation(chat_id) | chat_id: str | Reject group invite |
| invite_into_chat(chat_id, mids) | chat_id: str, mids: list[str] | Invite users to group |
| cancel_chat_invitation(chat_id, mids) | chat_id: str, mids: list[str] | Cancel pending invites |
| delete_other_from_chat(chat_id, mids) | chat_id: str, mids: list[str] | Kick members from group |
| leave_chat(chat_id) | chat_id: str | Leave a group chat |
| update_chat(chat_id, updates) | chat_id: str, updates: dict | Update group name/settings |
| set_chat_hidden_status(chat_id, hidden) | chat_id: str, hidden: bool | Archive/unarchive a chat |
| get_rooms(room_ids) | room_ids: list[str] | Get legacy room info |
| invite_into_room(room_id, mids) | room_id: str, mids: list[str] | Invite to legacy room |
| leave_room(room_id) | room_id: str | Leave legacy room |
| Method | Args | Description |
|--------|------|-------------|
| react(message_id, reaction_type) | message_id: str, type: int | React to a message. Types: 2=like, 3=love, 4=laugh, 5=surprised, 6=sad, 7=angry |
| cancel_reaction(message_id) | message_id: str | Remove your reaction |
| Method | Args | Description |
|--------|------|-------------|
| update_profile_attributes(attr, value, meta={}) | attr: int, value: str | Update profile. Attrs: 2=DISPLAY_NAME, 16=STATUS_MESSAGE, 4=PICTURE_STATUS |
| update_status_message(message) | message: str | Shortcut: update status message |
| update_display_name(name) | name: str | Shortcut: update display name |
| get_settings() | — | Get all account settings |
| get_settings_attributes(attr_bitset) | attr_bitset: int | Get specific settings |
| update_settings_attributes(attr_bitset, settings) | attr_bitset: int, settings: dict | Update settings |
| Method | Args | Description |
|--------|------|-------------|
| get_last_op_revision() | — | Get latest operation revision number |
| fetch_ops(count=50) | — | Fetch pending operations (may long-poll) |
| poll() | — | Generator yielding operations as they arrive |
| on_message(handler) | handler: Callable(msg, client) | Start polling thread, calls handler on new messages. Op types: 26=SEND_MESSAGE, 27=RECEIVE_MESSAGE |
| stop() | — | Stop the polling thread |
| Method | Args | Description |
|--------|------|-------------|
| get_server_time() | — | Get LINE server timestamp |
| get_configurations() | — | Get server configurations |
| get_rsa_key_info() | — | Get RSA key for auth |
| issue_channel_token(channel_id) | channel_id: str | Issue channel token (LINE Login/LIFF) |
| get_buddy_detail(mid) | mid: str | Get official account info |
| report_abuse(mid, category=0, reason="") | mid: str | Report a user |
| add_friend_by_mid(mid) | mid: str | Add friend (RelationService) |
| logout() | — | Logout and invalidate token |
LINE identifies entities by MID:
U... or u... → User (toType=0)C... or c... → Group chat (toType=2)R... or r... → Room (toType=1)The client auto-detects toType from the MID prefix when sending messages.
All API calls require X-Hmac header. The WASM signer handles this automatically:
path + body → base64 → X-Hmacfrom src.chrome_client import APIError
try:
client.send_message(mid, "test")
except APIError as e:
print(e.code, e.api_message)
# 10051 = session expired / invalid
# 10052 = HTTP error from backend
# 10102 = invalid arguments
User's Phone (LINE app)
↕ (scan QR / enter PIN)
LINE Servers (line-chrome-gw.line-apps.com)
↕ (JSON REST + X-Hmac signing)
LineChromeClient (this repo)
↕ (WASM HMAC via Node.js signer)
lstm.wasm + lstmSandbox.js
The Chrome Gateway translates JSON ↔ Thrift internally. We never deal with Thrift binary — everything is clean JSON.
Machine endpoints, protocol fit, contract coverage, invocation examples, and guardrails for agent-to-agent use.
Contract coverage
Status
ready
Auth
api_key
Streaming
No
Data region
global
Protocol support
Requires: openclew, lang:typescript
Forbidden: none
Guardrails
Operational confidence: medium
curl -s "https://xpersona.co/api/v1/agents/2manslkh-line-api/snapshot"
curl -s "https://xpersona.co/api/v1/agents/2manslkh-line-api/contract"
curl -s "https://xpersona.co/api/v1/agents/2manslkh-line-api/trust"
Trust and runtime signals, benchmark suites, failure patterns, and practical risk constraints.
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Every public screenshot, visual asset, demo link, and owner-provided destination tied to this agent.
Neighboring agents from the same protocol and source ecosystem for comparison and shortlist building.
Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Rank
70
AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs
Traction
No public download signal
Freshness
Updated 5d ago
Rank
70
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
Traction
No public download signal
Freshness
Updated 6d ago
Rank
70
The Frontend for Agents & Generative UI. React + Angular
Traction
No public download signal
Freshness
Updated 23d ago
Contract JSON
{
"contractStatus": "ready",
"authModes": [
"api_key"
],
"requires": [
"openclew",
"lang:typescript"
],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": "https://github.com/2manslkh/line-api#input",
"outputSchemaRef": "https://github.com/2manslkh/line-api#output",
"dataRegion": "global",
"contractUpdatedAt": "2026-02-24T19:41:27.167Z",
"sourceUpdatedAt": "2026-02-24T19:41:27.167Z",
"freshnessSeconds": 4420080
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/2manslkh-line-api/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/2manslkh-line-api/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/2manslkh-line-api/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/2manslkh-line-api/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/2manslkh-line-api/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/2manslkh-line-api/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "GITHUB_OPENCLEW",
"generatedAt": "2026-04-16T23:29:27.764Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "qr",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "replies",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:qr|supported|profile capability:replies|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "2manslkh",
"href": "https://github.com/2manslkh/line-api",
"sourceUrl": "https://github.com/2manslkh/line-api",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "2 GitHub stars",
"href": "https://github.com/2manslkh/line-api",
"sourceUrl": "https://github.com/2manslkh/line-api",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-02-24T19:43:14.176Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/2manslkh-line-api/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/2manslkh-line-api/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-02-24T19:41:27.167Z",
"isPublic": true
},
{
"factKey": "auth_modes",
"category": "compatibility",
"label": "Auth modes",
"value": "api_key",
"href": "https://xpersona.co/api/v1/agents/2manslkh-line-api/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/2manslkh-line-api/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:41:27.167Z",
"isPublic": true
},
{
"factKey": "schema_refs",
"category": "artifact",
"label": "Machine-readable schemas",
"value": "OpenAPI or schema references published",
"href": "https://github.com/2manslkh/line-api#input",
"sourceUrl": "https://xpersona.co/api/v1/agents/2manslkh-line-api/contract",
"sourceType": "contract",
"confidence": "high",
"observedAt": "2026-02-24T19:41:27.167Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/2manslkh-line-api/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/2manslkh-line-api/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to line-client and adjacent AI workflows.