Lightweight, extensible mobile front-end for Claude Code / Codex. AI coding agent driven from Feishu/Lark, Telegram, or Slack bot with pluggable IM × agent, optional embedded LLM, and MCP tool support.
Postline is a STDIO-only MCP server with 15 tools, most of which lack visible input schemas and detailed descriptions. The MCP adapter tools (mcp_<server>_*) have generic descriptions that do not explain when to use them or what they return. Built-in tools (echo, web_fetch, fs, memory, github, lark_docs, feishu_send, bash_read, bash, skill_<name>) are mentioned only by name and description in the source; no explicit schema definitions are visible in the provided code. Tool names follow verb_noun convention (e.g., web_fetch, bash_read), which is good, but descriptions are minimal (10-50 chars for most) and lack parameter documentation. No output schemas are documented. Error handling guidance is absent. Security concerns: fs, memory, github, feishu_send, and bash are WRITE/DESTRUCTIVE but lack permission gates or confirmation patterns. The skill_<name> tool references external files (~/.claude/skills/<name>/SKILL.md) without validation.
Built-in bash tool. Executes arbitrary shell commands with risk-tier gating.
Built-in bash read-only tool. Executes shell commands in read-only mode.
Built-in tool that echoes back its input. Used for testing and debugging.
Built-in Feishu message sending tool. Sends messages to Feishu/Lark chats.
Built-in filesystem tool. Provides file read/write operations with risk-tier gating.
Built-in GitHub integration tool. Interacts with GitHub API for repository operations.
Built-in Lark/Feishu document tool. Reads and interacts with Lark documents.
No input schemas visible for 11 of 15 tools (echo, web_fetch, fs, memory, github, lark_docs, feishu_send, bash_read, bash, skill_<name>, mcp_<server>_<toolName>). Cannot verify parameter types, constraints, or required fields.
Destructive tools (fs, memory, github, feishu_send, bash) lack permission gates, confirmation patterns, or dry-run support. No error guidance for recovery.
Descriptions for 11 tools are under 50 characters and lack context on WHEN to use them, WHAT they return, or prerequisites. Examples: 'Built-in tool that echoes back its input' (echo), 'Built-in bash tool' (bash).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2026-07-28+ | v2 |
Dynamically adapted MCP tool from external MCP server. Tool name format: mcp_<serverName>_<mcpToolName>. Executes the tool on the remote MCP server and returns text result.
[mcp:<server>] Render one prompt by name. Use mcp_<server>_prompts_list first to discover names and required arguments. Returns a transcript of the rendered messages.
[mcp:<server>] List prompts exposed by the server. Returns name, description, and argument schema. Use mcp_<server>_prompts_get to render one with arguments.
[mcp:<server>] List resources exposed by the server. Returns uri, name, description, mimeType. Use mcp_<server>_resources_read to fetch one.
[mcp:<server>] Read one resource by URI. Use mcp_<server>_resources_list first to discover URIs.
Built-in memory tool with git-backed storage. Persists and retrieves agent memory across sessions.
Claude Code skill tool. Returns instructional content from ~/.claude/skills/<name>/SKILL.md for the model to follow.
Built-in tool for fetching web content with SSRF protection. Retrieves HTTP/HTTPS resources with configurable guards.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does github tool return? IDs? URLs? Metadata?).
skill_<name> tool loads external files from ~/.claude/skills/<name>/SKILL.md without validation or sandboxing. No bounds on file size, content type, or path traversal protection.