Serverless MCP project memory for Feishu/Lark with cited wiki answers. Maintains a small project wiki from immutable source material and answers only from cited wiki evidence.
Document Buddy has 15 well-named tools with consistent verb_noun patterns (create_, get_, list_, upsert_, ingest_, query_, detect_, resolve_). All tools have descriptions (avg ~80 chars, within baseline 34 - 392). Input schemas are present and properly typed with required fields declared. However, parameter descriptions are sparse or missing for many fields (e.g., 'page_key' in read_wiki_page has no description; 'resolution' in resolve_conflict lacks guidance on valid values). Output schemas are not documented, callers cannot predict response structure. Error handling is absent from visible code; no recovery guidance or error categorization. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear read/write semantics. Composition is sound, tools chain well (e.g., list_wiki_pages → read_wiki_page) and avoid duplication (query_project_wiki is correctly aliased to get_cited_context). Security: no visible credential injection, but no audit logging or permission gates either.
Create the standard wiki page set for a project memory.
List unresolved conflicts detected during ingestion.
Return citation-bearing wiki context for a question. This tool does not invent answers.
Return wiki pages as Feishu Docs/Knowledge Base create-or-update tasks.
Return wiki page index, schema, and rules for a project memory.
Return the lightweight wiki schema and maintenance rules for host LLMs.
Ingest text already retrieved from Feishu Docs, chat, files, or another client tool.
Output schemas not documented. Callers cannot predict response structure (e.g., what fields does get_cited_context return? Is it paginated?). LLMs must guess or make wasteful discovery calls.
Parameter descriptions missing or incomplete. 'page_key' in read_wiki_page, 'conflict_id' in resolve_conflict, and 'resolution' in resolve_conflict lack guidance. 'resolution' especially needs enum or format constraints (e.g., 'accepted|rejected|merged').
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools like create_project_memory and upsert_wiki_page are clearly destructive; resolve_conflict is idempotent. Annotations guide agent planning and safety.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Check missing pages, thin pages, and unresolved conflicts.
List project memories in a workspace.
List lightweight review items such as conflicts and thin wiki pages.
List wiki pages for a project memory.
Alias of get_cited_context. Use it before answering any project question.
Read one wiki page from a project memory.
Mark one conflict as resolved after the user confirms the correct version.
Write or replace a wiki page. external_url may point to a Feishu Doc page.
No error handling or recovery guidance in visible code. If a conflict_id is invalid or a workspace_id does not exist, what does the tool return? How should the LLM recover?
No pagination or result limits documented. list_wiki_pages, list_project_memories, and lint_project_wiki may return unbounded results, risking context window exhaustion.