Skip to main content
Glama
wst1234566

investment-agent

by wst1234566

Investment Intelligence Agent

行业研究与投资逻辑验证智能体

把分散的研报观点、新闻事实和市场行情,组织成有证据支撑、能够回看原文、可以持续核验的研究判断。

研究一个行业,既要知道市场在讨论什么,也要理解观点背后的驱动因素,并跟踪这些判断是否得到后续事实支持。本项目围绕这一研究过程,将 研究问答、投资逻辑验证和可复用投研能力 接入 DeepSeek Harness,通过 Python MCP 工具完成检索、分析与校验。

An investment research agent for evidence retrieval, thesis verification and reusable research workflows, built on DeepSeek Harness and MCP.

阅读示例简报 · 查看结构化输出 · 快速运行 · 架构说明 · 验证记录

项目成果

研究环节

要回答的问题

当前公开版提供的能力

研究问答

市场上有哪些相关信息?依据来自哪里?

按主题、来源和截止日检索研报与新闻,返回可定位的证据片段,为带引用的回答提供依据

投资逻辑验证

观点由哪些变量驱动?什么证据会改变判断?

读取结构化观点,逐维度比对后续事件,区分支持、削弱与证据不足,并保留机构分歧

能力复用

如何把同一套研究方法用于其他主题或 Agent?

将领域能力封装为 9 个 MCP 工具,统一研究输入、证据凭据与输出校验,生成 HTML / Markdown / JSON 简报

下面是使用虚构公司「云澜算力」生成的研究简报。公开样例包含 10 篇合成文档、4 条观点、6 条事件标注,截止 2026-07-31 可见 9 篇文档。无需 API Key 即可复现。

合成案例研究简报

Related MCP server: Wokelo MCP Server

研究问答:找到信息,也能找到依据

研报记录机构判断,新闻与公告提供后续事实,行情反映市场价格变化。系统保留每条材料的来源、发布时间和原文定位,让研究结论可以逐条核对。

例如,研究者提出“云澜算力的需求扩张是否已经兑现”,系统会围绕资本开支、服务器交付等维度检索证据。返回结果包含文档与 Chunk ID,研究者可以继续读取上下文,检查引用是否支持回答。

公开版默认使用 BM25 检索,配合查询扩展、来源平衡与时间过滤。研究内核保留了向量检索、RRF 融合和重排模块,混合检索尚未接入公开默认流程。

最终简报的引用还要通过程序校验:证据是否由工具返回、是否属于当前语料与截止日、引文是否出现在原文中。模型结束后,命令行入口会独立执行这一步。

投资逻辑:把观点拆成可以跟踪的研究问题

一条“资本开支扩张将带动服务器订单增长”的观点,包含驱动因素、预期结果和需要观察的指标。系统按这些维度组织研究,分别回答资本开支是否增加、交付是否兑现、盈利是否改善。

结构化观点

每条观点保留主题、方向、来源机构、报告日期与原文证据,并附带具体的验证维度。当前公开流程读取预先准备的观点库。

字段

合成案例中的内容

研究主题

AI 算力

核心观点

云澜算力的 AI 算力资本开支增长将带动服务器订单增长

观点方向

偏多

驱动因素

资本开支扩张

观察指标

资本开支、服务器交付

来源定位

示例研究甲,报告日期 2026-05-05,保留原文 Chunk ID

后续事实验证

系统将后续新闻与公告整理为事件,再判断事件与观点维度的关系。同一研究主题可以同时存在得到支持的判断和受到削弱的判断。

研究问题

后续证据(合成数据)

研究结果

资本开支是否增长?

实际资本开支同比增长 20%

支持需求扩张中的投入维度

服务器交付是否兑现?

已完成服务器交付 1,200 台

提供需求兑现的方向性事实

订单增长是否带来盈利改善?

毛利率为 18%,同比下降 3 个百分点

削弱盈利改善判断,保留竞争压力

经营现金流是否改善?

