Skip to main content
Glama
ResearchTwin MCP Server

ResearchTwin MCP Server

by sevenboom77

ResearchTwin MCP Server

ResearchTwin MCP Server は、長期的な研究プロジェクトエージェントである ResearchTwin の永続的なアクション層です。OpenTrek でホストされるエージェントに、研究作業の記録、プロジェクト状態とアドバイザー要件の保持、エビデンスに基づく進捗レポートの作成を行うための本格的な MCP ツールを提供します。

このリポジトリは、競技品質のリファレンス実装として設計されています。RAG は研究資料から質問に回答し、MCP はプロジェクト記録に対する明示的で監査可能な変更を実行します。

コミットされているすべての例は架空のものであり、匿名化されています。運用データは runtime_data/ に属し、意図的に Git から除外されています。

概要

リサーチアシスタントは、単一の質問に答えるだけでは不十分です。ResearchTwin は、進行中のプロジェクトで何が起こったかの永続的な記録を保持します:

  • 具体的な活動、成果、障害、次のステップ;

  • 現在のプロジェクト段階、タスク、リスク、決定事項;

  • 構造化されたアドバイザー要件;

  • 永続化されたエビデンスから組み立てられた週次、ミーティング、またはステージレポート。

このサーバーは、OpenTrek 内の ResearchTwin Agent から呼び出されることを想定しています。エージェント、LLM、または既存の ResearchTwin_Docs ナレッジベースを置き換えるものではありません。

Related MCP server: Munnin

MCP を採用する理由

RAG と MCP には明確に異なる役割があります:

機能

責任

ResearchTwin_Docs RAG

すでに利用可能な論文、ノート、技術資料を取得して説明する。

ResearchTwin MCP Server

明示的なツール呼び出しを通じて研究管理状態を永続化および取得する。

ResearchTwin Agent

いつ取得、記録、照会、要約するかを決定し、自然言語を構造化されたツール引数に変換する。

この分離により、プロジェクト記録は決定的でレビュー可能なものになります。MCP サーバーは、構造化された活動を保存したり、保存された事実からレポートを作成したりするために、別の LLM を実行する必要はありません。

アーキテクチャ

flowchart LR
    U[Researcher] --> A[OpenTrek ResearchTwin Agent]
    A -->|retrieve and reason| R[ResearchTwin_Docs RAG]
    R --> K[Research papers and technical material]
    A -->|MCP function calls| M[ResearchTwin MCP Server]
    M --> T[Six research-management tools]
    T --> S[JSON persistence layer]
    S --> D[Runtime research records and reports]

コンポーネントの境界、永続化ルール、拡張ポイントについては、docs/architecture.md を参照してください。

機能

  • 公式 Python MCP SDK との統合。

  • /mcp におけるプライマリ MCP トランスポートとしての Streamable HTTP。

  • 起動時に選択した場合の、オプションのコマンドライン SSE 互換トランスポート。

  • モノリシックなサーバースクリプトではなく、6 つの焦点を絞ったツール。

  • アトミック置換とプロセス内ロックを備えた UTF-8 JSON 永続化。

  • UUID レコード識別子とタイムゾーン対応の ISO 8601 タイムスタンプ。

  • エージェントのツール処理に適した構造化された成功およびエラーレスポンス。

  • Windows PowerShell の起動、テスト、スモークテスト、OpenTrek 統合ガイダンス。

MCP ツール

ツール

エージェントが次のことを行う必要がある場合に使用します…

record_research_activity

完了した作業、実験結果、障害、読書、または次のステップを永続化する。

list_research_activities

日付、タイプ、またはタグフィルターを使用して作業履歴を呼び出す。

update_project_status

現在のステージ、タスクリスト、リスク、決定事項をマージまたは置換する。

get_project_status

計画または報告の前に現在のプロジェクトスナップショットを読み取る。

record_advisor_instruction

構造化されたアドバイザー要件、優先度、期限、フォローアップを保存する。

generate_research_report

永続化されたデータから週次、ミーティング、またはステージの Markdown レポートを構築する。

完全な入力、出力、エラー契約は docs/mcp_tools.md にあります。

プロジェクト構造

ResearchTwin-MCP-Server/
├── server.py                         # Repository-root launch entry point
├── src/researchtwin_mcp/
│   ├── config.py                     # RESEARCHTWIN_* settings validation
│   ├── server.py                     # MCP server and transport startup
│   ├── models/                       # Validation helpers and schemas
│   ├── storage/                      # Shared JSON persistence layer
│   └── tools/                        # Activity, status, advisor, and report tools
├── scripts/
│   ├── start_server.ps1
│   └── smoke_test.py
├── tests/
├── docs/
├── examples/sample_data/             # Fictional, commit-safe demo data
└── runtime_data/                     # Local operational data; ignored by Git

要件

  • Windows PowerShell(文書化されたワークフロー)

  • Python 3.11 以降。Python 3.11.x が推奨される競技環境です

  • OpenTrek が LAN 上の別のデバイスから実行される場合のみネットワークアクセスが必要

インストール

新しい Windows PowerShell セッションから:

