Backend API server for Plan_A application with tool execution, chat management, and agent support
This MCP server exposes 8 tools for web search, content extraction, and note management. Tool definitions are present with schemas and descriptions, but quality is inconsistent. Naming follows verb_noun conventions (tavily_search, serper_scrape, note_reader, note_editor). Descriptions range from adequate (serper_search: 219 chars) to comprehensive (note_editor: 598 chars with streaming guidance). However, parameter descriptions are present but sometimes generic, and output schemas are not documented. Error handling is minimal, no recovery guidance or categorization visible in the tool definitions. The Chinese-language descriptions are clear but suggest a regional-specific tool design. Most concerning: no visible input validation, no pagination documentation for potentially large result sets (e.g., tavily_search, serper_search), and note_editor accepts many mutually exclusive parameters without explicit documentation of dependencies.
在执行搜索或者类似任务时应该先获取当前时间。获取当前时间信息。默认获取北京时间(UTC+8),也可以获取其他时区的时间。支持多种时间格式输出。
编辑用户的笔记内容。支持多种编辑操作:完全替换、追加内容、前置内容、插入内容、替换指定行、替换指定文本等。在侧边栏聊天中会自动编辑当前关联的笔记。 🔥 流式编辑建议:当需要写入较长内容(如诗歌、文章)时,建议采用流式编辑方式: 1. 首次调用:写入标题和开头部分 2. 后续调用:使用append模式逐段添加内容 3. 每次调用间可以解释创作思路,让用户感受创作过程 4. 每次调用控制在2-4行内容,避免一次性写入过多内容 这样能让用户看到内容逐渐生成的过程,提供更好的交互体验。
阅读用户的笔记内容。在侧边栏聊天中,会自动读取当前关联的笔记;在其他情况下,建议明确指定要读取的笔记。支持通过笔记ID或标题搜索笔记,并可指定阅读的行数范围。
搜索最新新闻信息,返回新闻标题、摘要和链接。如需获取新闻的完整内容,请使用serper_scrape工具解析具体的新闻链接。
解析网页内容获取详细信息。当搜索结果中有感兴趣的链接时,使用此工具获取网页的完整内容、正文、标题等详细信息。特别适用于需要深入了解某个网页内容的场景。
通过Google搜索引擎查询信息,获取搜索结果列表。返回的结果包含标题、摘要和链接。如需获取某个链接的详细内容,请使用serper_scrape工具进一步解析。
Output schemas not documented for any tool. LLMs cannot plan downstream calls without knowing what fields to expect. tavily_search, tavily_extract, serper_search, serper_news, and serper_scrape are particularly critical for web search workflows.
Pagination not documented for search tools. tavily_search, serper_search, and serper_news accept max_results but do not document whether pagination (page/offset/cursor) is supported, total counts are returned, or results are capped. Large result sets risk context window exhaustion.
note_editor has 10 parameters with complex interdependencies (edit_type enum determines which other params are valid). These dependencies are not explicitly documented in parameter descriptions, forcing LLMs to infer which parameter combinations are valid. This violates the mutually-exclusive parameter pattern.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | C | 64 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 56 | - | v1 |
从指定URL提取网页内容
通过Tavily搜索引擎查询信息
No error handling guidance visible in tool definitions. Tools do not document what errors can occur, whether they are retryable, or what the LLM should do if a call fails. E.g., serper_scrape may fail on invalid URLs, note_reader may fail if a note doesn't exist, but no recovery paths are specified.
note_editor is a WRITE tool but lacks confirmation/dry-run semantics. The 'save_immediately' parameter defaults to false (preview mode), but the tool definition does not explain what 'preview' means or how to confirm writes. Agents may inadvertently modify notes without explicit user approval.
serper_search and serper_news have hardcoded defaults for 'gl' (country: 'cn') and 'hl' (language: 'zh-cn'). While appropriate for a China-focused app, the tool definitions do not explain what these parameters control or why they default to China. LLMs in non-CN deployments may be confused.
note_reader and note_editor both accept 'note_id' and 'search_title' parameters as optional, but the descriptions state 'can be not provided' in sidebar chats. This context-dependent behavior is not explicit in the tool definitions and will confuse LLMs operating outside of sidebar context.
get_time 'format' parameter enum includes 'relative' option but no description of what 'relative' output looks like. LLMs cannot predict whether '1 hour ago' or 'T+1h' or another format will be returned.