Skip to main content
Glama

Web Research MCP

AI 에이전트를 위한 고품질 다중 소스 웹 리서치 MCP 서버입니다. Claude Desktop, Hermes, Cursor 또는 모든 MCP 호환 클라이언트에 연결하면 Wikipedia, arXiv, Hacker News, Stack Exchange, Crossref, Brave, Tavily 및 웹의 모든 URL에 대한 프로덕션급 검색 + 페이지 가져오기를 사용할 수 있습니다.

MCP Python License: MIT GitHub stars CI

# One-line install (anywhere on disk)
git clone https://github.com/infinit3labs/web-research-mcp.git
hermes mcp add web-research --command "$(pwd)/web-research-mcp/bin/web-research-mcp"
# 6 of 7 tools work with zero API keys. Add Brave or Tavily to unlock general web search.

왜 이런 서버가 필요한가

대부분의 "웹 검색" MCP 서버는 무작위 핑거프린트를 사용해 헤드리스 브라우저로 Google을 스크래핑하려고 합니다. 이 접근 방식은 지는 전쟁입니다 — 검색 엔진은 며칠 안에 스크래퍼를 감지하고 차단하며, 설령 작동하더라도 LLM이 정리해야 하는 DOM 스프를 얻게 됩니다.

이 서버는 다른 접근 방식을 취합니다 — 에이전트를 위해 만들어진 API와 통신합니다:

기능

방식

실제 웹 검색

Brave Search API, Tavily API (화이트리스트, 순위 기반, 구조화된 JSON)

모든 URL 읽기

Jina Reader (JS 렌더링 + 안티봇 처리, 깔끔한 마크다운 반환)

백과사전식 조회

Wikipedia MediaWiki API

학술 프리프린트

arXiv API

피어리뷰 논문

Crossref API

기술 동향 신호

Hacker News Algolia API

코드 Q&A

Stack Exchange API (모든 사이트)

7개 소스 모두 API 키 없이 작동합니다. Brave 또는 Tavily 키를 추가하면 실시간 일반 웹 검색이 잠금 해제됩니다. 이것이 최고 품질의 접근 방식입니다 — 실제 웹 인덱스 API는 어떤 스크래퍼도 재현할 수 없는 신호(클릭 모델, 신선도, 링크 분석)를 사용하므로 스크래핑보다 더 나은 결과를 얻을 수 있습니다.


Related MCP server: sofya-mcp

빠른 시작

옵션 A — pip install (배포 시)

pip install deep-web-research-mcp
hermes mcp add web-research --command "$(which web-research-mcp)"

이름에 대한 참고 사항. PyPI 배포 이름은 deep-web-research-mcp입니다(pip install deep-web-research-mcp). 하지만 설치 후 PATH의 바이너리는 web-research-mcp입니다(pyproject.toml의 [project.scripts]에 정의됨). 의도적인 설계입니다 — 바이너리는 로컬 런처 bin/web-research-mcp 및 MCP 등록 이름 web-research와 일치합니다. 동일한 패키지, 두 개의 이름.

옵션 B — 소스에서 클론

git clone https://github.com/infinit3labs/web-research-mcp.git
hermes mcp add web-research \
  --command "$(pwd)/bin/web-research-mcp"

프롬프트가 표시되면 7개 도구를 모두 수락하세요. 완료입니다.

옵션 C — Claude Desktop으로 설치

~/Library/Application Support/Claude/claude_desktop_config.json을 편집하세요:

{
  "mcpServers": {
    "web-research": {
      "command": "/Users/code/mcp-servers/web-research/bin/web-research-mcp"
    }
  }
}

옵션 D — Cursor / 모든 stdio MCP 클라이언트로 설치

{
  "mcpServers": {
    "web-research": {
      "command": "/absolute/path/to/web-research-mcp/bin/web-research-mcp"
    }
  }
}

런처 스크립트는 첫 실행 시 venv를 자동 생성하고 pyproject.toml에서 종속성을 설치하며, 구성한 API 키를 위해 web-research.env를 소싱합니다.

2. (선택 사항) 실제 웹 검색을 위한 API 키 추가

cp web-research.env.example web-research.env
$EDITOR web-research.env

키

잠금 해제 기능

무료 티어

BRAVE_API_KEY

search_web 실제 일반 웹 인덱스

월 2,000회 쿼리

TAVILY_API_KEY

search_web + 리서치 최적화 스니펫

월 1,000회 쿼리

JINA_API_KEY

fetch_url 더 높은 가져오기 속도

월 1M 토큰

런처는 매 호출마다 web-research.env에서 키를 읽습니다 — MCP 클라이언트를 재시작할 필요가 없습니다.

3. 사용하기

에이전트에게 다음과 같이 요청하세요:

"Hacker News와 Stack Overflow에서 2026년에 출시된 최고의 MCP 서버를 검색해줘"

"pro_mode를 사용하여 소형 언어 모델의 현재 상태를 리서치해줘"

"https://arxiv.org/abs/2506.06962를 가져와서 방법론을 요약해줘"

"이 주장을 Wikipedia와 arXiv와 교차 검증해줘"


도구