当前语料缺少足够披露

标记为证据缺口,继续观察

这组证据形成的研究判断是:需求端已有兑现证据,盈利端仍有压力,现金流改善尚缺少可验证事实。 对应原文见 示例简报

观点、事实与市场反应分别记录

系统把基本面事实、预期变化和市场价格反应放在不同的证据类别中。预测上调与股价上涨可以作为研究背景,但不能直接计入基本面验证。行情工具依据本地价格数据计算指标,供研究者与业务判断对照。

跨研报聚合时,程序分别统计观点、报告和机构,保留同一报告内的不同方向,避免把观点条数误当成独立机构数量。缺少证据的维度也会留在最终输出中。

可复用投研能力

研究方法通过明确的输入输出和工具接口实现复用。更换符合数据契约的研究语料后,可以沿用检索、事件验证和引用校验流程。

输入

输出

研究主题与问题

主题观点及分歧

研报、新闻、公告与准备好的观点库

可定位到原文的代表性证据

统一研究截止日

各维度的验证状态与证据缺口

本地行情与对照基准

市场反应指标及结构化研究简报

模型负责语义理解与研究表达,程序负责计算、时间约束和校验。 DeepSeek Harness 提供模型与工具循环、上下文和会话,本项目提供投研领域工具及最终报告检查。默认演示使用手工标注和预设模型响应,便于复现业务过程。

flowchart LR
    Q[研究问题] --> H[DeepSeek Harness]
    H <-->|9 个 MCP 工具| M[Python 研究服务]
    M --> R[研报与新闻检索]
    M --> V[观点聚合与事件验证]
    M --> K[行情计算]
    R --> E[原文证据与截止日凭据]
    V --> E
    H --> J[结构化研究答案]
    J --> G[应用独立引用校验]
    E --> G
    G --> P[HTML / Markdown / JSON 简报]

工具

职责

corpus_info

数据范围、截止日和运行模式

search_research_reports

有时间边界的研报检索

search_news

新闻与公告检索

list_theses

读取已准备的结构化观点

read_evidence

按 Chunk ID 回看原文

verify_thesis

事件去重、维度验证、证据缺口

build_research_object

分别统计观点、研报和机构,保留 mixed 方向

calculate_market_response

确定性计算本地行情指标

validate_research_output

校验输出结构、引用身份和原文片段

框架与依赖:DeepSeek HarnessMCP Python SDK。详细分工见 架构说明,语料接入要求见 数据契约

快速运行

安装 uv 后,在仓库根目录执行。建议 Python 3.12,uv 可自动准备解释器。

uv sync --frozen --python 3.12
uv run --frozen investment-agent doctor
uv run --frozen investment-agent demo

用浏览器打开 outputs/demo/research.html。同目录还有 research.mdresearch.json,包含工具调用轨迹和引用校验结果。

demo 通过真实 MCP 客户端启动 Python 服务并执行 11 次工具调用,不需要 API Key。调用顺序固定,用于演示业务流程,不测试模型自主规划。

使用官方 DS Harness

先运行不消耗模型 API 的集成演示:

uv run --frozen --extra harness investment-agent harness --mock-model

这里运行的是官方 Harness 与真实 MCP 工具。本地脚本模型提供预设 tool calls,用于验证框架接线与最终输出校验。Python SDK 固定为 0.1.2rc1,Web 发行版固定为 0.1.2-rc.1,均为预发布版本,升级需要重新验证兼容性。

使用真实模型时,将 .env.example 复制为 .env,填写自己的 DEEPSEEK_API_KEY

DEEPSEEK_API_KEY=your-api-key
DEEPSEEK_BASE_URL=https://api.deepseek.com
DEEPSEEK_MODEL=deepseek-v4-flash
INVESTMENT_MODEL_MODE=fixture
uv run --frozen --extra harness --extra live investment-agent harness "验证云澜算力的需求、盈利与现金流判断,引用原文并说明缺口。"