Set-Location C:\work\OpenTrek\ResearchTwin-MCP-Server
python --version
where.exe python

python -m venv .venv
.\.venv\Scripts\Activate.ps1

python --version
where.exe python
python -m pip install --upgrade pip setuptools wheel
python -m pip install -e ".[dev]"

アクティベーション後、where.exe python の最初の結果は仮想環境のインタープリターである必要があります。PowerShell が現在のセッションのアクティベーションをブロックする場合は、文書化されたプロセススコープの実行ポリシー手順を使用し、その後環境を再度アクティベーションしてください。システム全体のポリシーを不必要に弱めないでください。

設定

サーバーはプロセス環境から次の環境変数を読み取ります:

変数

デフォルト

意味

RESEARCHTWIN_HOST

0.0.0.0

バインドアドレス。このデフォルトを維持すると、信頼できる LAN クライアントがサービスに到達できます。

RESEARCHTWIN_PORT

8000

選択されたトランスポートが使用する TCP ポート。

RESEARCHTWIN_DATA_DIR

runtime_data

ローカル永続化ディレクトリ。相対パスの場合はリポジトリルートからの相対パスとして解決されます。

RESEARCHTWIN_LOG_LEVEL

INFO

Python ログレベル。

.env.example は参照用/テンプレートのみです。サーバーは .env ファイルを自動的に読み込みません。PowerShell セッションで値を設定するか、デプロイメントに既存の外部環境ローダーがある場合はそれを使用してください:

$env:RESEARCHTWIN_HOST = "0.0.0.0"
$env:RESEARCHTWIN_PORT = "8000"
$env:RESEARCHTWIN_DATA_DIR = "runtime_data"
$env:RESEARCHTWIN_LOG_LEVEL = "INFO"

キー、個人識別子、またはユーザー固有の IP アドレスをソースコードやコミットされた設定に置かないでください。

実行

仮想環境をアクティベートした状態で:

python server.py

デフォルトのプライマリエンドポイントは次のとおりです:

http://<LAN_IPV4>:8000/mcp

ローカルマシンのみの場合は、<LAN_IPV4> を 127.0.0.1 に置き換えます。別の信頼できる LAN デバイス上の OpenTrek の場合は、Windows ホストの該当する IPv4 アドレスを使用します。ヘルパースクリプトも利用可能です:

.\scripts\start_server.ps1

Streamable HTTP が通常のモードです。明示的な SSE 互換性のためには、python server.py --transport sse を実行し、結果の /sse エンドポイントを OpenTrek 統合ガイダンス に記載されているように登録します。SSE は個別に選択されるトランスポートモードであり、/mcp と並べて登録する代替 URL ではありません。

テスト

リポジトリルートからユニットテストを実行します:

pytest -v

依存関係のインストール後にローカル MCP Streamable HTTP スモークテストを実行します:

python scripts\smoke_test.py

スモークテストは、実際のプロトコル接続、ツール検出、および活動の記録/一覧のラウンドトリップを検証します。runtime_data/ ディレクトリではなく、分離された一時データを使用します。

OpenTrek 統合

OpenTrek の登録では、UI の STREAMABLE オプションと次の URL 形式を使用する必要があります:

http://<LAN_IPV4>:8000/mcp

transportType の JSON 値を手動で発明しないでください。OpenTrek の MCP 登録ページで STREAMABLE を選択し、URL を入力して保存し、6 つのツールすべてが検出されることを確認してください。LAN IPv4 の検出、SSE 互換性、VPN チェック、安全なファイアウォールトラブルシューティングプロセスについては、docs/open_trek_integration.md を参照してください。

デモシナリオ

エンドツーエンドのデモンストレーションは、知識検索と永続的なアクションの違いを示すことができます:

  1. エージェントは RAG を使用して、架空の RNN-PPO 論文またはメソッドノートを説明します。

  2. 研究者は、RNN-PPO 実験が完了したが、トレーニングはまだ不安定であると言います。

  3. エージェントは record_research_activity を結果、問題、次のステップとともに呼び出します。

  4. 一般化に焦点を当てるという架空のアドバイザー要件が record_advisor_instruction で記録されます。

  5. エージェントはプロジェクトの状態を確認し、グループミーティングのために generate_research_report を呼び出します。

結果の Markdown レポートは、一回限りの回答ではなく、永続化されたレコードに基づいています。ナレーション付きのランブックは docs/demo_flow.md にあります。

プライバシーと Git の安全性

リポジトリの .gitignore は、.venv/、pycache/、Python バイトコード、.env、pytest および Ruff キャッシュ、runtime_data/、ログファイルを除外します。これらのパスには、ローカルの研究活動、アドバイザーコンテキスト、レポート、資格情報、またはマシン固有のデータが含まれる可能性があります。

コミットしても安全なのは、examples/sample_data/ 内の架空の匿名フィクスチャのみです。コミットまたはプッシュの前に、以下を検査してください:

git status
git diff --check

実際のアドバイザーメッセージ、実際の論文コンテンツ、チャットの書き起こし、キー、VPN の詳細、または個人を特定できる情報をコミットしないでください。

