# Send Lark Toolkit to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "lark-toolkit",
    "name": "Lark Toolkit",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Pengxiao-Wang/lark-toolkit",
    "canonicalUrl": "https://clawhub.ai/Pengxiao-Wang/lark-toolkit",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/lark-toolkit",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=lark-toolkit",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "references/api-reference.md",
      "references/bot-setup.md",
      "references/mcp-tools.md",
      "references/permissions.md",
      "references/troubleshooting.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/lark-toolkit"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/lark-toolkit",
    "downloadUrl": "https://openagent3.xyz/downloads/lark-toolkit",
    "agentUrl": "https://openagent3.xyz/skills/lark-toolkit/agent",
    "manifestUrl": "https://openagent3.xyz/skills/lark-toolkit/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/lark-toolkit/agent.md"
  }
}
```
## Documentation

### Prerequisites & Security

This skill is a documentation-only reference guide. It contains no executable code that accesses credentials automatically.

Required credentials (user-provided, never bundled):

Lark App ID (app_id) — from Lark Developer Console
Lark App Secret (app_secret) — from the same console

How credentials are used:

All API examples in SKILL.md use placeholders (<APP_ID>, <APP_SECRET>, CHAT_ID, etc.) — no real secrets
The scripts/get_token.sh helper obtains a temporary tenant_access_token from Lark's auth API. It reads credentials from (in order):

Command-line arguments
LARK_APP_ID / LARK_APP_SECRET environment variables
~/.openclaw/openclaw.json (standard OpenClaw config, path channels.lark.accounts.default.appId/appSecret)


The script prints the config source to stderr when falling back to the config file
No credentials are hardcoded, cached to disk, logged, or transmitted beyond the single Lark auth API call
The token is exported as LARK_TOKEN env var for subsequent commands in the same shell session

### Three Access Paths

NeedPathWhenSend/receive messagesclaw-lark plugin (message tool)Basic text, media, reactions — simplestStructured CRUD opsMCP tools via mcporterBitable, calendar, docs, tasks, OKR — 38 toolsEverything elseDirect API (curl)Contacts, member mgmt, anything MCP doesn't cover

Rule: claw-lark first → MCP second → direct API as fallback.

### Authentication (Direct API)

TOKEN=$(curl -s -X POST 'https://open.larksuite.com/open-apis/auth/v3/tenant_access_token/internal' \\
  -H 'Content-Type: application/json' \\
  -d '{"app_id":"<APP_ID>","app_secret":"<APP_SECRET>"}' \\
  | python3 -c "import sys,json; print(json.load(sys.stdin)['tenant_access_token'])")

Or use the helper: bash scripts/get_token.sh

Token validity: ~2 hours. Cache it.

### API Base URLs

PlatformAPI BaseDev ConsoleLark Internationalhttps://open.larksuite.com/open-apis/https://open.larksuite.com/appFeishu (China)https://open.feishu.cn/open-apis/https://open.feishu.cn/app

⚠️ Lark ≠ Feishu. Always confirm which platform the tenant uses.

### Send a Message

curl -X POST "https://open.larksuite.com/open-apis/im/v1/messages?receive_id_type=chat_id" \\
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \\
  -d '{"receive_id":"CHAT_ID","msg_type":"text","content":"{\\"text\\":\\"hello\\"}"}'

### Reply in Thread

curl -X POST "https://open.larksuite.com/open-apis/im/v1/messages/MSG_ID/reply" \\
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \\
  -d '{"msg_type":"text","content":"{\\"text\\":\\"reply\\"}","reply_in_thread":true}'

### Add Reaction

curl -X POST "https://open.larksuite.com/open-apis/im/v1/messages/MSG_ID/reactions" \\
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \\
  -d '{"reaction_type":{"emoji_type":"THUMBSUP"}}'

Emoji types: THUMBSUP HEART LAUGH OK COOL FINGERHEART SMILE JIAYOU

### List Department Users (MCP gap — direct API only)

# List root departments
curl -s -H "Authorization: Bearer $TOKEN" \\
  'https://open.larksuite.com/open-apis/contact/v3/departments?parent_department_id=0&page_size=50&fetch_child=true'

# List users in a department
curl -s -H "Authorization: Bearer $TOKEN" \\
  'https://open.larksuite.com/open-apis/contact/v3/users?department_id=<DEPT_ID>&page_size=50'

Key fields: name, open_id, employee_type (1=regular, 2=intern), department_ids

### Read Chat History

curl -s -H "Authorization: Bearer $TOKEN" \\
  'https://open.larksuite.com/open-apis/im/v1/messages?container_id_type=chat&container_id=<CHAT_ID>&page_size=20&sort_type=ByCreateTimeDesc'

### Add Bot to Group

curl -X POST "https://open.larksuite.com/open-apis/im/v1/chats/<CHAT_ID>/members?member_id_type=app_id" \\
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \\
  -d '{"id_list":["<BOT_APP_ID>"]}'

### MCP Tools (38 available)

mcporter call lark-mcp.<tool_name> key=value

Full catalog with parameters: references/mcp-tools.md

### MCP Coverage

ModuleKey ToolsBitablecreate apps/tables, CRUD records, list fieldsCalendarcreate/get/patch events, free/busy, primary calendarDocsread content, search, import, set permissionsIMcreate/list groups, get members, send messages, list historyOKRbatch get, list periods, CRUD progress, query reviewsReportquery rules/tasks, manage viewsTaskcreate/patch tasks, add members/remindersWikisearch nodes, get node detailsContactsbatch get user IDs by email/phone

### MCP Gaps (use direct API)

List users by department — GET /contact/v3/users?department_id=
List departments — GET /contact/v3/departments
Add/remove group members — POST /im/v1/chats/{chat_id}/members
Send reactions — POST /im/v1/messages/{msg_id}/reactions
Upload images/files — POST /im/v1/images / POST /im/v1/files

### Pagination

Most list APIs use cursor-based pagination:

?page_size=50&page_token=<token_from_previous_response>

Check has_more in response.

### Error Handling

CodeMeaning0Success99991663Token expired — refresh99991664Token invalid99991400Bad request99991403No permission — check app permissions

### Critical Pitfalls

Lark ≠ Feishu — International uses open.larksuite.com, China uses open.feishu.cn
open_id is per-app — Same user has different open_id across different Lark apps
Webhook 5s timeout — Return 200 immediately, process async
Event dedup — Use event_id (Lark retries up to 3x)
Bot-to-bot blind spot — Lark does NOT push Bot A's messages to Bot B's webhook
Publishing required — Permission/event changes only take effect after publishing a new app version
ngrok IPv6 trap — Use 127.0.0.1:PORT not localhost:PORT in ngrok config
ngrok free domain — Returns interstitial HTML that Lark rejects. Use paid domain.

### Detailed References

Bot setup playbook: references/bot-setup.md
API reference: references/api-reference.md
MCP tools catalog: references/mcp-tools.md
Webhook & tunnel: references/webhook-setup.md
Troubleshooting: references/troubleshooting.md
Permissions: references/permissions.md
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: Pengxiao-Wang
- Version: 1.0.0
## Source health
- Status: healthy
- Source download looks usable.
- Yavira can redirect you to the upstream package for this source.
- Health scope: source
- Reason: direct_download_ok
- Checked at: 2026-04-30T16:55:25.780Z
- Expires at: 2026-05-07T16:55:25.780Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/lark-toolkit)
- [Send to Agent page](https://openagent3.xyz/skills/lark-toolkit/agent)
- [JSON manifest](https://openagent3.xyz/skills/lark-toolkit/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/lark-toolkit/agent.md)
- [Download page](https://openagent3.xyz/downloads/lark-toolkit)