tools/list에 등록된 10개 도구. 도구는 두 계층으로 나뉩니다:

  • 검색 및 가져오기 (7개 도구) — 단발성 조회. 하나의 도구, 하나의 API, 하나의 결과.

  • 딥 리서치 (3개 도구) — 계획, 수집, 구조화된 증거를 만드는 다단계 파이프라인. 단일 검색으로 충분하지 않을 때 사용하세요.

검색 및 가져오기

search_web — 다중 소스 일반 웹 검색

search_web(
    query: str,                  # search query
    max_results: int = 10,       # per source, before dedup (1–30)
    pro_mode: bool = False,      # also fetch top 3 URLs and append excerpts
) -> str

Brave + Tavily 기반으로 URL 정규화 중복 제거 및 교차 소스 점수 부스팅을 제공합니다. BRAVE_API_KEY 및/또는 TAVILY_API_KEY가 필요합니다. 키가 없으면 활성화 방법을 알려주는 명확한 메시지를 반환합니다.

pro_mode: true는 리서치 킬러 기능입니다 — 일반 검색을 실행하고 Jina를 통해 상위 3개 결과를 가져와 콘텐츠를 스니펫으로 추가합니다. 한 번의 호출로 search_web + 3 × fetch_url을 대체합니다.

fetch_url — 모든 페이지의 깔끔한 마크다운

fetch_url(url: str) -> str

Jina Reader를 통해 처리되며, 다음을 수행합니다:

  • JS가 많은 페이지 렌더링 (SPA, React 앱)

  • 대부분의 봇 감지 우회 (Jina는 화이트리스트에 있음)

  • 메타데이터 블록(Title:, URL Source:, Published Time:)이 포함된 깔끔한 마크다운 반환

  • 컨텍스트 창을 보호하기 위해 ~20k자로 잘라냄

search_wikipedia — 백과사전적 근거

search_wikipedia(query: str, max_results: int = 5) -> str

Wikipedia MediaWiki API. 키 없음. 빠름. 정의 및 역사적 맥락에 가장 적합.

search_academic — arXiv 프리프린트

search_academic(query: str, max_results: int = 5) -> str

제목, 저자, 초록 스니펫, 게시 날짜, PDF URL을 반환합니다. 키 없음. CS, 물리학, 수학, 생물학에 가장 적합.

search_news — Hacker News 신호

search_news(query: str, max_results: int = 10) -> str

제목, URL, 포인트, 댓글, 날짜를 반환합니다. 키 없음. 현재 기술 트렌드에 가장 적합.

search_stackexchange — 180개 이상 사이트의 Q&A

search_stackexchange(query: str, max_results: int = 5, site: str = "stackoverflow") -> str

site를 모든 SE 커뮤니티로 설정하세요: serverfault, superuser, askubuntu, math, tex, datascience, ai 등. 키 없음.

search_scholar_meta — Crossref를 통한 피어리뷰 논문

search_scholar_meta(query: str, max_results: int = 5) -> str

제목, DOI, 인용 횟수, 출판사, 출판 날짜, 초록을 반환합니다. arXiv가 다루지 않는 논문(Elsevier, Springer, Wiley, IEEE, ACM)을 포함합니다. 키 없음.

딥 리서치

이 세 도구는 위의 검색/가져오기 기본 요소를 다단계 리서치 워크플로우로 구성합니다. 자체적으로 LLM을 호출하지 않습니다 — 호출 모델이 최종 내러티브 작성의 책임을 유지합니다. 서버의 역할은 검증 가능한 인용과 함께 증거를 계획, 수집, 구조화하는 것입니다.

plan_research — 구조화된 계획만 (가져오기 없음)

plan_research(question: str, depth: str = "standard") -> str  # JSON

JSON 리서치 계획을 반환합니다: 하위 질문, 하위 질문별 권장 소스, 근거, 실행할 쿼리, 예상 검색 및 가져오기 수. 전체 파이프라인을 실행하기 전에 계획을 검토하거나 수정하려는 경우 사용하세요.

  • depth: "quick" (2-3개 하위 질문), "standard" (4-6개), "deep" (6-8개)

extract_evidence — 하나의 URL에서 타겟 인용문 추출

extract_evidence(
    url: str,
    question: str,
    max_passages: int = 5,
) -> str  # JSON

Jina를 통해 URL을 가져오고, 문단으로 분할하고, 질문과의 관련성을 각각 점수화하고, 상위 구절을 반환합니다. 각 구절에는 before / quote / after 컨텍스트, relevance 점수(0-1), offset(소스의 문자 위치)이 포함되어 인용을 독립적으로 검증할 수 있습니다.

이미 특정 소스가 있고 좁은 주장에 대한 증거를 찾으려는 경우 사용하세요.

research — 전체 딥 리서치 파이프라인

research(question: str, depth: str = "standard") -> str  # markdown + JSON

종단 간 리서치 워크플로우:

  1. 계획 — 하위 질문 계획 수립

  2. 팬아웃 — 각 하위 질문에 대해 권장 소스에서 병렬로 검색

  3. 순위 — 전체 계획에서 URL 중복 제거, 소스 인식 복합 점수로 순위 지정 (Wikipedia/arXiv/Crossref 2.0×, Stack Exchange 1.7×, 웹 검색 1.5×, Hacker News 1.0×)

  4. 가져오기 — Jina Reader를 통해 상위 URL 가져오기

  5. 추출 — 품질 기준으로 문단 관련성 점수화 (내비게이션 메뉴, 링크 전용 문단, 푸터 잡음 필터링)

  6. 반환 — 구조화된 ResearchReport 출력:

{
  "question": "What is retrieval augmented generation?",
  "depth": "quick",
  "plan": { "sub_questions": [...], "estimated_searches": 4, ... },
  "citations": [
    { "id": 1, "url": "...", "title": "...", "source": "wikipedia", "quotes": 2 }
  ],
  "evidence": {
    "sq_def": [
      { "citation_id": 1, "relevance": 0.78, "offset": 1234,
        "before": "...", "quote": "...", "after": "..." }
    ]
  },
  "synthesis_template": "# Research Report: ..."
}

synthesis_template은 각 하위 질문당 하나의 섹션과 Sources 테이블이 있는 Markdown 스켈레톤입니다. 모델(당신)이 내러티브를 작성하고 각 [n] 마커를 citations의 해당 항목에 인용합니다. 모든 인용 구절은 문자 offset을 포함하므로 독자가 원본 페이지에서 인용을 검증할 수 있습니다.

depth는 범위를 제어합니다:

  • "quick" — 2-3개 하위 질문, ~6회 가져오기, ~2분

  • "standard" — 4-6개 하위 질문, ~20회 가져오기, ~3분

  • "deep" — 6-8개 하위 질문, ~32회 가져오기, ~5분


아키텍처

┌─────────────────────────────────────────────────────────┐
│                    MCP Client                            │
│  (Claude Desktop, Hermes, Cursor, custom agent)          │
└────────────────────┬────────────────────────────────────┘
                     │ JSON-RPC over stdio
                     ▼
┌─────────────────────────────────────────────────────────┐
│              bin/web-research-mcp                         │
│  • Boots venv (or reuses cached one)                     │
│  • Sources web-research.env for API keys                 │
│  • Execs python -m web_research.server                   │
└────────────────────┬────────────────────────────────────┘
                     ▼
┌─────────────────────────────────────────────────────────┐
│           web_research.server (MCPServer)                 │
│  7 tool functions registered via @app.tool() decorator    │
│  • Pydantic-driven JSON schemas from type hints           │
│  • Single shared httpx.AsyncClient per call              │
│  • Graceful degradation: one bad source ≠ failed call    │
└────────────────────┬────────────────────────────────────┘
                     │ asyncio.gather for parallel fan-out
                     ▼
┌─────────────────────────────────────────────────────────┐
│          web_research.providers (7 backends)              │
│  ┌──────────┐ ┌──────────┐ ┌─────────────┐               │
│  │ brave    │ │ tavily   │ │ jina_fetch  │  ← general web│
│  └──────────┘ └──────────┘ └─────────────┘               │
│  ┌──────────┐ ┌──────────┐ ┌─────────────┐               │
│  │ wikipedia│ │ arxiv    │ │ crossref    │  ← academic   │
│  └──────────┘ └──────────┘ └─────────────┘               │
│  ┌──────────┐ ┌──────────┐                                │
│  │ hn_algolia│ │stackex   │  ← tech signal               │
│  └──────────┘ └──────────┘                                │
│  + merge_results() with URL-canonical dedup               │
└─────────────────────────────────────────────────────────┘

주요 설계 결정

스크래핑 우선이 아닌 API 우선. 이것이 핵심 논지입니다. 모든 소스는 프로그래밍 방식 액세스를 위해 설계된 공식 API입니다. 깨끗한 구조화된 데이터를 얻을 수 있고, IP 차단이 없으며, 사이트 재설계 시 유지 관리 부담이 없습니다.

소스별 오류 격리. 각 공급자는 HTTP 호출을 try/except로 감쌉니다. 한 소스의 429 오류가 전체 검색을 망치지 않습니다 — 부분 결과와 어떤 소스가 실패했는지에 대한 명확한 메시지를 얻을 수 있습니다.

URL 정규화. merge_results()는 중복 제거 전에 추적 파라미터(utm_*, fbclid, gclid, ref)를 제거하고, 호스트의 대소문자를 정규화하며, 프래그먼트를 제거합니다. Brave와 Tavily가 동일한 기사를 반환하면 also_found_in: [brave, tavily]와 부스팅된 점수로 한 번만 표시됩니다.

호출당 공유 HTTP 클라이언트. 연결 풀링(max_connections=20), 적절한 타임아웃(30s 기본, fetch_url은 45s), 자동 리디렉션 추적이 있는 httpx.AsyncClient. stdio MCP 서버는 한 번에 하나의 요청을 처리하므로 호출당 새 클라이언트를 사용하여 깨끗한 상태를 유지합니다.

헤드리스 브라우저 없음. Playwright, Selenium, Puppeteer 또는 프록시 로테이션 제로. 더 작은 공격 표면, 더 작은 종속성, JVM/Chrome 풋프린트 없음. JS 렌더링이 필요한 소수의 사이트는 Jina가 처리합니다.


대안과의 비교

기능

이 서버

SerpAPI MCP

Google 스크래핑 MCP

로컬 검색 MCP

일반 웹 인덱스

✅ Brave/Tavily

✅ Google

⚠️ 취약함

❌

API 전용 (스크래핑 없음)

✅

✅

❌

✅

JS 렌더링 처리

✅ Jina 경유

✅

⚠️ 다양함

❌