ロードマップ

  • 必要に応じて JSON ファイルから耐久性のあるマルチユーザーストレージバックエンドに移行する。

  • ResearchTwin Memory および ResearchTwin_Core 統合ポイントを追加する。

  • 既存の RAG レイヤーの周りに論文インテリジェンスと引用ワークフローを追加する。

  • プロジェクト履歴とレポートをレビューするための保護されたダッシュボードを追加する。

  • 実際の研究データを公開せずに競技デモのストーリーを改善する。

ドキュメント

Available Tools

16 tools
generate_research_reportGenerate research reportA

Generate a weekly, meeting, or stage research report from persisted research activities, advisor instructions, and project status. The Markdown report is returned and safely saved under the configured local data directory. report_type must be one of: meeting, stage, weekly.

NameRequiredDescriptionDefault
end_dateYes
start_dateYes
report_typeYes
project_nameNo

Output Schema

NameRequiredDescription
reportYes
statusYes
report_pathYes
report_typeYes
generated_atYes

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the output is Markdown, that the report is returned and safely saved under the local data directory, and that report_type must be one of the listed values. This gives a useful behavioral picture, though it does not address empty-data handling or potential overwrite behavior.

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 two sentences with no filler. It front-loads the primary action and then provides essential output and constraint details compactly.

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 description covers report types, data sources, output format, and the storage side effect, and an output schema exists. However, it leaves the meaning of start_date/end_date and the optional project_name filter unexplained, and it does not mention any prerequisites or limitations for generating a report.

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. It adds little beyond the schema: report_type values are already an enum, and start_date/end_date meaning is only vaguely implied as a reporting period. The optional project_name parameter is not mentioned at all, leaving most parameters semantically under-specified.

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 and resource ('Generate a weekly, meeting, or stage research report') and names the data sources that feed the report. It is clearly distinct from sibling tools that record, list, or update activities and statuses.

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 to use the tool: when a consolidated report is needed from persisted research activities, advisor instructions, and project status. However, it does not explicitly contrast with alternatives like list_research_activities, nor does it state when not to use this tool.

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

get_project_statusGet current research project statusA

Retrieve the complete persisted project status when the user asks what stage the project is in, which risks remain, or what should happen next.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
statusYes
project_statusYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. 'Retrieve' and 'persisted' signal a read operation and a stored data source, but the description does not explicitly state that it has no side effects or how it relates to update_project_status. It is minimally transparent but not misleading.

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 sentence that front-loads the action and resource, then gives concrete usage triggers. There is no filler or redundant restatement of the title.

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 zero-parameter read tool with an output schema, the description covers what is retrieved, where it comes from, and when to call it. The only small gap is the absence of an explicit no-side-effects or sibling-routing note, but the output schema handles return semantics.

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?

The tool has zero parameters and schema description coverage is 100%, so the schema fully captures parameter meaning. The baseline for a zero-parameter tool is 4, and the description does not need to add parameter-level detail.

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 uses a specific verb and resource ('Retrieve the complete persisted project status') and lists concrete user intents (stage, risks, next steps). It is clear, but it does not explicitly differentiate itself from sibling tools like get_research_context or update_project_status.

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 gives explicit trigger conditions: use it when the user asks what stage the project is in, which risks remain, or what should happen next. It does not name alternatives or say when not to use it, so it lacks full routing guidance.

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

get_research_contextGet research contextB

Read-only aggregate of current project status, recent activities, advisor instructions, and candidate intelligence.

NameRequiredDescriptionDefault
project_nameNo
candidate_limitNo
include_rejectedNo
recent_brief_limitNo
recent_advisor_limitNo
recent_activity_limitNo
recent_project_knowledge_limitNo

Output Schema

NameRequiredDescription
statusYes
research_contextYes

TDQS

B3.1/5.0
Behavior3/5

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

The description explicitly discloses that the operation is 'Read-only', which is valuable behavior information given that no annotations are provided. However, it does not disclose other behavioral traits such as how the limit parameters affect the result, what happens when project_name is null, or whether the aggregate is a single combined structure or separate sections.

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 efficient sentence with no fluff, and it front-loads the key 'Read-only aggregate' behavior. It is appropriately concise, though it could be slightly more structured by adding a second sentence with usage guidance or parameter hints.

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 7 parameters, no annotations, and 0% schema description coverage, the one-sentence description is insufficient for an agent to confidently select and invoke the tool. It does not explain default behavior, the meaning of null project_name, or how the limit parameters shape the output. The presence of an output schema mitigates return-value confusion but not invocation decisions.

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 input schema has 0% description coverage, so the description must compensate. It names a few high-level categories (project status, activities, advisor instructions, candidate intelligence) that map to some parameters, but it does not explain specific parameters like candidate_limit, include_rejected, recent_brief_limit, or recent_project_knowledge_limit. An agent could infer meaning from parameter names, but the description adds little beyond that.

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 specific verb and resource: 'Read-only aggregate of current project status, recent activities, advisor instructions, and candidate intelligence.' It clearly identifies what the tool returns and distinguishes it from sibling tools that address only one of these categories. However, 'aggregate' is somewhat generic and doesn't explicitly describe the output structure.

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 usage when a broad snapshot of research context is needed, but it does not explicitly state when to use this tool versus siblings like get_project_status or list_research_activities. No exclusions or alternative tool names are mentioned, leaving the agent to infer the decision from the aggregate wording.

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

