futures-kb
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@futures-kbget daily report context for caustic soda, PVC, coking coal"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Futures AI KB
一个面向 OpenClaw 的期货数据与往期报告 MCP 服务。 将烧碱、PVC、焦煤行情、手工数据、资讯和报告保存在模型上下文之外,由 AI 按需调用。
当前版本:v0.2.0 MVP
适用品种:烧碱 SH、PVC V、焦煤 JM
为什么需要它
让 OpenClaw 每天生成期货报告时,如果直接读取完整数据库、爬虫结果和往期报告,会导致:
上下文持续膨胀。
token 成本随天数增长。
旧数据污染当天分析。
模型自行计算指标,容易出现口径错误。
Futures AI KB 把这些数据放在独立服务中,只向 OpenClaw 返回当前任务所需的最小数据包。
Related MCP server: NanoSearchMCP
核心特性
SQLite 行情、手工指标、资讯、爬虫运行记录和往期报告存储。
FuturesIntelTool SQLite 和日报目录只读兼容。
烧碱、PVC、焦煤日线特征计算。
MA5、MA20、1/5 日涨跌、持仓变化、成交量 Z-Score、基差和异常标记。
MCP stdio 与 Streamable HTTP。
FastAPI 数据导入和查询接口。
受控爬虫执行,只允许本地白名单命令。
往期报告持久化,但普通日报不自动读取。
AI 通过
report_list和report_read按需查询历史。OpenClaw Skill 和 Automation 接入示例。
单元测试、API 测试和真实 MCP stdio 集成测试。
架构
flowchart LR
C[Crawler] --> API[FastAPI Service]
M[Manual Data] --> API
R[Research Notes] --> API
API --> DB[(SQLite)]
DB --> F[Feature Engine]
DB --> PR[(Past Reports)]
F --> MCP[MCP Server]
PR --> MCP
MCP --> OC[OpenClaw]
SK[OpenClaw Skill] --> OC
OC --> OUT[Daily Report]
OUT --> PR设计原则:
原始行情、爬虫结果、新闻全文不进入模型上下文。
所有指标由确定性代码计算。
MCP 返回短字段、短摘要和引用。
每份日报使用独立会话。
往期报告只在模型明确调用时加载。
报告保存后,不自动拼接到下一次日报。
MCP 工具
工具 | 作用 | 默认是否进入上下文 |
| 返回当天精简日报数据包 | 是,报告任务调用后 |
| 提交现货、库存、开工率等结构化数据 | 只返回接收数量 |
| 运行本地白名单爬虫 | 只返回运行状态 |
| 检索新闻、公告和研报摘要 | 最多三条短摘要 |
| 保存完整往期报告 | 不返回正文 |
| 返回往期报告目录和摘要 | 只在 AI 调用时 |
| 按 token 预算读取指定报告 | 只在 AI 调用时 |
快速开始
环境要求
Python 3.12+
OpenClaw,可选;只使用 HTTP API 时不需要
安装和测试
git clone <your-repository-url>
cd futures-ai-kb
uv sync --extra dev
uv run pytest生成本地演示数据
uv run futures-kb-seed --date 2026-09-19 --days 60启动 HTTP API
uv run futures-kb-api默认地址:http://127.0.0.1:8787
启动 MCP Server
stdio:
uv run futures-kb-mcpStreamable HTTP:
uv run futures-kb-mcp --transport streamable-http --host 127.0.0.1 --port 8790接入 OpenClaw
先复制爬虫配置模板:
Copy-Item config\crawlers.example.json config\crawlers.local.json注册 stdio MCP:
$repo = (Resolve-Path .).Path
$python = Join-Path $repo ".venv\Scripts\python.exe"
openclaw mcp add futures-kb `
--command $python `
--arg '-m' `
--arg 'futures_kb.mcp_server' `
--cwd $repo `
--include 'daily_report_context,manual_data_submit,market_run_crawler,research_search,report_save,report_list,report_read'
openclaw mcp doctor futures-kb --probe安装 Skill:
skills/futures-daily-report/SKILL.md将整个 skills/futures-daily-report 目录放到 OpenClaw 的 workspace skill 根目录。
完整说明见 OpenClaw 接入文档。
日报和往期报告流程
1. OpenClaw 调用 daily_report_context
2. OpenClaw 生成日报
3. OpenClaw 调用 report_save
4. 完整报告写入 SQLite
5. 日报会话结束并归档
用户以后询问历史:
6. OpenClaw 调用 report_list
7. 选择 report_id
8. OpenClaw 调用 report_read
9. 根据 next_offset 决定是否需要继续读取daily_report_context 不返回往期报告正文。
只有 report_read 会按需返回指定报告,默认单次最多 2,000 token。
HTTP API
行情
POST /api/v1/market/bars手工数据
POST /api/v1/manual-data资讯
POST /api/v1/research爬虫
POST /api/v1/crawlers/{source}/run?trade_date=2026-09-19日报数据包
GET /api/v1/report-context?trade_date=2026-09-19&symbols=SH,V,JM往期报告
POST /api/v1/reports
GET /api/v1/reports
GET /api/v1/reports/{report_id}配置
环境变量 | 默认值 | 说明 |
|
| SQLite 数据库路径 |
|
| 爬虫白名单配置 |
|
| 爬虫原始输出目录 |
| 空 | 设置后 HTTP 写接口和报告接口要求 |
|
| API 监听地址 |
|
| API 监听端口 |
安全说明
默认仅监听
127.0.0.1。不要把无认证 API 暴露到公网。
爬虫命令来自本地受信任配置,OpenClaw 不能提交任意命令。
不建议让模型直接执行数据库 SQL 或任意文件路径。
不要把真实 Cookie、API Key 和交易账户凭据提交到 Git。
本项目的分析输出不构成投资建议。
更多信息见 SECURITY.md。
测试
uv run pytest当前测试覆盖:
行情和手工数据幂等写入。
指标和日报数据包。
FastAPI 接口。
爬虫白名单和标准输出导入。
MCP 工具发现和调用。
真实 MCP stdio 子进程连接。
往期报告保存、列表、按需读取和 token 截断。
日报上下文不自动包含往期报告。
项目结构
src/futures_kb/ 核心服务、存储、指标、API、MCP
skills/ OpenClaw Skill
config/ 爬虫配置模板
docs/ 架构、流程和接入文档
examples/ 本地假爬虫
tests/ 单元、API、MCP 和 stdio 集成测试文档
Roadmap
PostgreSQL/TimescaleDB 存储后端。
新闻和研报混合检索。
Reranker 和引用评估。
更完整的合约换月和连续合约处理。
Docker Compose。
Web 管理界面。
数据源插件接口。
报告质量评测集。
免责声明
本项目用于数据工程、报告自动化和研究辅助,不构成投资建议。期货市场风险较高,任何交易决策都应由使用者独立判断并自行承担风险。
License
English Summary
Futures AI KB is an external market-data and report-retrieval service for OpenClaw. It keeps raw futures data, crawler output, research articles, and historical reports outside the model context. OpenClaw receives a compact computed daily packet and reads selected past reports only through explicit MCP calls.
Supported symbols:
SH: Caustic soda futuresV: PVC futuresJM: Coking coal futures
Core stack: Python, FastAPI, SQLite, MCP 2.x, OpenClaw Skill.
Available Tools
7 toolsdaily_report_contextDaily report contextB
Return one compact computed packet for SH, V, and JM. This is the only market payload that should enter the report context.
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | No | ||
| trade_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It reveals that the output is 'computed' and 'compact,' but does not disclose whether the call has side effects, whether it triggers expensive computation, how symbols affect the result, or any permissions or data dependencies. This is a meaningful transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no redundant filler. The main purpose and the key usage constraint are front-loaded, and every clause adds signal. This is appropriately concise and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although an output schema exists and can describe return values, the description still leaves essential gaps: parameter semantics are unexplained, computation behavior is vague, and there is no guidance about prerequisites or side effects. For a tool with no annotations and no schema-level parameter documentation, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention trade_date or symbols at all. It refers to SH, V, and JM in the output scope, but never explains how these relate to the parameters or what values are valid. The agent gets no help understanding the input contract beyond raw names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Return') and a specific resource ('compact computed packet for SH, V, and JM'), so an agent can tell roughly what the tool produces. It also marks itself as 'the only market payload that should enter the report context,' which helps differentiate it from sibling report and data tools, though it does not name those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: this is the only market payload that should enter the report context, implying it should be used for report construction rather than raw data collection or storage. It does not explicitly list when not to use it or name alternatives, but the 'only market payload' phrasing provides a strong selection rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manual_data_submitSubmit manual daily dataA
Validate and upsert structured spot, inventory, operating-rate, or other daily metrics. The tool returns counts only, not the submitted dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| records | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It clearly discloses that the tool validates and upserts data and that it 'returns counts only, not the submitted dataset,' which is highly useful. It does not detail validation rules or side effects, but the primary behavioral expectations are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first states the operation and scope, the second clarifies the return behavior. It is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single `records` array parameter and a well-defined nested schema, the description is largely sufficient. It tells the agent what data is being submitted, the write behavior, and the response shape. Minor gaps such as explicit sibling routing and field-level format details are not severe enough to reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description should compensate. It adds some meaning by listing acceptable metric categories like 'spot, inventory, operating-rate,' which clarifies the `metric` field, but it does not explain the required per-record fields (trade_date, symbol, metric, value) or value formats. The nested schema remains self-explanatory enough for a 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Validate and upsert') and the resource ('structured spot, inventory, operating-rate, or other daily metrics'). The title and tool name also reinforce that this is for manual daily metric submission, which distinguishes it from the report/research-focused sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'spot, inventory, operating-rate, or other daily metrics' implies the tool is for submitting daily metric data, and the title suggests manual entry. However, there is no explicit guidance on when to prefer this tool over siblings like report_save or research_search, nor any stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_run_crawlerRun allowlisted market crawlerB
Run the configured native crawler or FuturesIntelTool refresh for one supported symbol and date. Only run status is returned.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | ||
| trade_date | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it does disclose that only run status is returned and that the operation is a configured execution. However, it does not explain potential side effects, authorization requirements, or what 'supported' means, leaving the tool's impact underspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the action and the key output limitation without wasted words. The structure is clean and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema presumably documents the run-status return, so that gap is covered, but the tool is under-specified for invocation: source values, date format, and the meaning of 'supported' are absent. Given a two-required-parameter tool with no annotations and zero schema description coverage, the description is not sufficient for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain the 'source' parameter's allowed values or how it selects between crawler and FuturesIntelTool, nor does it specify the 'trade_date' format. The mention of 'one supported symbol and date' is confusing because the schema contains no symbol parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a clear action ('Run') and a resource ('configured native crawler or FuturesIntelTool refresh') scoped to a symbol and date, which distinguishes it from the sibling reporting/search tools. The 'or' between two run targets and the unexplained 'supported' qualifier keep it from being fully precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to invoke this tool versus any sibling, and no alternative tools are named. The scope ('one supported symbol and date') implies a constrained use case, but the description never states prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_listList past reportsA
Return compact report metadata and short summaries only. Use this before reading any past report; full report content is never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| date_to | No | ||
| symbols | No | ||
| date_from | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It clearly states the tool returns only compact metadata and summaries, and makes a strong guarantee that full report content is never returned. It does not describe ordering or pagination, but those are minor for a list tool with an output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The key result type and limitation are front-loaded, and the workflow guidance is delivered in a compact second sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a clear workflow and output boundary, and the output schema covers return values. However, with 0% schema coverage and no annotations, the filtering behavior is left entirely to inference. A complete list-tool description should at least hint at how query, date range, and symbols narrow results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to explain the five filter parameters. It does not mention limit, query, date_from, date_to, or symbols, nor how they interact. The parameter names are conventional, but the description adds no semantic value beyond them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Return') and resource ('past reports'), and specifies the exact result scope: 'compact report metadata and short summaries only.' The phrase 'full report content is never returned' clearly differentiates it from a full-content retrieval tool like report_read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this tool 'before reading any past report,' which establishes when it belongs in the workflow. It also warns that full report content is never returned, implying this is not the tool for full-content access, but it does not name a specific sibling as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_readRead selected past reportB
Read one selected report with a token budget. Use next_offset to continue only when necessary.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| report_id | Yes | ||
| max_tokens | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry behavioral disclosure. It does reveal that reading is token-budgeted and supports offset-based continuation, which is useful. However, it does not state side effects, permissions, or that the actual schema parameter is named 'offset' rather than 'next_offset,' which undercuts transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the core action front-loaded and no filler. The second sentence adds useful pagination guidance, though the imprecise 'next_offset' name is a minor blemish. It is appropriately sized for a simple read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The core read behavior and token/pagination handling are present, and the output schema covers return shape. However, with no annotations, the description leaves gaps around tool-selection context, offset semantics, and when reading is appropriate versus listing or searching. It is minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It loosely maps 'token budget' to max_tokens and 'next_offset' to offset, but uses a parameter name that does not exist in the schema. report_id is only implied by 'selected report,' so the compensation is partial and somewhat misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Read one selected report,' giving a clear verb and object, and it distinguishes the tool from siblings like report_list and report_save by focusing on consuming a single report's contents. The phrase 'selected report' implies an existing report_id, though the resource type is not spelled out. Overall, the purpose is clear and identifiable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool's role is implied: use it when you have selected a report and want to read its content. However, it provides no explicit guidance about when to prefer report_read over report_list, daily_report_context, or research_search. The only concrete usage instruction, 'Use next_offset to continue only when necessary,' is about pagination rather than tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
report_saveSave generated reportB
Persist a completed report outside model context. Re-saving the same date, type, title, and source updates the existing report.
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the upsert behavior: re-saving the same date, type, title, and source updates the existing report. However, it does not mention side effects, persistence guarantees beyond 'outside model context', or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by the key behavioral detail. No filler or redundancy; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has nested payload parameters, no parameter descriptions, and no annotation context. The description clarifies persistence and update semantics but omits critical invocation details such as required field formats, defaults, valid report types, or how to structure the payload.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the payload structure or field semantics. It only references 'date, type, title, and source' in the context of re-saving, which provides minimal insight into required parameters like content, summary, symbols, or trade_date.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Persist a completed report outside model context.' This clearly identifies the operation and resource, and the title aligns. It does not explicitly distinguish from sibling tools like manual_data_submit, but the focus on 'completed report' and persistence is fairly unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when a report is completed and needs to be persisted outside model context. It does not explicitly discuss alternatives, exclusions, or when not to use this tool, so usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_searchSearch research notesB
Search FuturesIntelTool or native news, announcements, and research notes. Returns at most three short excerpts with citations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| symbols | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it does usefully disclose the max result count and output shape ('at most three short excerpts with citations'). However, it does not disclose failure behavior, access requirements, or how the result limit relates to the limit parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the primary action is front-loaded and the return constraint is stated directly. It is concise and scannable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with an output schema, missing return details are less critical, but there is no explanation of the optional symbols filter or query semantics. Because annotations are absent and schema description coverage is 0%, an agent is left without enough context to reliably build a query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not name or explain query or symbols; the only implicit hint is 'at most three' mapping to the limit default. Since the schema itself has no descriptions, the description should compensate but only partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a clear search action over named sources ('FuturesIntelTool or native news, announcements, and research notes') and explicitly says it returns excerpts with citations. The resource is somewhat ambiguous because 'FuturesIntelTool' is not defined, but it does differentiate from generic report tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance about when to prefer this over sibling tools such as report_read or daily_report_context, and no exclusions or conditions. It only implies searching research content; an agent must infer when this is the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.2.0- First observed
daily_report_context - First observed
manual_data_submit - First observed
market_run_crawler - First observed
report_list - First observed
report_read - First observed
report_save - First observed
research_search
TDQS
Scored across 7 tools
Each tool has a clearly distinct responsibility: market context generation, manual data submission, crawler execution, report persistence, report listing, report reading, and research search. There is no meaningful overlap or ambiguity between tool purposes.
The report_* tools follow a noun-verb pattern (save/list/read), and manual_data_submit is similar, but daily_report_context, market_run_crawler, and research_search do not follow the same convention. This mixed structure makes the naming pattern less predictable.
Seven tools is a well-scoped size for a futures knowledge base server, covering data ingestion, crawling, reporting, and research without unnecessary bloat. Each tool contributes a distinct capability.
The tool set covers the main workflow: submit/ingest data, generate report context, save/list/read reports, and search research. Minor gaps exist, such as no direct way to query or delete submitted data and no explicit report deletion, but the core lifecycle is otherwise supported.
Maintenance
Related MCP Connectors
China A-share market data for research, backtesting and AI agents via MCP.
Real SEC, 13F, insider, congress & macro data your AI agent can cite. Hosted MCP, 24 tools.
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
100+ MCP tools for AI agents: content metadata, trade intelligence, business-expertise analysis.
Related MCP Servers
- AlicenseAqualityDmaintenanceGenerates Chinese mining rights daily briefs with data status and citation sources, integrating MCP tools for mining news, PDF resource extraction, and LME price queries.2MIT
- FlicenseNot gradedqualityDmaintenanceProvides web search, page fetching, and A-stock data access (financial reports, announcements, research reports, penalties, IR meetings) via MCP tools.-
- FlicenseNot gradedqualityCmaintenanceMCP server for domestic futures analytics, providing tools to fetch OHLCV data, check data quality, analyze market metrics, and generate markdown reports via the Model Context Protocol.-
- AlicenseAqualityBmaintenanceEnables AI clients to perform autonomous multi-agent deep research through MCP tools, including deep research, quick search, and retrieval of archived Markdown reports with live web search and source citations.4MIT