Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ddpie/lark-mcp-on-agentcore --skill lark-contactgit clone --depth 1 https://github.com/ddpie/lark-mcp-on-agentcoreWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/ddpie/lark-mcp-on-agentcore/lark-contact)<a href="https://agentmods.dev/skills/ddpie/lark-mcp-on-agentcore/lark-contact"><img src="https://agentmods.dev/badge/skills/ddpie/lark-mcp-on-agentcore/lark-contact/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/ddpie/lark-mcp-on-agentcore/lark-contact"><img src="https://agentmods.dev/badge/skills/ddpie/lark-mcp-on-agentcore/lark-contact.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00102 | $0.00774 |
| Opus 5 | $0.00051 | $0.00387 |
| Sonnet 5 | $0.00020 | $0.00155 |
| Haiku 4.5 | $0.00010 | $0.00077 |
Grade A, and why
lark-contact scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
contact (v2)
选哪个工具
user 身份和 bot 身份是两条完全独立的路径。MCP server 始终使用 user 身份,按下表选工具:
| 想做什么 | user 身份 | bot 身份 |
|---|---|---|
| 按姓名 / 邮箱搜员工拿 open_id | lark_contact_search_user (参见 lark_get_skill(domain="contact", section="search-user")) |
不支持 |
| 已知 open_id 取他人资料 | lark_contact_search_user(user_ids="<id>") |
⚠️ 需要 bot 身份,MCP server 不可用 |
| 查看自己 | lark_contact_get_user() 或 lark_contact_search_user(user_ids="me") |
不支持 |
| 查同事的个人状态 / 签名 | 通过 lark_invoke 调用 lark_contact_user_profiles_batch_query |
不支持 |
已知 open_id 只是想发消息 / 排日程,不必经过 contact —— 直接用 lark_get_skill(domain="im") / lark_get_skill(domain="calendar")。
典型场景
找张三给他发消息:先搜,确认 open_id,再发:
lark_contact_search_user(query="张三", has_chatted=true)
lark_im_messages_send(user_id="ou_xxx", text="Hi!")
批量查同事的个人状态 / 个性签名(先用 lark_discover 看参数)。
lark_discover(query="contact.user_profiles.batch_query")
lark_invoke(tool_name="lark_contact_user_profiles_batch_query", args={
params: {"user_id_type": "open_id"},
data: {"user_ids": ["ou_xxx", "ou_yyy"], "query_option": {"include_personal_status": true, "include_description": true}}
})
搜索命中多条且后续操作有副作用(发消息、邀请会议等),把候选列给用户挑;不要擅自选第一条。
注意事项
- 41050 / Permission denied 受当前身份的可见范围限制(两条工具都可能遇到)。需要管理员调整可见范围。
- 跨租户用户(
is_cross_tenant=true)多数业务字段为空字符串,这是飞书可见性规则,下游做空值兜底。 - ID 类型:默认
open_id。lark_contact_get_user可用user_id_type="union_id"或"user_id";lark_contact_search_user只接受open_id。
不在本 skill 范围
- 发消息 / 查聊天记录 →
lark_get_skill(domain="im") - 排日程 / 邀请会议 →
lark_get_skill(domain="calendar") - 部门树 / 按部门列员工 / 组织架构 →
lark_get_skill(domain="openapi-explorer")查找原生接口
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 53 lines · 102 tokens per session scan A 6654963db9f3
lark-contact is a skill published in the GitHub repository ddpie/lark-mcp-on-agentcore (8 stars, last pushed 14d ago), licensed MIT. It adds 102 tokens to every session and 774 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
lark-cli
A command-line tool for working with Lark, also called Feishu, a workplace collaboration platform. It covers services such as calendars, meetings, documents, spreadsheets, messaging, tasks, approvals, and shared files.
claude-to-im
Bridge THIS Claude Code or Codex session to Telegram, Discord, Feishu/Lark, QQ, or WeChat so the user can chat with Claude from their phone. Use for: setting up, starting, stopping, or diagnosing the claude-to-im bridge daemon; forwarding Claude replies to a messaging app; any phrase like "claude-to-im", "bridge"…
messages
Retrieve chat message history, send messages, and manage reactions in Lark - get messages from group chats, private chats, threads, send messages to users or chats, and add/list/remove reactions. Use when user asks about chat messages, conversation history, what was discussed in a group, or wants to send a message or…
Read and search emails from Lark Mail via IMAP with local caching. Use when user asks about email, inbox, or messages.
minutes
Access Lark Minutes recordings - get metadata, export transcripts, download audio/video. Use when user asks about meeting recordings, transcripts, or minutes.
anycross-creator
Build, validate, and package AnyCross workflow files (the Lark/Feishu automation platform) — produces an importable .zip via a Python generator script. Covers the real flow.json schema (structure/steps, operation objects, the four spel types), connector/operation IDs harvested from verified exports, LarkBase field…