list_candidate_intelligenceList candidate intelligenceA

List recent candidate intelligence without presenting it as verified or adopted project knowledge. Filter by lifecycle status, source type, or a related project-issue substring when useful.

NameRequiredDescriptionDefault
limitNo
statusNo
source_typeNo
related_project_issueNo

Output Schema

NameRequiredDescription
countYes
statusYes
candidatesYes

TDQS

A4.2/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden. It reveals that results should be treated as unverified candidate items rather than adopted knowledge, and 'List' implies a read operation. It does not explicitly state read-only behavior, define 'recent', or describe ordering and pagination, leaving some behavioral ambiguity.

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 sentence that front-loads the verb and resource, then supplies filter guidance. There is no redundancy or filler; every phrase earns its place.

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 output schema covers the return shape, so the description does not need to explain return values. The definition communicates the tool's purpose, the unverified nature of candidate intelligence, and the available filtering dimensions. Minor gaps remain around the definition of 'recent' and lack of explicit sibling-tool routing, but the description is adequate for a straightforward list operation.

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 compensate. It does so for the meaningful filters: 'lifecycle status' maps to status, 'source type' maps to source_type, and 'related project-issue substring' clarifies that the string is matched as a substring. Limit is not mentioned, but the schema's default and range make it self-explanatory.

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 and resource: 'List recent candidate intelligence'. It also distinguishes itself from verified or adopted project knowledge, which separates it clearly from sibling tools like list_project_knowledge and list_research_activities.

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 gives clear context that this tool is for unverified candidate intelligence, not adopted project knowledge. It also advises filtering by lifecycle status, source type, or related project-issue substring when useful. However, it does not explicitly name alternative tools or state when not to use this tool.

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

list_project_knowledgeList project knowledgeC

List local project knowledge records and synchronization status.

NameRequiredDescriptionDefault
limitNo
sync_statusNo
project_nameNo
knowledge_typeNo
include_contentNo

Output Schema

NameRequiredDescription
countYes
statusYes
knowledgeYes

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden and does convey that this is a read-only listing of local records plus synchronization status, which is a meaningful behavior beyond the name. However, it does not disclose effects of filters, pagination behavior, or what happens when include_content is true.

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 front-loaded sentence with no filler, and every word contributes to the stated purpose. It is concise, though it achieves this by omitting parameter and usage detail.

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?

For a tool with five optional filter parameters, no annotations, and zero schema description coverage, a one-line purpose statement is incomplete. The output schema covers return structure, but the description gives no information about filtering, defaults, or when the tool should be chosen.

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% and the description names none of the five parameters. It adds no meaning over the input schema, so it fails to compensate for the lack of parameter 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 uses a specific verb ('List') and a distinct resource ('local project knowledge records and synchronization status'). It clearly identifies the tool as a read-only listing over project knowledge, which separates it from sibling tools like prepare_project_knowledge and sync_project_knowledge_to_bailian, though it does not explicitly name any alternative.

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 guidance about when to use this tool instead of list_research_activities, prepare_project_knowledge, or sync_project_knowledge_to_bailian. No filters, preconditions, or exclusions are mentioned, so the agent must infer usage entirely from the tool name and schema.

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

list_research_activitiesList research activitiesA

Retrieve persisted research history for questions about past work, recent experiments, or unresolved problems. Supports optional date, activity type, and tag filters.

NameRequiredDescriptionDefault
tagNo
limitNo
end_dateNo
start_dateNo
activity_typeNo

Output Schema

NameRequiredDescription
countYes
statusYes
activitiesYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Retrieve' implies a read operation, and 'Supports optional ... filters' describes basic behavior. However, it does not mention pagination behavior, result ordering, whether data is current or archived, or any limitations on returned items. These gaps are noticeable for a list tool with no annotation support.

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 two sentences with no redundant phrasing. The first sentence states the core purpose and the second lists the optional filters. Information 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.

Completeness4/5

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

The output schema exists, so return values are documented elsewhere, and the input schema provides detailed constraints for each parameter. The description covers the tool's selection context and filter capabilities, which is sufficient for basic invocation. It lacks explicit sibling differentiation and behavioral notes like sorting or pagination, but given the schema richness, the definition is complete enough for an agent to use it correctly.

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

Parameters3/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. It does summarize the filter dimensions as 'date, activity type, and tag filters', which adds meaning beyond the raw parameter names for start_date, end_date, activity_type, and tag. However, it omits the 'limit' parameter entirely and does not clarify that start_date and end_date form a range. The compensation is partial, not complete.

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 uses a specific verb ('Retrieve') and resource ('persisted research history'), clearly identifying the tool's purpose. It also adds the context of 'past work, recent experiments, or unresolved problems', which distinguishes it from sibling list tools targeting candidate intelligence or knowledge briefs. The resource is unique enough that an agent can select it correctly without opening the schema.

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 'for questions about past work, recent experiments, or unresolved problems' provides clear situational context for when this tool is appropriate. It does not explicitly name exclusions or alternative tools, so it falls short of a 5, but it clearly signals the intended use case.

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