학술 소스

✅ arXiv + Crossref

❌

❌

⚠️

기술/Q&A 소스

✅ HN + StackExchange

❌

❌

❌

백과사전

✅ Wikipedia

❌

❌

⚠️

API 키 없이 동작

✅ (7개 중 6개 도구)

❌

✅

✅

인용 친화적 출력

✅

⚠️

❌

⚠️

MIT 라이선스

✅

⚠️

⚠️

⚠️


테스트

.venv/bin/python tests/e2e_protocol.py

실제 서버를 시작하고 실제 MCP initialize + tools/list 핸드셰이크를 수행한 다음 모든 도구에 대해 실시간 JSON-RPC 호출을 실행하여 다음을 검증합니다:

  • 실제 API가 실제 데이터를 반환 (스텁 아님)

  • 각 도구의 응답이 예상된 형태를 가짐

  • 오류 상태가 정상적으로 처리됨

  • 키 없는 search_web가 명확한 "API 키 설정" 메시지를 반환

마지막 실행: 7/7 도구가 실시간 API에 대해 통과.


문제 해결

서버가 시작되지만 MCP 클라이언트에 도구가 표시되지 않음

hermes mcp list(또는 이에 상응하는 명령)를 확인하세요. 서버는 --command로 등록되어 있으므로 Hermes가 런처를 직접 실행합니다. 런처가 실행 가능한지 확인하세요:

chmod +x bin/web-research-mcp

fetch_url이 잘린 콘텐츠를 반환함

설계상 20k 문자 제한은 컨텍스트 윈도우를 보호합니다. 더 긴 문서를 읽으려면 직접 페이지를 가져와 search_web에 발췌문을 전달해 후속 질문을 하거나, 여러 번 호출로 섹션을 나누세요.

search_web이 "웹 결과가 없습니다. API 키가 구성되지 않았기 때문일 가능성이 높습니다."를 반환합니다

web-research.env에 BRAVE_API_KEY 또는 TAVILY_API_KEY 중 하나 이상을 설정해야 합니다. 나머지 6개 도구(Wikipedia, arXiv, HN, Stack Exchange, Crossref, fetch_url)는 키 없이 모두 작동합니다.

Stack Exchange가 400 Bad Request를 반환합니다

커스텀 filter 매개변수를 구성한 경우 API가 알 수 없는 필터 ID를 거부합니다. 기본 필터를 사용하세요(매개변수 생략) — 필요한 것보다 더 많은 필드를 반환하지만 모든 것이 작동합니다. 이 서버는 기본값을 사용합니다.

첫 실행 시 서버가 충돌합니다

stderr에서 실제 traceback을 확인하세요. 일반적인 원인: Python <3.10. python3 --version으로 확인하세요.

속도 제한

각 키 없는 API에는 자체 제한이 있습니다. 제한에 도달하면:

  • Wikipedia: 분당 약 200회 요청, 실제 User-Agent로 자신을 식별하세요(이 서버는 하나를 전송합니다)

  • arXiv: 인증되지 않은 경우 약 3초에 1회 요청, 백오프해 주세요

  • Hacker News Algolia: API 키 사용 시 시간당 10k 요청, 키 없이 5k

  • Stack Exchange: 키 없이 하루 300회 요청(연구 세션에 충분함)

  • Crossref: User-Agent에 mailto를 추가해 주세요(이 서버는 추가합니다), 그러면 폴라이트 풀에서 무제한


개발

프로젝트 구조

web-research-mcp/
├── bin/
│   └── web-research-mcp          # Launcher: venv bootstrap + exec
├── src/web_research/
│   ├── __init__.py
│   ├── server.py                  # MCPServer + 7 @app.tool functions
│   └── providers.py               # 7 search backends + Result dataclass
├── tests/
│   └── e2e_protocol.py            # Real subprocess JSON-RPC test
├── web-research.env.example       # API key template
├── pyproject.toml                 # PEP 621, uv-installable
├── README.md
├── CHANGELOG.md
├── LICENSE
└── .gitignore

새 도구 추가

  1. providers.py에 비동기 함수를 추가하세요:

    async def search_my_source(query: str, max_results: int, client: httpx.AsyncClient) -> list[Result]:
        try:
            # ... your HTTP call ...
        except Exception as e:
            print(f"[my_source] error: {e}", flush=True)
            return []
        return [Result(title=..., url=..., snippet=..., source="my_source")]
  2. server.py에 등록하세요:

    @app.tool(name="search_my_source", description="...", annotations=ToolAnnotations(readOnlyHint=True, openWorldHint=True))
    async def search_my_source(query: Annotated[str, Field(description="Search query")], max_results: Annotated[int, Field(ge=1, le=10, default=5)] = 5) -> str:
        async with await _new_client() as client:
            res = await providers.search_my_source(query, max_results, client)
        return _format_results(query, res, "my_source") if res else f"No my_source results for: {query}"
  3. tests/e2e_protocol.py에 라이브 테스트 케이스를 추가하세요.

  4. README의 Tools 섹션을 업데이트하세요.

코딩 스타일

  • Python 3.10+, async 우선

  • 모든 곳에 타입 힌트; Pydantic이 MCP JSON 스키마를 파생하도록 하세요

  • 모든 provider는 네트워크 호출을 try/except로 감싸고 []로 폴백합니다

  • 호출별 HTTP 클라이언트(_new_client()) — stdio 모드에서 호출 간 공유하지 마세요


