Skip to main content
Glama
cholhwanjung

Claude Desktop Research MCP Server

by cholhwanjung

Research MCP

개인용 연구 에이전트 — arXiv 검색·인용 그래프·멀티모달 논문 위키·시각화를 자연어 한 줄로 실행. Claude Desktop (MCP)self-hosted 웹 채팅 앱 두 가지 인터페이스 사용.


주요 기능

1. 검색과 인용 그래프

  • arXiv 검색 — 키워드/카테고리로 검색하고 결과를 최근 1년 / 3년 / 5년 / 그 이상 으로 자동 분류.

  • 인용 그래프 — 특정 논문의 references / citations를 가져와 정렬.

    • sort="count" — 절대 인용수 순.

    • sort="velocity"citation velocity (citations / (현재연도 − 발행연도)) 순. 오래된 논문이 절대 인용수만으로 항상 이기는 문제를 보정해 최신 흐름에 가까운 결과를 보여준다.

  • 인용 문맥 (citation contexts) — Semantic Scholar의 contexts API로 왜 인용했는지 본문 스니펫을 수집.

2. 멀티모달 논문 위키 (Obsidian vault)

한 번 ingest한 논문은 폴더형 구조로 vault에 저장된다.

vault/papers/blip-2/
├── blip-2.md         # frontmatter + TL;DR / Methods / Findings / References (파일명 = 폴더 slug)
└── figures/
    ├── fig_1_overview-of-blip-2s-framework.png
    ├── fig_2_q-former-architecture.png
    └── ...
  • PDF 원본 보관vault/pdfs/<arxiv_id>.pdf 에 영구 저장. 동일 ID 재요청 시 다운로드 skip.

  • Vision 기반 figure / table 추출 — Gemini Vision으로 figure·table 영역을 crop한다. (GOOGLE_API_KEY 필요)

  • 안정 hub 분류 — 큐레이트된 hub 노트(e.g. topics/*.mdLLM, VLM, Diffusion, Agent-Reasoning)에 1–3개로 매핑.

  • 양방향 wikilink[[clip]] 같은 wikilink가 자동 누적.

  • vault 리트리벌wiki_search로 "질문 → 관련 노트"를 어휘 seed + [[wikilink]] 이웃 확장으로 검색. vault 전체를 로드하지 않고 관련 노트만 추린다.

  • 종합 통찰 노트 — 세션에서 논문을 가로질러 얻은 통찰을 insight-capture 스킬로 notes/<slug>.md에 누적 (승인 게이트).

3. 시각화: Mermaid + Obsidian

한 anchor 논문을 중심으로 인용 흐름을 카드 그래프 로 출력.

  • Mermaid graph — 응답에 즉시 임베드되어 Claude Desktop / GitHub / Obsidian이 그대로 렌더.

  • Mermaid 노트 저장 — 같은 다이어그램을 vault/graphs/<slug>.md 노트로도 저장. Obsidian이 노트를 열면 그래프로 렌더 (auto-layout이라 노드 겹침 없음).

  • 통합 인용 네트워크 export — vault 전체 논문의 인용 관계를 공통 노드(논문·hub) 기준 하나의 그래프로 통합해 CSV(Cosmograph)/GEXF(Gephi Lite)로 export. 엣지 200 이하 소형이면 graphs/unified.md Mermaid도 함께 산출.

graph LR
  anchor["BLIP-2 (2023, cited 1234)"]
  refs["CLIP (2021)"] --> anchor
  anchor --> cite1["LLaVA (2023)"]
  anchor --> cite2["InstructBLIP (2023)"]

4. 일일 인기 논문 피드

  • Hugging Face Daily Papers — 하루 단위 인기 논문을 upvote 순으로 정렬. daily-digest 스킬로 digests/<YYYY-MM-DD>.md 노트에 자동 누적.

  • 테크 블로그 다이제스트 — Anthropic·OpenAI·Google Gemini·DeepMind 블로그의 신규 포스트를 본문 기반(차단 소스는 RSS)으로 몇 문단 요약해 digests/blogs-<date>.md에 누적. seen 상태를 추적해 실행 시마다 미요약분만 소스별 최대 5개씩 처리.


Related MCP server: Research Paper Ingestion MCP Server

아키텍처

sources/  →  analysis/  →  wiki/  →  tools/  ─┬─  server.py            (Claude Desktop · MCP)
 (fetch)     (rank/group)  (vault)  (24 tool)  │
                                               └─  agent/ → api/ → web/  (웹 앱 · SSE 채팅)
  • 단방향 import — 위 화살표 방향으로만 의존. 역방향 금지.

  • tool은 한 곳에 정의tools/*.py의 함수를 MCP(server.py)와 에이전트(agent/)가 동일하게 재사용한다. 같은 20개 도구가 두 transport로 노출된다.

  • 에이전트 — Pydantic-AI. provider-prefixed 모델 문자열(anthropic: / openai: / google:)로 멀티 provider 전환. 스킬 정의를 system prompt로 로드.


MCP Tool 카탈로그 (20)

각 tool은 한 카테고리에만 속하도록 직교적으로 설계 — 호출 순서를 가진 워크플로우는 아래 스킬 로 묶인다.

카테고리

Tool

fetch

search_papers, get_paper_by_id, get_hf_daily_papers, get_citation_contexts

graph

get_references_by_citations, get_citations_by_citations

artifact

download_paper, read_paper, extract_paper_figures, extract_paper_tables, prune_paper_figures, prune_paper_tables, render_paper_page

wiki

wiki_read_note, wiki_write_note, wiki_list, wiki_list_hubs, wiki_search, wiki_link

viz

build_citation_graph


스킬 (워크플로우)

자연어 한 줄로 호출 가능한 사전 정의 워크플로우 (도구 호출 시퀀스).

스킬

트리거 예시

하는 일

paper-ingest

"이 논문 ingest", "BLIP-2 위키에 추가"

메타·PDF·figure·table·요약을 한 번에 vault에 누적. 분야를 기존 hub에 매핑.

citation-analysis

"BLIP-2 흐름 보여줘", " 인용 분석"

anchor 1편 중심으로 refs/cites를 hub로 분류 + cited_for 채우기 + 시각화. vault 영구 누적은 사용자 승인 게이트.

daily-digest

"오늘 트렌딩 논문", "daily digest"

HF Daily를 받아 digests/<date>.md 에 정리, 오늘의 흐름 요약.

wiki-lint

"위키 점검", "vault 정리"

vault 정합성 점검 — orphan·깨진 링크·누락 교차참조·stale hub·노트 간 모순 스캔 → 승인 게이트 diff.

insight-capture

"이 통찰 저장", "notes에 정리"

논문을 가로질러 종합한 통찰을 notes/<slug>.md에 누적 (승인 게이트).

tech-blog-digest

"테크 블로그 요약", "blog digest"

Anthropic·OpenAI·Gemini·DeepMind 신규 포스트를 본문 기반 요약해 digests/blogs-<date>.md에 누적 (소스별 최대 5, 자동 이월).

self-improve

"회고 반영해줘", "self-improve"

세션 회고·반복 실패를 분석해 CLAUDE.md/docs/* diff 제안 (승인 게이트, 메타 레이어).


설치

요구사항

  • Python >=3.10

  • uv (의존성 관리)

  • Obsidian (vault·그래프를 보기 위해 — 권장)

uv sync

플러그인 설치 (권장 — Claude Desktop / Claude Code)

/plugin marketplace add cholhwanjung/research-mcp
/plugin install research-mcp@research-mcp

활성화(enable) 시 아래를 프롬프트로 입력한다. secret은 repo가 아니라 keychain에 저장된다.

설정

설명

vault_path

vault 루트 (예: /Users/you/Documents/research-wiki). 비우면 ~/Documents/research-wiki

google_api_key

Gemini Vision — figure/table 추출용. 없으면 멀티모달 skip, 텍스트 요약만

ss_api_key

Semantic Scholar API key (선택) — rate-limit 완화

요구사항: uv가 설치돼 있어야 한다 (플러그인이 server.py를 uv로 기동). 첫 기동 시 의존성 sync가 한 번 돈다(네트워크 필요, 수십 초). 업데이트는 /plugin marketplace update 후 재설치.

Claude Desktop MCP 설정 (수동 — 대안)

플러그인 대신 MCP 서버만 직접 등록하는 방법. 이 경로는 스킬을 포함하지 않는다 (플러그인은 6개 스킬까지 번들). tool만 필요할 때 사용.

~/Library/Application Support/Claude/claude_desktop_config.json 에 추가:

{
  "mcpServers": {
    "research": {
      "command": "uv",
      "args": ["--directory", "/path/to/research-mcp", "run", "python", "server.py"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/Users/you/Documents/research-wiki",
        "GOOGLE_API_KEY": "<Gemini Vision — figure/table 추출용>",
        "SS_API_KEY": "<optional Semantic Scholar API key>"
      }
    }
  }
}

변수

기본값

설명

OBSIDIAN_VAULT_PATH

~/Documents/research-wiki

노트·PDF·figure 저장 vault 루트

PDF_PATH

$OBSIDIAN_VAULT_PATH/pdfs

PDF 원본 저장 위치

GOOGLE_API_KEY

(없음)

Gemini Vision — figure/table bbox 추정에 필요

SS_API_KEY

(없음)

Semantic Scholar API key. 설정 시 rate-limit 완화


웹 앱 (self-hosted) — 멀티 LLM 채팅

Claude Desktop 외에, 같은 도구·워크플로우를 웹 채팅 UI로도 쓸 수 있음.

구성

  • api/ — FastAPI + SSE 백엔드. /chat(스트리밍) · /skills · /health. Bearer 토큰 인증(옵션).

  • agent/ — Pydantic-AI 에이전트. MCP의 tool 재사용 + multi-provider.

  • web/ — Next.js 채팅 프론트 (스트리밍 + 모델 선택기 + 토큰 입력).

실행 — 한 번에 (로컬, 추천)

cp .env.example .env       # 쓸 provider 키만 채우기 (예: GOOGLE_API_KEY)
./run-web.sh               # .env 의 RESEARCH_MODEL (미설정 시 Claude)
./run-web.sh google        # Gemini  — GOOGLE_API_KEY 만 있으면 됨 (Anthropic 키 불필요)
./run-web.sh openai        # GPT-4o  — OPENAI_API_KEY
./run-web.sh anthropic     # Claude  — ANTHROPIC_API_KEY

→ 백엔드(:8000)+프론트(:3000) 동시 기동. 접속: http://localhost:3000

  • 인자로 고른 모델이 백엔드 기본값(RESEARCH_MODEL)으로 적용 (웹 UI에서 메시지별 전환도 가능). provider:model 직접 지정도 됨 (예: ./run-web.sh google:gemini-2.0-flash).

  • 선택한 provider 키가 없으면 부팅 전에 안내하고 멈춤 (lifespan 에러 회피).

  • Ctrl-C 한 번으로 둘 다 종료. 최초 1회 uv sync·npm install 자동, Docker 불필요.

  • .env는 백엔드(core/config.py)가 자동 로드, 프론트 기본 API_URL은 http://localhost:8000.

사용: 우상단 토큰칸에 RESEARCH_API_TOKEN 값 입력(설정 시) → 채팅. 예: "BLIP-2 위키에 추가해줘" → 채팅에 tool 실행 흐름 표시 → Obsidian을 열어 노트·그래프 확인.

실행 — Docker (self-hosted 배포)

cp .env.example .env        # provider 키 + VAULT_HOST_PATH 채우기
docker compose up --build   # 백엔드 → http://localhost:8000
  • VAULT_HOST_PATHDocker 파일공유 대상 경로여야 한다 (홈 하위 ~/Documents/...는 기본 공유됨; /tmp 등은 공유 안 될 수 있어 컨테이너가 안 뜬다).

  • 세션 SQLite는 named volume(sessions)에 저장 — vault 바인드마운트와 분리해 안정성 확보.

  • 프론트는 컨테이너에 없음 → 아래 "수동 실행"의 프론트 명령으로 별도 기동.

수동 실행 (개별 기동, 선택)

run-web.sh 대신 백엔드·프론트를 따로 띄울 때:

uv run uvicorn api.main:create_app --factory --port 8000   # 백엔드
cd web && npm run dev                                       # 프론트(:3000)

백엔드를 비표준 호스트/포트로 띄우면 web/.env.localNEXT_PUBLIC_API_URL=… 지정.

환경 변수 (웹 앱)

변수

설명

RESEARCH_API_TOKEN

설정 시 API 호출에 Authorization: Bearer 강제 (비우면 인증 off)

RESEARCH_MODEL

기본 채팅 모델 (anthropic:… / openai:… / google:…)

ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY

사용할 provider 키

GOOGLE_API_KEY

Gemini Vision — figure/table 추출 (ingest 시)

VAULT_HOST_PATH

(compose) host vault 절대경로 → 컨테이너 /vault


Vault 레이아웃

vault/
├── papers/
│   └── <title-slug>/
│       ├── <title-slug>.md  # frontmatter + 본문 (TL;DR / Methods / Findings / References)
│       └── figures/
│           └── fig_<n>_<caption-slug>.png
├── topics/
│   └── <hub-slug>.md        # 안정 hub — 백링크로 논문이 자동 집계
├── notes/
│   └── <slug>.md            # 논문 간 종합 통찰 (insight-capture)
├── digests/
│   └── <YYYY-MM-DD>.md      # 일일 HF Daily 노트
├── graphs/
│   └── <slug>.md            # 인용 흐름 Mermaid 노트 (build_citation_graph)
└── pdfs/
    └── <arxiv_id>.pdf

papers/<title-slug>/<title-slug>.md frontmatter 예:

arxiv_id: 2301.12597
title: "BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders"
year: 2023
citation_count: 1234
citation_velocity: 411.3
topics: [vlm, multimodal]
references:
  - paper_id: 2103.00020
    topic: clip-contrastive
    cited_for: "BLIP-2의 frozen 이미지 인코더 초기화 근거로 인용"
figures:
  - file: figures/fig_1_overview.png
    caption: "Figure 1: BLIP-2 architecture overview."

기술 스택

영역

선택

MCP 서버

FastMCP (stdio)

에이전트

Pydantic-AI — multi-provider (Anthropic / OpenAI / Google)

백엔드

FastAPI + SSE (스트리밍)

프론트

Next.js 16 · React 19 · Tailwind CSS v4

추출

PyMuPDF (PDF) + Gemini Vision (figure/table bbox)

저장

Obsidian vault (Markdown), SQLite (대화 세션)

데이터

arXiv · Semantic Scholar · Hugging Face Daily Papers

캐시

디스크 캐시 — 동일 paper_id 재요청은 0 네트워크


사용 예시

> BLIP-2 위키에 추가해줘
→ paper-ingest → papers/blip-2/ 생성, figure·table 추출·선별, 요약 + hub 매핑

> BLIP-2 흐름 보여줘
→ citation-analysis → refs/cites를 hub로 분류 + cited_for 채움
  → 사용자 승인 게이트 → vault 누적 + Mermaid 시각화(`graphs/` 노트) → Obsidian 그래프로 확인

> 오늘 트렌딩 논문 정리해줘
→ daily-digest → digests/2026-06-29.md 저장

라이선스

개인용 프로젝트.

Available Tools

19 tools
build_citation_canvasA

anchor + 토픽 그룹으로 시각화 산출. Mermaid는 응답, Canvas는 vault에 저장.

방향: references → anchor → citations (인과 흐름).

Args: anchor: {arxiv_id, title, year, citation_count, citation_velocity?}. ref_groups: anchor가 인용한 논문들의 동적 토픽 그룹. [{"topic": str, "papers": [{arxiv_id, title, year, citation_count}, ...]}]. cite_groups: anchor를 인용한 논문들의 동적 토픽 그룹. 동일 스키마. slug: vault/canvases/<slug>.canvas 파일명. 비우면 anchor.arxiv_id 사용. direction: Mermaid 방향 ("LR" 기본, "TD"·"RL"·"BT" 가능).

ParametersJSON Schema
NameRequiredDescriptionDefault
anchorYes
ref_groupsYes
cite_groupsYes
slugNo
directionNoLR

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries full transparency weight. It discloses behavioral traits: output is saved as a Canvas file in the vault, Mermaid is returned, and the slug defaults to anchor.arxiv_id. This is sufficiently transparent for a visualization tool.

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 well-structured with a brief purpose statement, a direction clarification, and a clear arg list. It is not overly verbose, though it could be slightly more concise by omitting redundant schema-like details already covered.

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?

Given the complexity (nested objects, 5 params, output schema exists) the description covers the main aspects: flow direction, file saving, and arg defaults. It does not explain return values explicitly, but output schema covers that. Minor missing detail on how to retrieve Mermaid output.

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 coverage is 0%, so the description must compensate. It provides detailed structures for anchor (fields), ref_groups, and cite_groups (topic and papers arrays), and clarifies direction options and slug fallback. This adds significant meaning beyond the bare 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 clearly states the tool's purpose: producing a visualization using an anchor and topic groups of references and citations. It distinguishes itself from sibling tools by explicitly mentioning Mermaid (response) and Canvas (vault save), which are unique to this tool.

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 provides parameter details but lacks explicit guidance on when to use this tool versus alternatives like get_citation_contexts or get_citations_by_citations. Usage is implied through the arg descriptions, but no when-not-to-use or comparison is given.

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

download_paperA

arXiv 논문 PDF를 로컬에 다운로드해 두고 경로를 반환합니다. 이미 저장되어 있으면 재다운로드를 skip합니다.

Args: paper_id: arXiv ID (예: "2301.12597"). 'ARXIV:' prefix·버전 접미사 허용.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses the key behavior of caching (skip redownload if already saved) and that it returns a path. Since no annotations are provided, this adds helpful context beyond the schema.

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 concise with two short paragraphs, front-loading the main purpose and caching behavior, followed by parameter details. No redundant sentences.

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

Completeness4/5

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

For a simple one-parameter tool, the description covers the main functionality and parameter details adequately. It does not explain the output schema, but that is acceptable as per guidelines since an output schema exists.

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

Parameters5/5

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

The description adds significant meaning to the single parameter 'paper_id' by providing an example format, noting that prefixes like 'ARXIV:' and version suffixes are allowed. This compensates for 0% schema description coverage.

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

Purpose5/5

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

The description clearly states it downloads arXiv paper PDFs to local storage and returns the file path. It distinguishes itself from siblings like 'read_paper' by focusing on downloading rather than reading or displaying.

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 (when needing a local PDF) and mentions caching behavior, but it does not explicitly state when not to use or contrast with sibling tools like 'get_paper_by_id' or 'read_paper'.

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

extract_paper_figuresA

캐시된 PDF에서 caption 매칭된 raster figure를 vault에 저장 (ADR-010, ADR-015, ADR-016).

저장 위치: vault/papers/<slug>/figures/fig_<n>.png. slug 미지정 시 arxiv_id를 fallback (legacy 호환).

Args: paper_id: arXiv ID (예: "2301.12597") — PDF 캐시 검색용. slug: vault 디렉토리명 (title-slug). 비우면 arxiv_id 사용.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It discloses the storage path pattern and fallback behavior for the slug parameter, but does not cover behaviors like overwrite policy, handling of uncached PDFs, or side effects.

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

Conciseness5/5

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

The description is efficiently structured: two sentences for purpose and a clear parameter list. Every line adds value, no redundancy.

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?

Given the tool's simplicity (2 params, output schema provided), the description covers key aspects: what it does, where it saves, and fallback behavior. It lacks error conditions but is sufficient for a focused extraction tool.

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?

With 0% schema description coverage, the description compensates by explaining both parameters: paper_id (arXiv ID for PDF cache lookup) and slug (vault directory name, with fallback). This adds meaningful context beyond the bare 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 clearly states the verb 'save' and the resource 'caption-matched raster figures from cached PDF'. It specifies the storage location and distinguishes the tool from siblings like 'extract_paper_tables' by focusing on figures.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives such as 'prune_paper_figures' or 'get_paper_by_id'. The description mentions ADR references but does not provide usage context or exclusions.

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

extract_paper_tablesA

캐시된 PDF에서 caption 기준 영역 crop으로 table을 vault에 저장 (ADR-018).

저장 위치: vault/papers/<slug>/tables/table_<n>.png. 각 table은 caption + 그 아래 일정 영역을 raster로 렌더해 1 PNG에 보존 (table 본체는 PDF 내부 vector text라 sub-image 분리가 불가능 — 영역 crop이 유일한 방법).

Args: paper_id: arXiv ID. slug: vault 디렉토리명. 비우면 arxiv_id 사용.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool saves to vault, uses region crop, captures caption+area, notes the impossibility of sub-image separation due to vector text, and specifies the naming convention. This provides substantial behavioral context.

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

Conciseness3/5

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

The description includes technical details like ADR-018 and a thorough explanation of the extraction limitation, which adds length. It is structured with bullet points for args, but could be more concise by moving some technical rationale to a note.

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?

Given the tool's complexity (PDF extraction, vault storage) and the presence of an output schema, the description covers storage location, method, limitation, and parameter semantics. It addresses the essential aspects for an agent to use the tool correctly.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It does: paper_id is explained as arXiv ID, slug as vault directory name with default use of arxiv_id. This adds meaning beyond the schema, though the description does not explicitly mention that slug is optional.

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

Purpose5/5

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

The description clearly states the tool extracts tables from cached PDFs based on captions, saves them as PNGs to the vault, and specifies the storage location. It distinguishes from siblings like extract_paper_figures by mentioning the specific method (region crop) and technical limitation (vector text).

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 for extracting tables from cached papers but does not explicitly state when to use this tool versus alternatives like extract_paper_figures or when to avoid it. No context on prerequisites or conditions.

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

get_citation_contextsA

citing_id 논문이 cited_id 논문을 인용한 본문 문맥 스니펫을 반환합니다.

동적 토픽 분석 (ADR-009) 입력으로 사용 — Claude가 컨텍스트 + 초록을 결합해 토픽 태그와 cited_for 노트를 생성합니다.

Args: citing_id: 인용하는 논문 (arXiv ID / DOI / SS sha). cited_id: 인용된 논문.

ParametersJSON Schema
NameRequiredDescriptionDefault
citing_idYes
cited_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/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 burden. It does not disclose whether the tool is read-only, requires authentication, or has side effects. The description only states it returns snippets, with no behavioral guarantees.

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 concise and well-structured, with a two-sentence overview followed by an Args list. Each sentence adds value without redundancy.

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?

Given the tool has an output schema (not shown), the description need not detail return values. It explains the purpose, usage context, and parameters adequately. Missing details like empty result handling or performance are minor given the output schema's expected coverage.

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 input schema has no descriptions (0% coverage), but the description adds meaning by explaining both parameters: citing_id is the citing paper (arXiv ID / DOI / SS sha) and cited_id is the cited paper. This provides necessary context beyond the bare 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 clearly states the tool returns citation context snippets between two papers, specifying the exact resource and action. It distinguishes itself from siblings like get_citations_by_citations by focusing on context snippets rather than citation counts or references.

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 mentions the tool is used as input for dynamic topic analysis (ADR-009), giving a specific use case. However, it does not directly compare with sibling tools or state when not to use it.

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

get_citations_by_citationsA

논문을 인용(citation)한 후속 연구들을 정렬해 반환합니다.

SS citations endpoint는 publicationDate 내림차순으로 응답한다 (인기 논문은 첫 페이지가 인용수 0인 신생 논문으로 가득 차 의미 있는 결과 추출에 다수의 API 호출 필요). 이를 막기 위해 exclude_recent_year=True이면 publicationDateOrYear=:<year-1> 필터로 가장 최근 1년을 제외 — velocity ≥ 10 같은 임계값과 정합 (신생 1년 미만은 누적 인용 시간 부족).

Args: paper_id: arXiv ID (예: "2304.08485"), DOI, 또는 Semantic Scholar ID. top_k: 반환할 상위 논문 수 (기본 20). max_fetch: 최대 수집 citation 수 (기본 1000). sort: "velocity"(기본, ADR-004) 또는 "count". current_year: velocity 기준 연도. None이면 현재. min_velocity: velocity 모드일 때 최소 velocity (기본 10). exclude_recent_year: True면 publication 직전 연도까지로 SS 응답을 제한 (가장 최근 1년 신생 제외, 기본 True).

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
top_kNo
max_fetchNo
sortNovelocity
current_yearNo
min_velocityNo
exclude_recent_yearNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

The description fully discloses key behaviors: default sorting (velocity), the SS endpoint's descending publicationDate order, the effect of exclude_recent_year filtering, and the min_velocity threshold. This is excellent transparency given no annotations.

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 well-structured with a concise overview followed by a bulleted parameter list. The first paragraph is slightly technical but necessary. It is appropriately sized for the complexity.

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

Completeness5/5

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

Given the tool's complexity (7 parameters, sorting logic, filtering), the description covers all essential aspects: purpose, parameter meanings, behavioral quirks, and output context. An output schema exists, so return value details are not needed.

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

Parameters5/5

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

With 0% schema description coverage, the description explains all 7 parameters including defaults, acceptable values (e.g., paper_id formats), and functional effect (e.g., exclude_recent_year removes recent year). This fully compensates for the schema gap.

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

Purpose5/5

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

The description clearly states the tool's action: sorting and returning subsequent studies that cited a paper. It specifies the resource (citations of a paper) and distinguishes it from siblings like get_references_by_citations or get_citation_contexts.

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 explains the issue with the SS API's default sorting and why exclude_recent_year is used, implying when to set that parameter. However, it does not explicitly compare against sibling tools or provide when-to-use/when-not-to-use guidance.

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

get_hf_daily_papersA

Hugging Face Daily Papers를 받아 인기 순으로 반환합니다 (ADR-006 fallback chain).

Args: date: YYYY-MM-DD. 비우면 오늘(UTC). limit: 상위 N개 (기본 10).

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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. It discloses that results are ordered by popularity and includes a default limit, but lacks details on error handling, rate limits, or authentication requirements. The mention of a fallback chain hints at reliability but is vague.

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?

Extremely concise: two sentences in the main description plus two lines for parameters. Front-loaded with the main action, then direct parameter details. No wasted words.

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?

Given the output schema exists and parameters are fully explained, the description is almost complete. It could mention that the tool is read-only or clarify the fallback chain, but these are minor omissions. No major gaps.

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

Parameters5/5

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

Schema documentation coverage is 0%, so the description must fully explain parameters. It clearly specifies the date format (YYYY-MM-DD), that blank defaults to today UTC, and limit meaning top N with default 10. This adds essential meaning beyond the raw 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 clearly states the tool retrieves 'Hugging Face Daily Papers' and returns them in popularity order. This verb+resource combination is specific and distinguishes it from sibling tools like search_papers or get_paper_by_id.

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?

Implied usage is to fetch daily papers sorted by popularity, but there is no explicit guidance on when to use this tool versus alternatives such as search_papers or get_recommended_papers. The cryptic mention of 'ADR-006 fallback chain' is not helpful for decision-making.

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

get_paper_by_idA

논문 ID로 상세 정보를 조회합니다. arXiv ID, DOI, Semantic Scholar ID를 모두 지원합니다.

Args: paper_id: arXiv ID (예: "2301.12597"), DOI (예: "10.48550/arXiv.2301.12597"), 또는 Semantic Scholar SHA ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/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. It states the action (retrieve details) and supported IDs, but does not disclose behavioral traits like authorization requirements, rate limits, or what 'details' include. The output schema likely covers return structure, but the description lacks explicit behavioral context.

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 relatively concise with the main purpose stated first. The 'Args:' section adds necessary detail but is slightly longer than needed. Overall, it is well-structured and front-loaded.

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?

Given the tool has only one parameter and an output schema (not shown), the description adequately covers what the tool does and the parameter formats. It is complete for a simple lookup tool, especially with the presence of an output schema defining the return values.

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 schema provides no description for the paper_id parameter (0% coverage). The description compensates by listing example formats for arXiv ID, DOI, and Semantic Scholar SHA ID, adding meaning beyond the type string alone.

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?

Description clearly states the verb (조회=retrieve) and resource (논문 상세 정보=paper details). It specifies support for multiple ID types (arXiv, DOI, Semantic Scholar SHA), distinguishing it from sibling tools like search_papers which search by query.

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?

Description explains which IDs are supported, implying usage when you have a known paper ID. However, it does not explicitly state when to use this tool over alternatives, such as when to use search_papers instead. The support for three ID types provides good context.

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

get_references_by_citationsA

논문이 참조(reference)한 논문들을 정렬해 반환합니다.

Args: paper_id: arXiv ID (예: "2301.12597"), DOI, 또는 Semantic Scholar ID. top_k: 반환할 상위 논문 수 (기본 20). max_fetch: 최대 수집 reference 수 (기본 500). 대부분 논문은 references가 100 이내라 한 번에 다 가져온다. sort: "velocity"(기본, ADR-004) 또는 "count"(인용수 순). current_year: velocity 계산 기준 연도. None이면 현재. min_velocity: velocity 모드일 때 최소 velocity 임계값 (기본 10). 신생 인용수 낮은 노이즈 논문을 제거한다.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
top_kNo
max_fetchNo
sortNovelocity
current_yearNo
min_velocityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses sorting modes (velocity with ADR-004 reference), threshold for noise removal (min_velocity), and typical reference counts (most papers < 100). This provides good behavioral insight beyond the schema.

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 well-structured with an args list, but slightly verbose with repeated default indicators. It could be more compact while retaining clarity. However, it remains efficient and front-loaded with the main purpose.

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?

Given the output schema exists, the description covers all input parameters and key behavioral traits. It explains velocity computation and practical limits. The absence of error handling or return format details is acceptable given output schema, but some context on expected output could elevate completeness.

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

Parameters5/5

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

Schema description coverage is 0%, but the description adds extensive detail for all 6 parameters: paper_id formats (arXiv, DOI, Semantic Scholar ID), defaults, sort options (velocity vs count), and the significance of min_velocity. This far exceeds baseline compensation.

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

Purpose5/5

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

The description clearly states the tool returns sorted papers referenced by a given paper. It uses a specific verb ('returns') and resource ('referenced papers'), and is distinct from sibling tools like get_citations_by_citations which likely returns citing papers.

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 explains parameters and behavior but does not explicitly state when to use this tool versus alternatives like get_citations_by_citations or search_papers. Usage context is implied but not directly addressed with when-not or alternative suggestions.

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

prune_paper_figuresA

vault의 papers/<slug>/figures/ 에서 keep에 명시된 파일만 남기고 나머지 삭제 (ADR-015, ADR-016).

LLM이 extract_paper_figures 결과의 caption을 보고 핵심 architecture / 결과 plot만 선별 → 선별 결과를 keep으로 넘겨 호출. 나머지 figure는 디스크에서 제거.

Args: paper_id: arXiv ID (정규화 검사용). keep: 남길 figure의 파일 식별자 리스트. "figures/fig_1.png" 또는 "fig_1.png" 둘 다 허용. 빈 리스트면 모든 figure 삭제. slug: vault 디렉토리명 (title-slug). 비우면 arxiv_id 사용 (legacy 호환).

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
keepYes
slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It states the tool deletes files (destructive action) but does not emphasize irreversibility or permission requirements. The behavioral context is adequate but could be stronger.

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 well-structured: a single-sentence summary followed by usage context, then parameter details. It is concise without wordiness, though the parameter list could be slightly shorter.

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?

Given the moderate complexity (3 params, one list) and presence of an output schema (not shown), the description covers the intended workflow and parameter behaviors. It lacks error handling or return value details but is sufficient for common use.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates thoroughly: explains 'paper_id' for normalization, 'keep' allows two formats and empty list means delete all, 'slug' falls back to arxiv_id for legacy compatibility. This adds significant meaning beyond 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 clearly states the tool prunes figures by deleting all except those in 'keep', specifying the directory path. It uses a specific verb and resource, and distinguishes from siblings like 'extract_paper_figures' and 'prune_paper_tables'.

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 provides context: the tool is intended to be called after 'extract_paper_figures' with a selected list of figures. It references ADR-015/016 for context. However, it lacks explicit when-not-to-use guidance compared to alternatives.

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

prune_paper_tablesA

vault의 papers/<slug>/tables/ 에서 keep에 명시된 파일만 남기고 나머지 삭제.

Args: paper_id: arXiv ID. keep: 남길 table 파일 식별자 ("tables/table_1.png" 또는 "table_1.png"). slug: vault 디렉토리명.

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
keepYes
slugNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must carry the full burden. It states the tool deletes files from a vault directory based on a keep list, making the destructive nature clear. However, it does not disclose whether deletions are permanent, if there are rollback options, or any authorization requirements. The explanation is minimal but adequate for a simple file deletion operation.

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: one sentence for overall purpose followed by a bullet-point list of parameters. Every element serves a purpose with no redundancy. The most critical information is 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 tool has 3 parameters, an output schema (not shown), and no nested objects. The description covers the core function and parameter meanings but omits details like default behavior (e.g., what if slug is null?), edge cases (empty keep list), or consequences of the deletion. It is just sufficient for an agent to understand what to expect, but not comprehensive.

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 clearly explains each parameter: paper_id (arXiv ID), keep (list of file identifiers with examples), and slug (vault directory name). This adds meaningful context that the schema lacks, meeting the need for compensation.

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

Purpose5/5

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

The description clearly states the tool's function: prune (delete) table files in a vault directory, keeping only those specified in 'keep'. It identifies the specific resource (papers/<slug>/tables/) and the action (delete all except listed). This distinguishes it from siblings like prune_paper_figures and extract_paper_tables.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., prune_paper_figures). The description does not mention prerequisites, when not to use, or typical scenarios. Usage context is only implicit from the tool name and action.

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

read_paperA

arXiv 논문 PDF를 (필요 시 다운로드 후) 전체 텍스트로 추출합니다.

캐시 hit이면 디스크에서 바로 읽고, miss면 다운로드 + 저장 후 진행.

Args: paper_id: arXiv ID (예: "2301.12597"). max_pages: 추출할 최대 페이지 수. 0이면 전체 (기본: 0).

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description bears the full burden of behavioral disclosure. It mentions caching behavior (cache hit vs miss) and the meaning of max_pages=0 (full text). However, it does not disclose what happens if the PDF is inaccessible, any required permissions, or the format of the extracted text.

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: two sentences for purpose and process, then bullet-style argument explanations. No extraneous words. Every sentence provides essential 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?

Given that an output schema exists (so return values need not be explained), the description covers the main functionality well. It specifies the tool only works for arXiv papers, describes the caching mechanism, and explains both parameters. Minor gap: could mention that extracted text is plain text, but overall sufficient for a simple retrieval tool.

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

Parameters5/5

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

The input schema provides minimal information (no descriptions for parameters). The description adds clear semantics: paper_id is an arXiv ID with an example ('2301.12597'), and max_pages is explained as max pages to extract with 0 meaning full text. This fully compensates for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states it extracts full text from arXiv PDFs with caching. It uses a specific verb ('extract') and identifies the resource ('arXiv paper PDF'). This differentiates it from sibling tools like 'download_paper' which presumably only downloads without extracting text.

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 via the action and input schema but does not explicitly state when to use this tool versus alternatives like 'get_paper_by_id' (which may return metadata) or 'download_paper'. No exclusion criteria or alternative guidance is provided.

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

render_paper_pageA

PDF의 특정 페이지를 통째로 PNG로 렌더해 vault에 저장 (ADR-018 옵션).

ColPali 스타일 page-as-image의 단순 도구. figure crop이 잡지 못한 케이스나 수식이 많은 페이지를 시각적으로 보존하고 싶을 때 사용.

Args: paper_id: arXiv ID. page: 1-base 페이지 번호. slug: vault 디렉토리명. dpi: 렌더 해상도 (기본 150).

ParametersJSON Schema
NameRequiredDescriptionDefault
paper_idYes
pageYes
slugNo
dpiNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description must carry full burden. It explains the action (render and save) and default DPI, but lacks disclosure of potential side effects (e.g., overwriting, vault space usage) or error conditions.

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?

Concise with a clear structure: brief purpose statement followed by bullet-point parameter list. No redundant sentences. Efficient use of space.

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?

Output schema exists, so return values need not be explained. However, the description omits details like error handling, prerequisite checks (paper downloaded?), and vault storage behavior. Adequate but not comprehensive.

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?

Despite 0% schema description coverage, the description's Args section adds meaning to each parameter (e.g., 'arXiv ID', '1-base page number', 'vault directory name'), significantly improving understanding beyond 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?

Description clearly states the tool renders a PDF page as PNG and saves to vault. References ColPali style and distinguishes from figure crop tools, making purpose specific and distinct from siblings like extract_paper_figures.

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?

Explicitly mentions when to use ('figure crop misses' or 'preserve math-heavy pages'), providing context. Does not explicitly state when not to use, but the guidance is clear enough given the sibling tools.

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

search_papersA

주제/키워드로 arXiv에서 논문을 검색합니다. 결과는 관련도 순으로 정렬되며, 최근 1년 / 3년 / 5년 이내로 분류해 반환합니다.

Args: query: 검색 키워드 (예: "vision language model", "contrastive learning") max_results: 최대 논문 수 (기본 20, 최대 50) category: arXiv 카테고리 필터 (예: "cs.CV"). 비우면 전체 검색.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo
categoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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. It reveals that results are sorted by relevance and categorized by time range (1/3/5 years), which adds behavioral context. However, it does not mention rate limits, authentication requirements, or potential side effects, leaving some transparency gaps.

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 concise, with a clear main sentence followed by parameter details. Every sentence contributes useful information. There is no fluff, though it could be slightly more structured with a brief behavioral note upfront.

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?

Given that an output schema exists, the description does not need to detail return values. It adequately covers the input parameters and mentions key behaviors (sorting, categorization). The tool is simple, and this description is sufficient 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.

Parameters4/5

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

The description provides explicit meaning for each parameter in the Args section, including examples and constraints (e.g., max_results default 20, max 50; category example 'cs.CV'). This adds significant value beyond the schema, which has no descriptions (0% coverage).

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

Purpose5/5

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

The description clearly states the tool searches arXiv papers by topic/keyword, with sorting by relevance and categorization by time range. It distinguishes itself from sibling tools like get_paper_by_id or get_recommended_papers, which serve different purposes.

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

Usage Guidelines2/5

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

The description does not provide guidance on when to use this tool versus alternatives, nor does it mention conditions where it should not be used. It only states what it does without contextual usage advice.

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

wiki_listB

vault 안 디렉토리의 노트 목록 (papers/topics/digests 등).

Args: prefix: vault root 기준 디렉토리. 기본 'papers'.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNopapers

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/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 burden. It only states the tool lists notes, but lacks disclosure of behavioral traits like idempotency, error handling (e.g., invalid prefix), or whether listing is recursive.

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—two sentences—with the purpose front-loaded. Every word serves a purpose; no wasted text.

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

Completeness3/5

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

The tool is simple with one parameter and an output schema (not shown). However, additional context about file types, recursion depth, or behavior on missing directories would improve completeness. Adequate for a basic listing tool.

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 description explains the 'prefix' parameter as 'vault root 기준 디렉토리' (directory relative to vault root) with default 'papers', adding meaning beyond the schema's basic type definition. Schema coverage is 0%, so this clarification is valuable.

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 it lists notes in a vault directory, using 'vault 안 디렉토리의 노트 목록' and gives examples (papers/topics/digests). It distinguishes from siblings like wiki_read_note and wiki_write_note, though not from search_papers explicitly.

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?

Usage is implied through the description of listing notes in a directory with a given prefix. No explicit guidance on when to use vs. alternatives or when-not-to-use is provided.

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

wiki_read_noteA

Obsidian 노트 전문 조회 (frontmatter 포함).

Args: slug: arxiv_id ("2301.12597") 또는 vault 상대경로 ("topics/vlm").

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, and description does not disclose behavioral traits such as read-only nature, performance characteristics, or any side effects. Implies read operation but not explicit.

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?

Description is concise with two clear parts: purpose and parameter explanation. Front-loaded with purpose. Could be slightly more structured but overall 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?

Describes input parameter well but missing output format details and usage context. Has output schema but description doesn't reference it. Adequate for a simple tool but could be improved with usage tips.

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

Parameters5/5

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

Parameter 'slug' is well-explained: it can be an arxiv_id or a relative path. This adds significant value beyond the schema's type definition, especially with 0% schema coverage.

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?

Description clearly states the tool retrieves the full text of an Obsidian note including frontmatter. The verb '조회' (retrieve) and resource '노트' (note) are specific. Distinguishes from siblings like wiki_write_note, wiki_list, etc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like search_papers or get_paper_by_id. Does not specify prerequisites or context.

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

wiki_write_noteA

노트 저장 (frontmatter + body). 폴더 자동 생성.

Args: slug: arxiv_id 또는 vault 상대경로. frontmatter: YAML로 직렬화될 dict. MCP 클라이언트가 string으로 보내면 JSON으로 parse 시도 (parse 실패 시 빈 frontmatter로 처리). body: 마크다운 본문.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
frontmatterNo
bodyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Discloses folder auto-creation and frontmatter parsing behavior (JSON string fallback). However, does not mention whether it overwrites existing notes or appends, which is important for a write operation.

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?

Description is concise with a short summary followed by parameter details. The bullet-like listing is efficient, though the parameter descriptions are embedded in prose.

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?

Given an output schema exists (not shown), return values are not required. However, the description lacks error handling details, permission requirements, and behavior on duplicate slugs. It adequately covers basic functionality.

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?

With 0% schema description coverage, the description explains slug as 'arxiv_id or vault relative path', frontmatter as 'dict for YAML serialization with JSON parsing', and body as 'markdown'. This adds meaning but could be more precise (e.g., what is vault?).

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?

Description clearly states it saves a note with frontmatter and body, and auto-creates folders. This is distinct from sibling tools like wiki_read_note and wiki_list, which are read/list operations.

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 this tool is for saving notes, but does not explicitly state when not to use it or provide alternatives. However, the context of sibling tools implies differentiation.

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

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct operation: paper search, metadata retrieval, full-text extraction, PDF download, figure/table extraction and pruning, citation/reference analysis with contexts, daily papers, recommendations, canvas visualization, and vault operations. No two tools have overlapping purposes; even the pair get_citations_by_citations and get_references_by_citations are clearly opposites.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_paper_by_id, extract_paper_figures, wiki_write_note). There are no deviations or mixed conventions, making the API predictable for an agent.

Tool Count4/5

With 19 tools, the server is slightly above the typical well-scoped range (3-15), but each tool addresses a specific need in the research workflow—from paper discovery to vault management. The count feels justified and not excessive.

Completeness4/5

The tool surface covers the complete research lifecycle: search, metadata retrieval, download, full-text reading, figure/table extraction, citation/reference analysis with contexts, recommendations, daily papers, canvas visualization, and vault CRUD. The only minor gap is the absence of a dedicated note deletion tool, but overwriting via wiki_write_note is possible.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables searching and retrieving academic papers from arXiv by various criteria including title, author, and category, with support for extracting full text content from PDFs.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables searching, downloading, and analyzing academic papers from arXiv and Semantic Scholar to extract key insights and citation metrics. It facilitates autonomous knowledge acquisition by processing research findings and integrating them into persistent AI memory systems.
  • A
    license
    A
    quality
    D
    maintenance
    Enables retrieval of academic paper metadata, PDFs, full text, citations, and references by title via Semantic Scholar, arXiv, and other sources.
    6
    1
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cholhwanjung/research-mcp'

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