list_research_intelligence_briefsList research intelligence briefsA

List persisted intelligence brief artifacts newest first.

NameRequiredDescriptionDefault
limitNo
end_dateNo
brief_typeNo
start_dateNo
project_nameNo
trigger_typeNo

Output Schema

NameRequiredDescription
countYes
briefsYes
statusYes

TDQS

A3.5/5.0
Behavior3/5

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 reveals that the tool lists persisted artifacts and orders them newest first, which strongly implies a non-mutating read, but it does not explicitly address side effects, pagination, filter combination, or access considerations.

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 extremely concise, front-loading the action and resource with no filler or redundancy. Every word contributes meaning, though the brevity comes at the cost of contextual detail.

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 no annotations, zero schema description coverage, and six optional filter parameters, six words are insufficient for an agent to know how to combine filters, what the intended selection criteria are, or when to prefer this tool over siblings. The output schema covers return shape, but usage and parameter context are missing.

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 input schema has 6 parameters with 0% schema description coverage, and the description does not compensate by explaining any parameter semantics. Filtering behavior for start_date, end_date, brief_type, project_name, trigger_type, and limit is left entirely to inference from parameter names and hard-coded schema 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 ('List') and resource ('persisted intelligence brief artifacts'), and adds ordering ('newest first'). This clearly distinguishes it from sibling tools like list_research_activities and list_candidate_intelligence, which target different artifact types.

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 a read/list use case by saying 'List persisted intelligence brief artifacts', but it gives no explicit when-to-use guidance, exclusions, or alternatives such as record_research_intelligence_brief. An agent must infer usage from the name and the verb rather than receiving direct routing help.

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

prepare_project_knowledgePrepare project knowledgeA

Prepare an auditable Markdown knowledge artifact from a promoted candidate; does not contact Bailian.

NameRequiredDescriptionDefault
titleYes
user_noteNo
candidate_idYes
project_nameYes
knowledge_typeYes
knowledge_contentYes

Output Schema

NameRequiredDescription
statusYes
knowledgeYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the output format, auditability, and a key negative side-effect (no Bailian contact). It does not clarify whether the artifact is persisted, whether promotion is required, or any permission or error behavior.

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 compact sentence with no filler words. The primary action and output are front-loaded, and the critical no-Bailian caveat is clearly appended.

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 six parameters, no annotations, and a likely precondition around what 'promoted candidate' means, the description is too sparse for confident invocation. The output schema covers return values, but parameter semantics and the promotion prerequisite remain gaps.

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, but it only hints at candidate_id via 'promoted candidate' and knowledge_content via 'Markdown'. It leaves knowledge_type, user_note, project_name, and title 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 names a specific action ('Prepare'), a concrete output ('auditable Markdown knowledge artifact'), and a source ('promoted candidate'). It also distinguishes itself from the Bailian-sync sibling by explicitly stating it does not contact Bailian.

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 clause 'does not contact Bailian' provides an explicit exclusion and clearly separates this tool from sync_project_knowledge_to_bailian. It does not, however, describe positive conditions for when to use this tool over other knowledge-related siblings.

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

record_advisor_instructionRecord advisor instructionA

Persist a structured advisor requirement after the ResearchTwin Agent has interpreted an advisor message. Use it for a task, priority, deadline, constraints, or follow-up that must appear in later reports. priority must be one of: critical, high, low, medium.

NameRequiredDescriptionDefault
taskYes
deadlineNo
priorityYes
follow_upNo
constraintsNo
instructionYes
source_noteNo

Output Schema

NameRequiredDescription
recordYes
statusYes
instruction_idYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral disclosure burden. 'Persist' implies a write operation, and 'must appear in later reports' hints at effect, but there is no mention of side effects, idempotency, permissions, overwrite behavior, or what happens after persistence.

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 short and front-loaded with the core action and resource. The later sentence about priority is mostly redundant with the schema enum, but it is brief and does not significantly hurt clarity. Overall it is efficient.

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 7 parameters, no annotations, and no schema descriptions, the description leaves important gaps: it does not explain 'instruction' or 'source_note', does not describe persistence semantics, and does not differentiate from sibling record_* tools. An output schema exists, but input behavior and selection context are still incomplete.

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

Parameters3/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. It mentions task, priority, deadline, constraints, and follow-up as content of an advisor requirement, adding some meaning beyond the schema. However, it does not clarify the key 'instruction' parameter or 'source_note', and the priority enumeration merely duplicates the schema.

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 uses a specific verb ('Persist') and resource ('structured advisor requirement'), and clearly scopes the content to tasks, priority, deadlines, constraints, and follow-ups that must appear in later reports. It distinguishes this tool from sibling record_* tools by tying it to the ResearchTwin Agent's interpretation of an advisor message.

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 gives clear context for when to use the tool: after the ResearchTwin Agent has interpreted an advisor message, and for requirements that must appear in later reports. It does not explicitly name alternative tools or state when not to use it, but the context is strong enough to guide selection.

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