기여

PR 환영합니다. 열기 전에:

  1. 라이브 설치에 대해 e2e 테스트를 실행하세요: .venv/bin/python tests/e2e_protocol.py

  2. 새 도구에 대한 테스트 케이스를 추가하세요

  3. providers.py를 MCP 특정 타입과 독립적으로 유지하세요 — 일반 Python 모듈로 재사용 가능해야 합니다

  4. 헤드리스 브라우저나 프록시 로테이션에 의존성을 추가하지 마세요 — 이는 프로젝트의 핵심 주제를 위반합니다

주요 변경 사항의 경우 먼저 이슈를 여세요.


라이선스

MIT — LICENSE 참조.

크레딧

Available Tools

10 tools
extract_evidenceA
Read-only

Fetch a URL and extract the passages most relevant to a specific question. Returns each passage with a short context window before/after, a relevance score, and a character offset into the original page so citations are verifiable. Use this when you want to drill into a specific source for evidence on a narrow claim.

NameRequiredDescriptionDefault
urlYesHTTP(S) URL to read
questionYesWhat you're looking for on this page
max_passagesNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful behavioral detail: each passage includes a context window, relevance score, and character offset for verifiable citations. It does not discuss failure modes or rate limits, but the annotations lower that burden.

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?

Three sentences with no filler: the first states the action, the second describes the output, and the third gives usage guidance. 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?

An output schema exists, so return values need not be fully described, and annotations cover safety. The description covers purpose, output behavior, and usage. It could be more complete by naming sibling alternatives or elaborating on max_passages, but those are minor 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 67%, with url and question already described and max_passages constrained by min/max/default. The description adds the notion of relevance and passage context but does not clarify max_passages behavior beyond what the schema provides. This is a baseline 3 situation.

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 action ('Fetch a URL and extract the passages most relevant to a specific question') and a clear resource. It differentiates itself from sibling tools like fetch_url and search_web by emphasizing evidence extraction with context windows and verifiable citation offsets.

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 final sentence gives an explicit trigger condition: 'Use this when you want to drill into a specific source for evidence on a narrow claim.' This clearly indicates when the tool is appropriate, though it does not explicitly name alternatives 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.

fetch_urlA
Read-only

Fetch any URL and return clean markdown content. Uses Jina Reader which handles JS rendering and bot detection on your behalf, returning readable text. Ideal for reading articles, papers, docs, or blog posts.

NameRequiredDescriptionDefault
urlYesHTTP(S) URL to fetch

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The annotations already declare readOnlyHint=true and openWorldHint=true, and the description adds meaningful behavioral detail: it uses Jina Reader, handles JS rendering and bot detection, and returns readable markdown text. This goes beyond the schema and annotations without contradicting them.

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 concise sentences, each serving a purpose: declaring the core function, explaining the underlying mechanism, and listing suitable use cases. There is no filler or redundancy.

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

Completeness5/5

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

For a single-parameter tool with annotations and an output schema, the description is sufficiently complete. It covers the intended use, the behavior of the underlying reader, and the return format, leaving no critical gap for an agent deciding to invoke it.

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 100%, with the 'url' parameter described as 'HTTP(S) URL to fetch.' The description adds little beyond this, only generalizing to 'any URL,' so it provides no significant additional parameter semantics beyond the schema baseline.

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: 'Fetch any URL and return clean markdown content.' This clearly differentiates fetch_url from the search-oriented siblings by describing a direct retrieval action on an explicit input.

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 clear context, noting it is 'Ideal for reading articles, papers, docs, or blog posts,' and explains that Jina Reader handles JS rendering and bot detection on the user's behalf. It does not explicitly name alternative tools or state when not to use it, but the contrast with search siblings is implicit.

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

plan_researchA
Read-only

Build a structured research plan for a complex question without executing it. Returns the planned sub-questions, the sources recommended for each, and estimated cost (searches + fetches). Use this when you want to review or edit the plan before committing to the full deep-research pipeline. Returns JSON; pass it back to the research tool to execute.

NameRequiredDescriptionDefault
depthNoPlan breadth: 'quick' (2-3 sub-questions), 'standard' (4-6), or 'deep' (6-8).standard
questionYesThe research question

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description's 'without executing it' aligns with that. Beyond annotations, it adds that the tool returns JSON with sub-questions, recommended sources, and cost estimates, and explains the workflow of passing the result to 'research'. This adds meaningful behavioral context without contradicting the annotations.

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

Conciseness5/5

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

The description is four sentences with no filler. The primary purpose is stated first, followed by the return value, the usage scenario, and the follow-up action. Each sentence earns its place and the structure is front-loaded for quick comprehension.

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?

The tool is read-only, has a simple two-parameter schema, and an output schema exists, so the description doesn't need to detail the return structure. It explains the full workflow (plan → review → execute with 'research') and is consistent with the sibling tool set. Nothing essential is missing.

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 100% – both 'question' and 'depth' have descriptions, and 'depth' includes enumerations. The tool description does not introduce any additional parameter semantics beyond that, so it meets the baseline for a fully described schema. It does add a hint that the question should be 'complex', but that's not a parameter-level detail.

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 verb ('Build'), a clear resource ('structured research plan'), and explicitly states it does NOT execute the research. It contrasts with siblings like 'research' by noting it returns a plan for review, differentiating it unambiguously.

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

