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 에이전트가 호출하도록 설계되었습니다. 에이전트, 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
ResponsivenessSyncing

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
    -