record_candidate_intelligenceRecord candidate intelligenceA

Record a newly discovered paper, repository, web item, advisor lead, or other external candidate that may be relevant to the project. This does not validate or adopt it as project knowledge. source_type must be one of: advisor, github, news, other, paper, web.

NameRequiredDescriptionDefault
titleYes
statusNodiscovered
summaryYes
user_noteNo
confidenceNo
source_urlNo
source_typeYes
relevance_reasonYes
related_project_issueNo

Output Schema

NameRequiredDescription
recordNo
statusYes
createdNo
messageNo
candidate_idYes
record_statusNo
existing_candidate_idNo

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It usefully states that the tool does not validate or adopt the candidate as project knowledge, but it does not describe side effects, persistence behavior, return shape, or error conditions. This is partial transparency, not full.

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 two sentences with no filler. The primary action and scope are front-loaded, and the non-validation clarification is placed immediately after, making the core intent easy to parse.

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?

For a 9-parameter intake tool with no parameter descriptions and no annotations, the description is too sparse. It explains the high-level purpose but leaves most parameters and workflow nuances unexplained. The presence of an output schema does not compensate for the missing input semantics.

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, but it only restates the source_type enum and gives general candidate categories. It adds no meaningful guidance for required fields like title, summary, relevance_reason, or for optional fields like confidence, source_url, and status.

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 uses a specific verb ('record') with a clear resource: newly discovered external candidates such as papers, repositories, web items, and advisor leads. It also distinguishes recording from validation/adoption, making the tool's scope unambiguous.

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 indicates when to use the tool: for newly discovered candidates that may be relevant, not for validating or adopting knowledge. It does not explicitly name alternative tools like update_candidate_status or record_research_activity, but the intake-oriented framing is clear enough.

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

record_research_activityRecord research activityB

Record a concrete research activity when the user reports completed work, experiments, reading, problems, results, or next steps. This persists research progress for later retrieval and reporting. activity_type must be one of: analysis, coding, data_collection, debugging, experiment, meeting, other, paper_reading, writing.

NameRequiredDescriptionDefault
dateNo
tagsNo
titleYes
resultNo
sourceNo
problemNo
next_stepNo
descriptionYes
activity_typeYes

Output Schema

NameRequiredDescription
recordYes
statusYes
activity_idYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It does state that the tool 'persists research progress for later retrieval and reporting,' which communicates a write/save side effect. However, it does not describe idempotency, overwriting, date defaults, permissions, or other side-effect nuances, so it is only partially transparent.

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 brief and front-loaded with the action and trigger conditions. The activity_type enum listing adds length and duplicates schema information, but the overall structure is clear and easy to scan, so it remains efficient.

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 description provides enough context to understand the core purpose and invocation trigger, and an output schema exists so return-value documentation is not required. Still, with nine parameters, zero schema description coverage, no annotations, and no differentiation from similar record_* tools, the definition is not fully complete for an agent deciding exactly what to populate.

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 parameter meaning, but it only lists the activity_type enum values that are already present in the schema. It alludes to problems, results, and next steps as recorded content, but it does not explain title, description, date, source, tags, or the semantics of optional fields, leaving significant gaps.

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 clearly states the tool records a concrete research activity and lists the input scenarios (completed work, experiments, reading, problems, results, next steps). It is distinct from list_research_activities and other record_* siblings in intent, but it does not explicitly contrast itself with those siblings, so it stops 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 Guidelines4/5

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

The description explicitly says to use this tool 'when the user reports completed work, experiments, reading, problems, results, or next steps,' providing concrete trigger conditions. It does not mention when not to use it or point to alternative tools, so it misses the exclusion aspect required for a 5.

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

record_research_intelligence_briefRecord research intelligence briefC

Persist an Agent-generated research intelligence brief; this is a communication artifact, not project knowledge.

NameRequiredDescriptionDefault
titleYes
brief_typeYes
period_endYes
period_startYes
project_nameYes
trigger_typeNomanual
candidate_idsNo
brief_markdownYes
search_queriesNo
executive_summaryYes

Output Schema

NameRequiredDescription
briefYes
statusYes
createdNo
updatedNo
record_statusNo

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior itself. 'Persist' signals a write operation, and 'communication artifact, not project knowledge' adds some storage-context clarity. However, it does not disclose whether the write is idempotent, what happens on duplicate periods, prerequisites, authorization needs, or how the artifact relates to later listing/retrieval.

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 front-loaded sentence with no filler. Both the core purpose and the important 'not project knowledge' distinction earn their place, making this appropriately concise.

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?

This is a 10-parameter, 7-required-field write tool with no annotations and no schema descriptions. A one-sentence description stating only that it persists a communication artifact is far from sufficient to guide an agent on how to construct the brief, set the period, or populate the optional fields. Some context exists, but major gaps remain.

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% and the description provides no parameter-level meaning at all. Properties like brief_markdown, candidate_ids, search_queries, and trigger_type remain unexplained, and the description does not compensate for the missing 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 states a clear action and resource: 'Persist an Agent-generated research intelligence brief.' The added clause 'this is a communication artifact, not project knowledge' helpfully positions the tool against the project-knowledge siblings, though it does not explicitly differentiate it from other record_* 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 alternatives. The phrase 'not project knowledge' implies a boundary against prepare_project_knowledge-style tools, but it does not mention record_research_activity, generate_research_report, or list_research_intelligence_briefs, nor does it provide any positive selection criteria.

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