默认仍以 fixture 提供可复现的业务判定,外层工具选择和答案由真实模型完成。设置 INVESTMENT_MODEL_MODE=live 后,事件抽取和维度判定也调用模型,会产生额外 API 请求。真实外部模型的端到端验证尚未完成,详见 验证记录

会话保存在 outputs/harness/harness-home,可使用同一 --output--session-id 继续。会话和证据数据库仅保存在本地。

可选 Web 界面

安装 Node.js 24+,在仓库根目录执行:

npm ci --ignore-scripts
uv run --frozen investment-agent web

浏览器打开终端给出的本地地址,在官方 Harness 界面添加当前仓库为工作区,开始研究对话。默认地址为 127.0.0.1:3080,可用 --port 3081 换端口,--no-open 禁止自动打开浏览器。

Web 使用官方界面和本项目的研究配置,关闭通用 shell、编辑文件和子 Agent 工具。它展示工具结果与模型聊天。需要经过应用独立校验的 HTML 简报时,请使用命令行 harness 入口。

验证与工程交付

公开源码包含 61 项测试,覆盖时间边界、证据来源、引文一致性、观点统计及失败处理。官方 Harness 集成测试使用本地脚本模型与真实 MCP 服务,检查协议与运行流程。Windows 和 Ubuntu 的 GitHub Actions 已通过测试、演示、发布检查与构建。

src/investment_agent/    MCP 服务、Harness 适配、示例与报告生成
src/financial_rag/       检索、事件、验证与行情业务内核
tests/                  业务测试、真实 MCP 和 Harness 集成测试
examples/               可直接阅读的合成案例产物
docs/                   架构、数据契约、验证记录与来源说明
scripts/                样例生成、发布检查、纯源码打包
.github/workflows/      Windows / Ubuntu CI
uv run --frozen ruff check src/investment_agent scripts tests
uv run --frozen --extra harness --extra live pytest -q
uv run --frozen python scripts/check_release.py
uv build
uv run --frozen python scripts/build_release.py

源码打包采用明确的文件范围,排除环境、密钥、会话和私人数据。更新公开示例时,先运行 demo,再运行 uv run --frozen python scripts/export_public_example.py,导出器会移除执行时间、耗时和会话身份字段。提交前可使用 scripts/check_release.py --git-index 检查实际暂存内容。详见 发布步骤隐私复查

研究路线与公开范围

项目的研究路线还包括机构观点共识与投资传导分析:比较近期共识与历史窗口的差异,观察机构观点的边际变化,并沿需求、投入、经营兑现等环节组织研究问题。

方向

当前公开状态

研报与新闻检索、观点验证、证据引用

已提供可运行的合成案例

混合检索

保留相关内核模块,默认入口使用 BM25

多时间窗口 ICRS 机构观点共识因子

尚未提供完整可复现入口与配套回测

自动生成投资传导图

尚未接入当前公开工作流

公开版使用合成语料,不包含历史私人知识库、机构原始材料或相关评测数据。样例行情用于演示计算公式,不代表策略回测。引用校验可以确认来源与引文一致,但不能证明推理或投资判断必然成立。工具调用次数目前由提示词约束,尚未实现强制预算或业务级 exactly-once 执行。

MIT License。数据与依赖归属见 THIRD_PARTY_NOTICES.md。本项目为独立展示项目。

Available Tools

9 tools
build_research_objectD
Read-only

Build traceable cross-institution research with separate claim/report counts and mixed directions.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoAI算力
cutoff_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