Usage Guidelines5/5

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

It explicitly states when to use it ('when you want to review or edit the plan before committing') and implicitly when not to use it (when you want execution) by directing the agent to pass the returned JSON to the 'research' tool. This provides clear routing to the correct sibling.

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

researchA
Read-only

Run a full deep-research pipeline on a complex question. Decomposes the question into sub-questions, fans out across multiple sources (Wikipedia, arXiv, Hacker News, Stack Exchange, Crossref, plus Brave/Tavily if keys are configured), fetches the top URLs, extracts the most relevant passages, and returns a structured ResearchReport containing: the plan, a numbered citation manifest, per-sub-question evidence with quotes + character offsets, and a Markdown synthesis template for you to fill in. You (the model) should write the narrative synthesis citing the [n] markers; the server does the gathering, not the writing. Use depth='quick' for fast overviews, 'standard' for normal research, 'deep' for thorough multi-source investigations.

NameRequiredDescriptionDefault
depthNoResearch depth: 'quick' (2-3 sub-questions, ~10 fetches), 'standard' (4-6, ~20 fetches), or 'deep' (6-8, ~32 fetches).standard
questionYesThe research question to investigate

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

The annotations are minimal (readOnlyHint, openWorldHint), so the description must carry the behavioral burden — and it does. It names the specific upstream sources (Wikipedia, arXiv, Hacker News, Stack Exchange, Crossref, Brave/Tavily), explains the config-dependent availability of some, describes the decomposition and evidence-extraction pipeline steps, details the exact ResearchReport structure, and explicitly assigns the synthesis-writing responsibility to the model ('the server does the gathering, not the writing'). This goes well beyond the annotations without contradicting them.

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 long, but every component earns its place: operation → pipeline mechanism → sources → return structure → model's responsibility → depth guidance. The front-loading of the core 'run a pipeline' phrase followed by progressive detail creates a logical, scannable flow. Minor stylistic blemishes (the semicolon-heavy middle and parenthetical digression about keys) are the only reason it doesn't get a 5; it could be slightly tightened without losing information.

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 — multi-step orchestration across 6+ external sources, configurable depth with nonlinear cost implications, and a rich structured output — the description covers all critical dimensions explicitly. It addresses dependencies ('if keys are configured'), delineates agent vs. server responsibility, enumerates the output contract, and offers per-level trade-offs. The output schema presumably details the ResearchReport shape, so the description's lack of that detail is acceptable. No meaningful gap left for an agent deciding whether and how to invoke this.

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 100% and the schema already documents both parameters well, establishing a baseline of 3. The description adds semantic value on top by re-framing the depth values by intent ('fast overviews,' 'normal research,' 'thorough multi-source investigations') and by showing how the parameter's granularity maps to pipeline trade-offs. It reinforces rather than merely restates the schema's mechanical counts (sub-questions, fetches).

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 verb+object pair ('Run a full deep-research pipeline on a complex question') and immediately unpacks what 'pipeline' means: decompose, fan out, fetch, extract, return structured output. It distinguishes itself from the search_* siblings by being the full orchestrated pipeline versus point lookups, and from plan_research/extract_evidence by stating that gathering and planning happen server-side while the model handles synthesis. An agent could confidently discriminate this from its siblings 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 description gives explicit, actionable when-to-use guidance via the depth parameter: "Use `depth='quick'` for fast overviews, 'standard' for normal research, 'deep' for thorough multi-source investigations." It also clarifies the model's post-call responsibilities (write the synthesis). However, it never explicitly says when NOT to use this tool versus calling one of the many search siblings directly (e.g., 'for a single fact check, prefer search_web'), which given 9 siblings would be the crowning touch.

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

search_academicA
Read-only

Search arXiv for academic preprints across all fields (CS, physics, math, bio, etc.). Returns title, authors, abstract snippet, and PDF URL. No API key required.

NameRequiredDescriptionDefault
queryYesSearch query
max_resultsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate read-only and open-world behavior MAP. The description adds the useful fact that no API key is required # and clarifies the output fields. However, it does not mention potential rate limits, pagination, or that results are limited to arXiv only, which would be additional transparency value.

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 concise sentences. The first immediately states the tool's purpose and scope; the second lists the output fields and notes no API key is needed. Information is front-loaded and there is no extraneous text.

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 presence of an output schema and a simple search use case, the description covers the essential aspects: what is searched, what is returned, and that no key is required. It does not detail search operators or pagination, but for a straightforward query on arxiv, the provided context is sufficient for an agent to make a reasonable call.

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?

With schema description coverage at 50% (only 'query' has a description, max_results does not), the description fails to compensate. It does not explain query syntax or the behavior of max_results beyond what the schema implicitly provides (a bounded default integer). This leaves the agent under-informed about parameter usage.

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 resource (arXiv), the action (search), and the scope (academic preprints across all fields). This immediately distinguishes it from sibling search tools like search_web or search_news, and the inclusion of return fields (title, authors, abstract, PDF URL) further clarifies its role.

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

Usage Guidelines2/5

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