search_external_researchSearch external researchA

Search public arXiv and GitHub sources and return raw normalized results; nothing is persisted or promoted.

NameRequiredDescriptionDefault
sortNorelevance
queryYes
sourcesNo
limit_per_sourceNo

Output Schema

NameRequiredDescription
sortYes
queryYes
statusYes
resultsYes
sourcesYes
source_errorsYes
limit_per_sourceYes

TDQS

A4/5.0
Behavior4/5

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 successfully communicates that the tool has no persistence or promotion side effects, which is a key safety-relevant trait. It does not mention rate limits, authentication, or external API variability, but the core side-effect profile is clearly disclosed.

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 a single focused sentence with no filler. The main purpose and the key behavioral constraint are front-loaded, making it easy for an agent to parse quickly.

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 description covers the external, non-persistent nature and the source scope, and the output schema exists to cover return values. However, it lacks explicit parameter semantics and usage routing relative to sibling tools, leaving an agent to infer some details from the schema and defaults. It is adequate but not 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%, so the description needed to compensate by explaining parameter meanings. It does not: it only names arXiv and GitHub in the tool behavior, not how 'sources', 'sort', or 'limit_per_source' behave. The parameter names and defaults are self-explanatory to some degree, but the description adds no parameter-specific value.

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 uses a specific verb ('Search'), identifies the resource ('public arXiv and GitHub sources'), and clarifies the output ('raw normalized results'). It also explicitly states 'nothing is persisted or promoted', which distinguishes it from sibling record/list tools. This is far from a tautology.

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 the tool is for external exploration with transient results, which signals when to use it over recording or internal reporting tools. However, it does not explicitly name alternatives or state when-not-to-use conditions, so it stops short of a full routing guide.

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

sync_project_knowledge_to_bailianSync project knowledge to BailianB

Synchronize prepared project knowledge after explicit user confirmation.

NameRequiredDescriptionDefault
knowledge_idYes
confirm_writeYes

Output Schema

NameRequiredDescription
statusYes
knowledgeYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavior disclosure. It indicates a write/sync operation and a confirmation requirement, but it does not disclose what synchronization actually changes, whether it overwrites existing Bailian data, whether it is reversible, or what happens if confirm_write is false. This is a significant gap for a potentially mutating tool.

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 sentence with no filler. It front-loads the action, names the resource, and includes the important confirmation condition. Every word 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?

Despite an output schema, the tool lacks annotation coverage and schema-level parameter descriptions. The description is too thin to support correct invocation: it omits the required confirmation semantics, the target behavior in Bailian, and the relationship to prepare_project_knowledge. It is minimally viable but not contextually 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%, so the description should compensate, but it only loosely hints at knowledge_id through 'prepared project knowledge' and at confirm_write through 'explicit user confirmation.' It never clearly defines the semantics of either parameter or states that confirm_write must be true for execution to proceed.

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 specific verb and resource: 'synchronize prepared project knowledge' to Bailian, and the phrase 'prepared' distinguishes it from preparation-oriented siblings like prepare_project_knowledge. It is clear enough for an agent to identify the tool's core function, though it does not explicitly name the sibling it is not.

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 phrase 'after explicit user confirmation' implies a precondition, but the description gives no explicit when-to-use or when-not-to-use guidance and does not mention alternating tools. It leaves the relationship to prepare_project_knowledge and list_project_knowledge to inference rather than stating it.

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

update_candidate_statusUpdate candidate intelligence statusA

Advance a candidate through discovered, shortlisted, validated, promoted, or rejected. The lifecycle is strict: discovered -> shortlisted/rejected, shortlisted -> validated/rejected, validated -> promoted/rejected; promoted and rejected are idempotent only. Promotion records user approval and evidence but does not write to a knowledge base.

NameRequiredDescriptionDefault
statusYes
user_noteNo
candidate_idYes
promotion_reasonNo
validation_evidenceNo

Output Schema

NameRequiredDescription
recordYes
statusYes
candidate_idYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations present, the description carries the full disclosure burden and does meaningful work: it reveals that transitions are strict, that promoted and rejected are idempotent terminal states, and that promotion records approval/evidence without writing to a knowledge base. It does not cover error behavior or reversibility, but the key side effects are exposed.

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 three tight sentences: the action is front-loaded, transitions are compactly diagrammed with arrows, and the idempotency/KB side-effect are the only extra details. No filler or repeated schema information.

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 state machine is the core complexity of this tool and it is fully specified, from allowed transitions to terminal state idempotency. The existence of an output schema covers return-value documentation. Slight gaps remain around whether same-status updates are allowed for non-terminal states and how user_note behaves, but the description is strong enough for correct calls in most scenarios.

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