D1.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description uses the verb 'build', which typically implies creating or modifying state, directly contradicting the readOnlyHint annotation. This contradiction is significant and could mislead an agent about the tool's side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is concise and to the point, avoiding unnecessary verbosity. It conveys the core idea without extra fluff, though it sacrifices clarity for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's composite nature (building a research object from multiple resources), the description lacks essential details such as input/output structure, how it interacts with other tools, or what the resulting object looks like. It is incomplete for an agent to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has two parameters (topic and cutoff_date) with no descriptions, and the description itself provides no explanation of them. With 0% schema coverage, the description fails to compensate, leaving the meaning and expected values of the parameters unclear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool builds a traceable cross-institution research object with claim/report counts and mixed directions, giving some specificity. However, it is vague about the exact output format and what 'mixed directions' implies, leaving room for ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the sibling tools such as search_research_reports or verify_thesis. It does not mention prerequisites or scenarios where this tool is the appropriate choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_market_responseA
Read-only

Calculate return, volatility and drawdown from local prices; prices do not validate fundamentals.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes
end_dateYes
benchmarkNo
start_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context by specifying that the calculation is based solely on local prices and deliberately does not validate fundamentals, disclosing a limitation beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one tight sentence with no wasted words. The key capability and resource are front-loaded, and the caveat is a compact second clause that earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 4 parameters, zero parameter descriptions, and no usage guidance, the context is incomplete despite the output schema covering return shape. An agent would still lack date format, benchmark semantics, and when to prefer this over sibling research tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 compensate for undocumented parameters, but it does not explain ticker, start_date, end_date, or benchmark semantics or formats. The only related detail is the mention of 'local prices,' which does not map to any parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ('Calculate') and names concrete outputs ('return, volatility and drawdown') plus their data source ('local prices'). This clearly separates it from qualitative siblings like search_research_reports, verify_thesis, and build_research_object, and the closing caveat adds precision about scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the tool is appropriate (compute market metrics from local prices) and offers a negative signal ('prices do not validate fundamentals'), but it never names alternatives or states a concrete when-to-use/when-not-to-use decision rule. This is useful but not explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

corpus_infoA
Read-only

Read corpus coverage, available topics, cutoff and synthetic/live mode before research.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explicitly says 'Read', which aligns with the readOnlyHint annotation. It adds valuable context about what specific corpus information is being read (coverage, topics, cutoff, mode), going beyond the annotation's simple read-only designation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that efficiently communicates the tool's function and timing. No filler or redundant information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description does not need to detail return values. It provides sufficient context about what the tool reads and when to use it, making it complete for its purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the baseline score of 4 applies. The description does not need to explain parameters, and it appropriately focuses on the tool's purpose rather than parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Read) and the specific resource (corpus) with explicit attributes (coverage, topics, cutoff, synthetic/live mode). It effectively distinguishes this tool from siblings like list_theses or search_research_reports by focusing on corpus metadata rather than content retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'before research' provides a clear temporal usage context, indicating this tool should be used as a preliminary step. While it does not explicitly name alternative tools, the instruction to read corpus information before conducting research implies when to use this tool versus other search/list tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_thesesB
Read-only

List structured investment theses, IDs, dimensions and report evidence for one topic.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoAI算力
cutoff_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds a topic-scoping constraint but discloses no additional behavioral traits such as pagination, filtering behavior, or interaction with evidence sources.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with the primary action and resource front-loaded. It wastes no words, but the listing of 'IDs, dimensions and report evidence' is somewhat awkwardly packed into the sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The presence of an output schema reduces the need to explain return values, and the description covers the core listing intent. However, the important cutoff_date parameter is unexplained, and the meaning of 'report evidence' and 'dimensions' is left vague, so an agent may not know what to expect beyond the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 for the two undocumented parameters. It only reinforces that the tool works for 'one topic,' which maps to the topic field, but it entirely omits the cutoff_date parameter and its meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action ('List') and a distinct resource ('structured investment theses') with a specified scope ('for one topic'). It differentiates this from search-oriented siblings by focusing on theses rather than reports or news, though the phrase 'IDs, dimensions and report evidence' is slightly ambiguous about what exactly is returned.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like search_research_reports or read_evidence. It only implies that the tool works for one topic, without stating exclusions, prerequisites, or preferred scenarios for sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_evidenceA
Read-only