The description implies usage for academic literature but does not explicitly compare against alternatives like search_scholar_meta or mention when not to use this tool. No guidance on query formatting or result limits is provided, so an agent would need to rely on external knowledge.

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

search_newsA
Read-only

Search Hacker News for tech news, discussions, and trending links. Returns title, URL, points, comments, and dates. No API key required.

NameRequiredDescriptionDefault
queryYesSearch query
max_resultsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and openWorldHint; the description adds the useful behavioral fact that no API key is required and discloses the return fields. It does not discuss rate limits or result ordering, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

Two tight sentences with no filler; the core action and resource are front-loaded, and the return fields and auth note each add value.

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

Completeness4/5

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

With an output schema present, return value details are already structured. The description covers the key selection signal (Hacker News source), simplicity, and auth. It could mention that it only searches Hacker News rather than the general web, but the tool name already conveys that.

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 coverage is 50%: 'query' is minimally described and 'max_results' lacks a description. The tool description adds no parameter-specific meaning beyond the schema, and does not compensate for the undocumented max_results parameter.

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

Purpose5/5

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

Description states a specific verb ('Search') and resource ('Hacker News') with a scope ('tech news, discussions, and trending links'), and lists the returned fields. This clearly distinguishes it from sibling search tools like search_web or search_wikipedia.

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 context is implied by the Hacker News resource and the 'No API key required' note, but there is no explicit guidance on when to choose this over search_web or other search siblings, nor any when-not-to-use conditions.

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

search_scholar_metaA
Read-only

Search Crossref for scholarly metadata across publishers (Elsevier, Springer, Wiley, IEEE, ACM, etc.). Returns DOI, citation count, publication date, and abstract. Covers peer-reviewed papers that arXiv may not. No API key required.

NameRequiredDescriptionDefault
queryYesSearch query
max_resultsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=true, so the tool's safety profile is already known. The description adds valuable behavioral characteristics, such as 'No API key required' (lowering barriers) and specifying the coverage of publishers. It also implies the tool returns DOI, citation count, publication date, and abstract, which is useful but somewhat redundant with the output schema. No contradiction with 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 a single concise sentence with no waste. It front-loads the primary purpose and includes key differentiators (coverage of publishers, returns fields, no API key). It is structured well for an agent to quickly grasp the tool's function.

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

Completeness4/5

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

The tool is relatively simple with two parameters, both documented, and it has an output schema that presumably describes return fields. The description covers the key aspects: what it searches, what it returns, and the fact that no API key is required. It could mention pagination or result formats, but given the output schema likely handles that, the description is reasonably complete. The comparison to arXiv adds helpful context.

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 50%: both query and max_results have descriptions, but they are minimal ('Search query' and default/max/min values). The description does not add much detail on what constitutes a good query or how max_results affects results. However, it does mention typical query types (e.g., searching for scholarly metadata) and implies that max_results controls result count. Given the schema already handles the basics, a baseline 3 is appropriate.

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 performs a search on Crossref for scholarly metadata across multiple named publishers. It specifies the resource (Crossref) and the purpose (searching scholarly metadata), which differentiates it from siblings like search_web and search_wikipedia. The mention of 'peer-reviewed papers that arXiv may not' further distinguishes it from potential academic search tools.

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 clear context for when to use this tool, such as when searching for scholarly metadata with DOIs, citation counts, and abstracts. It notes that it covers peer-reviewed papers that arXiv may not, implying a comparison with other academic sources. However, it does not explicitly state when not to use it or name specific alternatives like search_academic, which could be more explicit. Still, the context is useful enough.

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

search_stackexchangeA
Read-only

Search Stack Exchange sites (default: Stack Overflow) for high-quality technical Q&A. Set the 'site' parameter to search other SE communities (e.g. 'serverfault', 'superuser', 'askubuntu', 'math', 'tex'). No API key required.

NameRequiredDescriptionDefault
siteNoStack Exchange site slug (default: stackoverflow)stackoverflow
queryYesSearch query
max_resultsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so the agent knows this is a safe read operation. The description adds that no API key is required, which is useful context. It does not mention rate limits or result format, but given the readOnlyHint, the baseline for transparency is met. The description doesn't contradict annotations.

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

Conciseness5/5

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

The description is concise, two sentences, with the most important information (what it searches, default site) front-loaded. The examples of alternative sites are useful and efficiently stated. No filler or redundant content.

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

Completeness4/5

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

The tool is a simple search with a clear output schema (not provided but implied from signal). The description covers the core purpose, site parameter usage, and the no-API-key requirement. It lacks mention of result format or rate limits, but for a read-only search tool with a straightforward purpose, this is acceptable. The output schema likely covers return values, so the description doesn't need to.

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 67%: 'query' and 'site' have descriptions, but 'max_results' has no description in the schema. The description mentions the 'site' parameter and its examples, adding value beyond the schema. However, it doesn't explain the 'max_results' parameter semantics, leaving a gap. Since coverage is moderate, the description partially compensates but not fully.

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's purpose: searching Stack Exchange sites for technical Q&A, with a default of Stack Overflow. It distinguishes itself from siblings like search_web by specifying the platform. However, it doesn't explicitly differentiate from search_academic or other specialized search tools, but the platform specificity is clear.

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 on when to use this tool: when you need technical Q&A from Stack Exchange. It also provides examples of alternative sites via the 'site' parameter. It doesn't explicitly state when not to use it (e.g., for general web searches), but the focus on Stack Exchange is inferable from the description.

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