Parameters3/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 undocumented parameters. It clarifies the status enum by encoding transition rules and links promotion_reason/validation_evidence to the approval-and-evidence note. However, user_note is never mentioned, and the mapping from 'user approval' to specific parameters is implicit rather than explicit.

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 precise action: 'Advance a candidate through discovered, shortlisted, validated, promoted, or rejected,' naming both the resource (candidate) and the state-machine operation. It also supplies the full status vocabulary, which distinguishes it from sibling tools like record_candidate_intelligence that target candidate facts rather than lifecycle progress.

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 states when to use the tool: whenever a candidate must move along the strict lifecycle. It spells out the allowed transitions and terminal states, so an agent knows valid calls are constrained by the current status. It does not explicitly name alternative tools for non-status updates, but the lifecycle rules make the tool's scope clear.

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

update_project_statusUpdate research project statusB

Persist the current research project stage, completed work, pending work, risks, and important decisions. Use merge mode to preserve and de-duplicate existing history, or replace mode for an intentional full status replacement. merge_mode must be one of: merge, replace.

NameRequiredDescriptionDefault
risksNo
merge_modeNomerge
project_nameYes
current_stageYes
pending_tasksNo
completed_tasksNo
important_decisionsNo

Output Schema

NameRequiredDescription
statusYes
merge_modeYes
project_statusYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It does reveal important behavior around merge mode (preserving and de-duplicating history) and replace mode (intentional full replacement). However, it does not disclose side effects for unknown projects, whether fields are overwritten individually or as a whole, or any broader impact beyond the status record.

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 compact and front-loaded: it states what is persisted, then explains mode behavior. The third sentence about merge_mode values is slightly redundant with the schema enum, but still useful for quick agent parsing without inspecting the schema.

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?

For a 7-parameter mutation tool with no annotations, the description is functional but not complete. It lacks guidance on whether the project must already exist, how to format list-like fields (string vs array), and how replace mode affects unspecified optional fields. The presence of an output schema helps, but the description alone leaves notable call-semantics gaps.

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

Parameters3/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. It does connect the main fields (stage, completed work, pending work, risks, decisions) to their conceptual meanings and explicitly states merge_mode values. Yet it does not clarify the string-or-array flexibility, the meaning of null defaults, or the semantics of project_name matching, which the schema alone does not fully explain either.

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 clearly specifies a concrete action ('Persist') and the resource ('current research project stage, completed work, pending work, risks, and important decisions'). It is distinguishable from related read tools like get_project_status, though it does not explicitly differentiate itself from update_candidate_status or record_research_activity.

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 gives useful guidance on when to use merge mode versus replace mode, including the de-duplication and full-replacement behaviors. However, it does not explain when this tool should be chosen over sibling tools such as record_research_activity or get_project_status, leaving some usage context implied rather than explicit.

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.

  1. 16 tool updatesv0.1.0
    • First observedgenerate_research_report
    • First observedget_project_status
    • First observedget_research_context
    • First observedlist_candidate_intelligence
    • First observedlist_project_knowledge
    • First observedlist_research_activities
    • First observedlist_research_intelligence_briefs
    • First observedprepare_project_knowledge
    • First observedrecord_advisor_instruction
    • First observedrecord_candidate_intelligence
    • First observedrecord_research_activity
    • First observedrecord_research_intelligence_brief
    • First observedsearch_external_research
    • First observedsync_project_knowledge_to_bailian
    • First observedupdate_candidate_status
    • First observedupdate_project_status

TDQS

A3.5/5.0

Scored across 16 tools

Disambiguation4/5

Most tools target distinct entities and actions, and the record_*/list_*/update_* prefixes help separate workflows. There is some potential confusion between record_research_activity and update_project_status, or between candidate intelligence and intelligence briefs, but the descriptions clarify the differences.

Naming Consistency5/5

All tool names use a consistent snake_case verb_noun pattern, such as record_*, list_*, update_*, get_*, and sync_*. The naming is predictable and makes the purpose of each tool immediately understandable.

Tool Count4/5

At 16 tools, the server is slightly above the typical 3-15 well-scoped range, but the tools map to a broad but coherent set of research workflows: tracking, reporting, candidate intelligence, and knowledge sync. Each tool has a defined role, so the count is reasonable.

Completeness4/5

The tool surface covers the main lifecycle stages: recording activities and status, managing advisor instructions, triaging candidates, generating reports, and syncing project knowledge. Minor gaps exist, such as no update/delete for activities or briefs, but these feel like intentional append-only patterns rather than blocking omissions.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables MCP agents to maintain durable, evidence-aware project knowledge, retrieve precise excerpts on demand, and track decisions, conflicts, and revisions across sessions.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to maintain a persistent identity and structured memory—including reasoning patterns, episodic history, and knowledge—while exposing procedures for managing that memory over MCP.
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables agents to persistently record experiences, recall related episodes, run VRS convergence, and manage bounded world-state through MCP tools.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to connect to the OnTime personal workbench via MCP to manage tasks, projects, and goals through natural language, including creating sprint projects, logging progress, and querying workbench state in real time.
    1
    -