Read a known corpus chunk by ID, bounded by the research cutoff. No filesystem paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
chunk_idYes
cutoff_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and non-destructive behavior, so the description only needs to add context. It adds the research-cutoff bounding and the filesystem-path exclusion, but it does not disclose error handling, missing-ID behavior, or return format details. This is a modest addition beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly packed sentences with no filler. The main operation and resource are front-loaded, followed by a relevant boundary statement. Every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-by-ID tool with readOnly annotations and an output schema, the description covers the essential elements: what is read, how it is identified, and an important boundary. It could be more complete with explicit alternative routing or edge-case behavior, but those are not critical for invoking the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry parameter meaning. It effectively does so: 'by ID' maps to chunk_id and 'bounded by the research cutoff' maps to cutoff_date. It gives both parameters semantic roles, though it omits format details or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and a specific resource ('known corpus chunk by ID'), and the 'No filesystem paths' exclusion further narrows what it operates on. This clearly distinguishes it from the sibling search and verification tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus siblings like search_research_reports or verify_thesis. The 'No filesystem paths' note provides a negative constraint, but the description does not say 'use this when you have a known chunk ID' or direct the agent to alternatives for discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_newsA
Read-only

Search news AND company announcements within publication dates, including adverse evidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo
start_dateNo
cutoff_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true and destructive=false, so the description does not need to repeat that. It adds no further behavioral details (e.g., rate limits, pagination, or result ordering), but does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, compact sentence conveys the core functionality without extraneous wording. It is well-structured and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is straightforward, and the existence of an output schema means return-value details need not be in the description. The description covers the essential purpose and scope, though it omits any mention of edge cases or result handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 4 parameters but the description explains none of them individually. It only hints that start_date and cutoff_date relate to 'publication dates'. This is minimal compensation for zero schema coverage, leaving query and top_k semantics unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Search'), the target ('news AND company announcements'), the constraint ('within publication dates'), and a distinctive feature ('including adverse evidence'). It distinguishes this tool from siblings like search_research_reports and read_evidence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given for when to use this tool versus alternatives like search_research_reports or read_evidence. The description implies it is for news/announcements but does not state scenarios or contrast with other search tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_research_reportsA
Read-only

Search original research reports. Return exact evidence, provenance and an evidence_set_id.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_kNo
cutoff_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only and non-destructive, so the safety profile is covered. The description adds useful return-semantic context (exact evidence, provenance, evidence_set_id), but it does not explain ranking behavior, how cutoff_date affects results, or any limitations beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no wasted words. The action is front-loaded and the return value is stated immediately. It is concise without sacrificing the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and read-only annotations present, the description does not need to detail return values or safety. However, given the sibling tools and the three parameters with no schema descriptions, the description is missing enough guidance about when to choose this tool and how to use parameters like cutoff_date to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the tool description does not explain query, top_k, or cutoff_date semantics. The parameter names are somewhat self-explanatory, but the description adds no meaning beyond the schema and leaves query construction and cutoff behavior entirely implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: 'Search original research reports.' The phrase 'original research reports' distinguishes this tool from siblings like search_news and list_theses, and the return note (exact evidence, provenance, evidence_set_id) sharpens its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when original research evidence is needed, but it does not explicitly say when to use this tool versus alternatives like search_news or list_theses. No exclusions or alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_research_outputA
Read-only

Validate answer schema and exact quotes against previously returned evidence sets at one cutoff.

answer requires summary, confidence (low/medium/high), insufficient_evidence (boolean), citations [{citation_id, document_id, chunk_id, evidence}], and findings [{title, claim, analysis, citation_ids}]. An insufficient answer has low confidence, empty citations and findings. Validation does not prove semantic entailment.