search_webA
Read-only

Multi-source web search. Aggregates results from Brave Search and/or Tavily (whichever has a key configured) with dedup and cross-source scoring. Returns title, URL, snippet, and source for each result. Use as the default 'search the web' tool.

NameRequiredDescriptionDefault
queryYesSearch query
pro_modeNoIf true, also fetch top 3 results via Jina Reader and append their content snippets.
max_resultsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses meaningful behavior beyond the annotations: results are aggregated from Brave Search and/or Tavily based on configured keys, deduplicated, cross-source scored, and returned with title, URL, snippet, and source. The readOnlyHint and openWorldHint are consistent with a read-only multi-source search tool, and the extra aggregation detail adds useful context.

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 tightly packed sentences with no filler. The core purpose is front-loaded, followed by useful behavioral details and a clear default-use instruction, making each sentence valuable.

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 description covers purpose, output shape, behavior with multiple sources, and default usage context. Combined with the output schema and annotations, it provides enough for an agent to use the tool correctly, though it could slightly improve by noting what happens if no API key is configured.

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 coverage is 67%, with query and pro_mode described in the schema, but the description itself adds no parameter-specific meaning. The max_results parameter is self-evident by its name and schema constraints, so this is adequate but the description could have clarified that max_results applies after deduplication.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Multi-source web search.' It clearly states the aggregation behavior and return fields, making it easy to distinguish from specialized siblings like search_wikipedia and search_academic, even though those siblings are not explicitly named.

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 'Use as the default "search the web" tool,' which gives clear direction on when to choose it. It does not explicitly list what it should not be used for, but the 'default web search' framing strongly implies it is the broad general-purpose option among the more domain-specific siblings.

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

search_wikipediaA
Read-only

Search Wikipedia. Returns titles, URLs, and snippets. No API key required.

NameRequiredDescriptionDefault
queryYesSearch query
max_resultsNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

The description shows the return data format (titles, URLs, snippets) and the 'No API key required' note is a useful practical detail about usage friction. Annotations carry weight here and are not contradicted.

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?

Three short sentences, each carrying unique information: what it does, what comes back, and a friction detail. Nothing is wasted.

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 search tool with a small parameter surface and a defined response shape, the description covers the essentials. The main shortfall is lack of explicit routing guidance, which is common and minor here. An explicit 'if you need scholarly sources, use search_scholar_meta' would push this to 5.

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 50% schema description coverage, the description partially compensates by naming the return type and surfaces an important detail ('No API key required') that isn't in the schema. However, it doesn't add details about query format or semantics beyond what 'Search query' already states, so it doesn't fully cover the gap.

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 verb+resource action ('Search Wikipedia') and lists the return payload contents. It doesn't explicitly distinguish itself from siblings like search_web or search_news, but its focus on the Wikipedia domain is enough to generally separate it.

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 states a clear benefit ('No API key required') that helps determine when to use it, but there's no explicit when-not-to-use guidance or alternative tool naming. The sibling list and scoping might be clear enough for some agents, but explicit exclusions (like 'for general web, use search_web') would strengthen it.

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. 10 tool updatesv0.2.0
    • First observedextract_evidence
    • First observedfetch_url
    • First observedplan_research
    • First observedresearch
    • First observedsearch_academic
    • First observedsearch_news
    • First observedsearch_scholar_meta
    • First observedsearch_stackexchange
    • First observedsearch_web
    • First observedsearch_wikipedia

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools have clear, distinct purposes: general web, Wikipedia, arXiv, Hacker News, StackExchange, Crossref metadata, and evidence extraction are clearly separate. Minor overlap exists between search_academic (arXiv preprints) and search_scholar_meta (Crossref metadata), since both find scholarly papers, but their descriptions make the distinction clear enough. The plan_research and research tools are also clearly separated as planning vs. execution.

Naming Consistency4/5

Tools mostly follow verb_noun naming (search_web, fetch_url, search_wikipedia, plan_research, extract_evidence), but some are slightly off: search_scholar_meta uses a noun descriptor for a source rather than a clean object; research is a standalone verb, and fetch_url/extract_evidence are both verb_noun but diverge in verb choice. No mixed casing or chaotic naming, so overall predictable and readable.

Tool Count5/5

10 tools is within the ideal 3-15 range and appropriate for a research server: search methods for multiple sources, plus a planner, an executor, and a fetcher/extractor. Each tool serves a distinct role without redundancy, and the scale is not too heavy to handle.

Completeness4/5

The server covers the core research pipeline fairly well: plan, search, extract, synthesize. Minor gaps: no full-text search on Crossref tokens or thousands; abstracts only for arXiv; no search by author/full-text Google Scholar type search; PDF retrieval across fetch_url may not work; no citation graph or retrieval. Useful but not complete.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to perform comprehensive search across 27 search engines including web, academic, code, community, package managers, video, images, podcasts, and maps, with multi-modal support, caching, and security features.
    14
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Web tools for AI agents. Search the web for full page content, fetch URLs as clean markdown including PDFs, extract structured data from a page with a prompt, and run multi-source deep research that returns a cited report.
    4
    2
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to perform web searches, extract webpage content, and conduct end-to-end search-and-extract operations using multiple search providers and content extraction methods.
    -