ParametersJSON Schema
NameRequiredDescriptionDefault
answerYes
evidence_set_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey read-only and non-destructive behavior, and the description adds useful behavioral context: validation is limited to schema compliance and exact quotes, insufficient answers must have low confidence with empty citations/findings, and semantic entailment is not evaluated. This goes beyond the structured hints and prevents misuse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, then uses a clear structured list for the required answer fields, and ends with an important limitation. Every sentence earns its place with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a validation tool with nested objects and minimal schema descriptions, the description covers the answer schema, the meaning of evidence_set_ids, the insufficient-answer convention, and the scope of validation. Since an output schema exists, the missing return-value details are not a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 0% schema description coverage, the description thoroughly documents the answer parameter's required nested structure, including confidence values, citations fields, and findings fields. It also clarifies that evidence_set_ids refer to 'previously returned evidence sets' and ties validation to 'one cutoff,' providing essential meaning the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Validate answer schema and exact quotes against previously returned evidence sets.' It clearly states what the tool does and differentiates it from semantic checks by noting it 'does not prove semantic entailment.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when validating a research output against previously returned evidence sets. The caveat that it does not prove semantic entailment gives a helpful boundary, though it does not explicitly name sibling alternatives or provide explicit when-not-to-use guidance beyond that limitation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_thesisB
Read-only

Retrieve subsequent events and verify thesis dimensions; separate facts, expectations and prices.

ParametersJSON Schema
NameRequiredDescriptionDefault
thesis_idYes
cutoff_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'retrieve' wording is consistent with that. It adds useful context about separating facts, expectations, and prices, but it does not explain mechanics such as how cutoff_date affects the retrieval or what 'verify thesis dimensions' concretely entails.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single compact sentence with front-loaded action and useful output categories. It avoids fluff, though the phrase 'verify thesis dimensions' is somewhat vague and could be clearer without adding length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has annotations and an output schema, which lowers the burden on the description. However, the description leaves ambiguity around when to use this tool versus siblings and does not clarify cutoff_date semantics, making it only minimally complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 for the lack of parameter documentation. It does not explain thesis_id beyond what the schema shows, and cutoff_date's role is only vaguely hinted at by 'subsequent events'. This is insufficient for a 2-parameter tool with no schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('retrieve subsequent events') and resource ('thesis'), and adds meaningful output detail ('separate facts, expectations and prices'). It does not explicitly distinguish itself from sibling tools like read_evidence or validate_research_output, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for verifying a thesis using subsequent events, but it never states when to prefer this tool over alternatives such as read_evidence or validate_research_output. There is no explicit usage context or exclusion criteria.

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. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedbuild_research_object
    • First observedcalculate_market_response
    • First observedcorpus_info
    • First observedlist_theses
    • First observedread_evidence
    • First observedsearch_news
    • First observedsearch_research_reports
    • First observedvalidate_research_output
    • First observedverify_thesis

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct role: corpus info, listing theses, searching two separate sources, reading evidence, verifying, building, calculating, and validating. No meaningful overlap.

Naming Consistency4/5

Most tools follow a verb_noun pattern (list_theses, search_news, read_evidence, validate_research_output), but corpus_info breaks the pattern by omitting a verb; otherwise consistent.

Tool Count5/5

Nine tools cover the investment research workflow without being excessive or too sparse; each earns its place.

Completeness4/5

The set covers searching, reading, verifying, building, calculating, and validating research outputs. Minor possible gap is a dedicated get-by-ID thesis/report tool, but list_theses and read_evidence largely cover retrieval.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables quantitative trading research by providing tools to backtest strategies, list market datasets, review forward-test logs, and search previously rejected hypotheses, all through an MCP interface.
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables dealmaking research for AI assistants, providing company intelligence, transaction data, and research deliverables via MCP.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Provides point-in-time financial data access and an honest backtesting engine via MCP, enabling users to research restated fundamentals, run backtests with deflated Sharpe metrics, and benchmark returns against published factors.
    8
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/wst1234566/investment-intelligence-agent'

If you have feedback or need assistance with the MCP directory API, please join our Discord server