Skip to main content
Glama
yoloshii

gigaxity-deep-research

by yoloshii

Gigaxity Deep Research — Open-source deep research MCP server for Claude Code, Codex, Cursor, Hermes, and any MCP-capable agent

Open-source deep research MCP server for Claude Code, Hermes, Cursor, and any MCP-compatible agent. Qwen3-30B-A3B-Thinking via OpenRouter plus multi-source web synthesis with citations.

Gigaxity Deep Research is a multi-source synthesis pipeline — six MCP tools (two primitives search/research plus four deep-research tools ask/discover/synthesize/reason) with a matching FastAPI REST surface, fronting parallel multi-source search, RRF fusion, citation binding, and contradiction detection. The synthesis stage runs against any OpenAI-compatible chat-completions model; the recommended default is Alibaba's Qwen3-30B-A3B-Thinking, a reasoning-tuned 30B-A3B MoE model, but DeepSeek-R1, Qwen-QwQ, Llama 3.x, and hosted-aggregator endpoints (OpenRouter and the like) all work — pick any model your endpoint serves. The search layer pulls from a "Triple Stack" of complementary MCPs (Context7, Exa, Jina) alongside SearXNG, Tavily, and LinkUp connectors. A bundled gptr-mcp companion — the MCP shim around GPT Researcher — adds Reddit, X, and YouTube as social-first sources.

If you want to run the synthesis model on your own hardware, the local-inference branch swaps OpenRouter for any OpenAI-compatible endpoint (vLLM, SGLang, or llama.cpp). The search-MCP layer is priced separately by each provider. See docs/guides/free-tier-strategy.md for what their free tiers cover and how to wire them up.

Python on FastAPI. MIT License. Runs as an MCP stdio server, FastAPI REST API, or both. Drop-in instructions for the full deep research stack live in CLAUDE.md / AGENTS.md (byte-identical) so any MCP-capable harness — Claude Code, Codex, Cursor, Hermes, etc. — or a standalone agent (system-prompt path) can mirror the configuration.

License: MIT Python 3.11+ MCP


What it does

Gigaxity Deep Research wires a multi-source search layer (SearXNG, Tavily, LinkUp) to an RRF fusion stage and a synthesis engine with citation binding, then exposes the whole pipeline as six MCP tools — two primitives (search, research) plus four deep-research tools (ask, discover, synthesize, reason) — that Claude Code or any MCP-compatible agent can call. The synthesis stage runs against any OpenAI-compatible chat-completions model; the recommended default is Qwen3-30B-A3B-Thinking, a reasoning-tuned MoE model from Alibaba.

So when an agent hits a question outside its training cutoff, it doesn't hallucinate or shell out to a generic search tool. It calls discover to widen the source set, reads the top hits, and calls synthesize to fold the evidence into a citation-backed answer. Round-trip is typically 5–15 seconds against a hosted reasoning model.

Related MCP server: myscrape

Features

Tools (MCP and REST)

The MCP server exposes two primitives plus four deep-research tools — six tools total. The primitives give you raw search and the simple combined pipeline; the deep-research tools split discovery, synthesis, and reasoning so each step can be driven independently.

Primitives

Tool

Purpose

search

Raw multi-source aggregation across SearXNG, Tavily, and LinkUp with RRF fusion. No LLM call.

research

Combined pipeline: multi-source search plus LLM synthesis with citations, in one call.

Deep-research tools

Tool

Purpose

discover

Exploratory expansion — surfaces explicit, implicit, related, and contrasting angles, then flags knowledge gaps

synthesize

Citation-aware synthesis over pre-gathered content; CRAG-style quality gate, contradiction surfacing, outline-guided generation

reason

Deep synthesis with optional CoT depth control over pre-gathered content

ask

Fast conversational answer (direct LLM call, no search hop)

Pipeline

  • Multi-source search: parallel queries across SearXNG, Tavily, and LinkUp with graceful degradation if any source is unavailable.

  • RRF fusion: Reciprocal Rank Fusion combines and re-ranks results across providers.

  • Adaptive routing: query classification picks the right combination of connectors per query.

  • Query expansion: HyDE-style variant generation for broader coverage.

  • Query decomposition: multi-aspect breakdown for complex queries.

  • Quality gate: CRAG-style filtering keeps low-quality sources out of synthesis, or fails open with a low-relevance caveat when only weak sources are available (rather than refusing).

  • Contradiction detection: PaperQA2-style disagreement surfacing flags conflicting claims rather than averaging them out.

  • Citation binding: VeriCite-style claim-to-evidence mapping in the final answer.

  • Outline-guided synthesis: SciRAG-style structured generation for tutorial and academic presets.

  • Output verification: post-synthesis hard-gate on empty, truncated, reasoning-only, or uncited synthesis output — failed outputs are flagged with a verdict header and not cached, rather than being relayed as clean successes. Soft conditions (partial citation coverage, surfaced contradictions) append an advisory note.

  • Focus modes: general, academic, documentation, comparison, debugging, tutorial, news.

Compatibility

  • Reasoning models: works with Qwen3-Thinking, DeepSeek-R1, Qwen-QwQ, and any other OpenAI-compatible chat-completions model.

  • Multi-tenant: accepts a per-request X-OpenRouter-Api-Key header so multiple users can share one server instance and bill their own OpenRouter accounts.

  • MCP and REST: the same orchestration logic powers both surfaces.

What the full install includes

The Quick Starts below cover the orchestrator MCP — one of seven in the full stack. The complete deep research workflow (automatic per-query routing across the whole stack) comprises four parts:

  1. Seven MCPs. This repo's orchestrator (gigaxity-deep-research) plus the Triple Stack (context7 + exa + jina — search/docs/code trio) plus three more (exa-answer, brightdata_fallback, gptr-mcp).

  2. Companion projects and dependencies. SearXNG (primary search source, bundled at companions/searxng/) and GPT Researcher (transitive dependency of gptr-mcp); plus the minimal MCP wrappers bundled at companions/exa-answer/ and companions/brightdata-fallback/.

  3. The pasteable instruction block in CLAUDE.md — drop into the global CLAUDE.md / AGENTS.md your harness loads (e.g. ~/.claude/CLAUDE.md for Claude Code), or paste into a standalone agent's system prompt. The agent then fires the research workflow on external-knowledge queries and routes each query class to the right MCP.

  4. The bundled research-workflow skill — the deep reference for the routing classifier (token costs per tool, presets, fallback chains).

Walk the Setup roadmap below for a stage-by-stage path through all four.

Quick start: MCP install (Claude Code walkthrough)

The example below registers the server with Claude Code via ~/.claude.json. The same MCP stdio config block works for any MCP-capable harness (Codex, Cursor, Hermes, Continue.dev, etc.) — substitute that harness's config file path. For standalone agents that don't have an MCP harness, run the REST API instead (see the next quick start).

# Clone and install
git clone https://github.com/yoloshii/gigaxity-deep-research.git
cd gigaxity-deep-research

python -m venv .venv
source .venv/bin/activate
pip install -e .

# Configure
cp .env.example .env
# Edit .env: set RESEARCH_LLM_API_KEY (https://openrouter.ai/keys)
#            and RESEARCH_SEARXNG_HOST (or leave default)

Add to ~/.claude.json under mcpServers:

"gigaxity-deep-research": {
  "type": "stdio",
  "command": "/path/to/gigaxity-deep-research/.venv/bin/python",
  "args": ["/path/to/gigaxity-deep-research/run_mcp.py"],
  "env": {
    "RESEARCH_LLM_API_BASE": "https://openrouter.ai/api/v1",
    "RESEARCH_LLM_API_KEY": "YOUR_OPENROUTER_API_KEY",
    "RESEARCH_LLM_MODEL": "qwen/qwen3-30b-a3b-thinking-2507"
  }
}

Restart Claude Code. The six tools (search, research, ask, discover, synthesize, reason) become callable as mcp__gigaxity-deep-research__<tool>.

The MCP alone gives you raw access to the six tools. Most of the deep research value — automatic per-query tool routing across the full seven-MCP stack, the social-first layer via gptr-mcp, the routing skill, and the global agent-instruction block — comes from the rest of the staircase. Walk it in Setup roadmap below.

Quick start: REST API for distributed compute

When the model lives on a different machine from the orchestrator (e.g. you self-host the model on a GPU box and want the rest of the pipeline on a CPU-only edge node), run it as a REST API.

docker compose up -d
curl http://localhost:8000/api/v1/health

REST endpoints:

Endpoint

Method

Purpose

/api/v1/health

GET

Health check, lists active connectors

/api/v1/health/connectors

GET

Liveness probes per connector (ok / unreachable / unconfigured) — real network checks, ~2s

/api/v1/discover

POST

Exploratory expansion

/api/v1/synthesize

POST

Citation-aware synthesis

/api/v1/reason

POST

Chain-of-thought reasoning

/api/v1/ask

POST

Quick answer

/api/v1/research

POST

Combined search + synthesis

/api/v1/search

POST

Multi-source search only (no LLM)

/api/v1/presets

GET

List synthesis presets

/api/v1/focus-modes

GET

List focus modes

Each endpoint accepts an optional X-OpenRouter-Api-Key header that overrides the env-configured key for that request. Multi-tenant deployments use it to bill each user separately.

Full REST reference: docs/reference/rest-api.md.

Setup roadmap

The Quick Starts above get the orchestrator MCP running against a model and a search source. The full deep research workflow — automatic tool routing across the seven-MCP stack, social-first research via gptr-mcp, the routing skill that classifies queries, plus the agent-instruction block that wires it all into Claude Code — needs the rest of the staircase below.

Each stage has a verify step, so you can stop at any point and know the layer below is solid. Stages 1–4 give you a working orchestrator. Stages 5–7 turn it into the full deep research stack.

#

Stage

What you do

Verify

Time

Doc

1

Core install

Clone repo, create venv, pip install -e .

python -c "from src.main import app" exits 0

2 min

Quickstart

2

Primary search source

Stand up SearXNG (bundled compose file under companions/searxng/)

curl http://localhost:8888/healthz returns 200

5 min

setup-companions.md

3

LLM endpoint

Start a local model (vLLM / SGLang / llama.cpp) or point env vars at a hosted endpoint such as OpenRouter

curl $RESEARCH_LLM_API_BASE/models returns a model list

5–30 min

setup-local-inference.md

4

Wire gigaxity into Claude Code

cp .env.example .env, edit env vars, register the stdio MCP block in ~/.claude.json, restart Claude Code

/mcp shows gigaxity-deep-research with a green dot; mcp__gigaxity-deep-research__research returns a synthesis with citations

5 min

setup-mcp.md

5

Companion MCPs (Triple Stack)

Install the bundled companions (exa-answer, jina-mcp, optionally brightdata-fallback, gptr-mcp), then register those plus Context7 and Exa in ~/.claude.json

/mcp shows all seven MCPs registered with green dots

10–15 min

triple-stack-setup.md · setup-companions.md

6

Routing skill + agent instructions

Symlink skills/research-workflow/ into your skills dir; paste the instruction block from CLAUDE.md into your harness's global CLAUDE.md / AGENTS.md (or a standalone agent's system prompt)

A research query triggers the research-workflow skill instead of the agent's built-in WebSearch

3 min

skill SKILL.md

7

Full-stack smoke

Run one query of each routing class and confirm the right MCP fires

See the smoke matrix below

5 min

(below)

Smoke matrix

Run each query in Claude Code (or the agent of your choice) after Stage 7 and confirm the routing matches:

Query

Should route to

What you should see

"What's the latest stable version of Bun?"

exa-answer

1–2 s factual answer with citations

"What does the OpenAI Python SDK's client.beta namespace cover?"

context7 (resolve-library-idquery-docs)

Library/API documentation chunks

"Show me a code example using httpx.AsyncClient with retries"

exa (get_code_context_exa)

Curated code-context snippets

"Find recent papers on corrective RAG"

jina (search_arxiv)

arXiv hits — and the agent should translate the question into arXiv field syntax (abs:CRAG AND cat:cs.CL) rather than passing it verbatim. Verbatim questions match stopwords and author surnames: "Find recent papers on CRAG quality gates" returns a paper co-authored by someone named Find.

"Compare FastAPI vs Litestar for production APIs in 2026"

gigaxity-deep-research (synthesize)

Citation-backed comparative synthesis

"What do people on Reddit say about Bun vs Node for production?"

gptr-mcp (quick_search)

Reddit / X / YouTube community sentiment

If a query routes somewhere unexpected, the most common cause is the global instruction block from Stage 6 not being pasted into your global CLAUDE.md / AGENTS.md. Without it, the agent has to discover the routing logic on its own per session.

Common pitfalls

  • Stage 2 is required, not optional. SearXNG is the only required search connector — Tavily and LinkUp are optional additional connectors that run in parallel and contribute to RRF fusion. Skipping SearXNG leaves the synthesis layer with nothing to fuse unless you configure Tavily or LinkUp as a substitute.

  • Verify Stage 4 before adding companions. A failing research call after Stage 5 is hard to debug because the failure could be any of seven MCPs misfiring; confirm the orchestrator alone works first.

  • Stage 6 is what makes the agent route automatically. Without the skill plus the instruction block, the seven MCPs are visible but the agent treats them as raw tools, not a stack.

  • local-inference branch defaults to http://localhost:8000/v1; main defaults to OpenRouter. Stage 3's verify command is the same either way, but the env var values differ — match them to your branch.

Modes

Mode

Branch

LLM backend

When to use

OpenRouter (default)

main

Hosted Qwen3-30B-A3B-Thinking via OpenRouter

Single-machine setup, no GPU, fastest path to working

Local inference (env-override today; code-level swap pending — see Roadmap)

local-inference (placeholder branch, currently mirrors main)

Self-hosted Qwen3/DeepSeek/Llama via vLLM, SGLang, or any OpenAI-compatible server

On-prem requirement, GPU available, no usage-based cost. Works on either branch today by setting RESEARCH_LLM_API_BASE to any OpenAI-compatible endpoint.

REST API (any backend)

both

Either, plus optional remote model server

Distributed compute — orchestrator and model on different machines

The local-inference branch currently mirrors main and serves as a placeholder for the planned client-and-default swap. Once the swap lands, that branch will ship with RESEARCH_LLM_API_BASE defaulted to http://localhost:8000/v1 and the OpenRouter client replaced by a generic OpenAI-compatible client. Until then, point RESEARCH_LLM_API_BASE at your local endpoint on either branch — search, fusion, synthesis, and citations behave identically.

Architecture

┌────────────────────── Gigaxity Deep Research ──────────────────────┐
│                                                                    │
│  MCP stdio (run_mcp.py) ──┐               ┌── REST (FastAPI)       │
│                           ▼               ▼                        │
│                      ┌─────────────────────────┐                   │
│                      │      Discovery layer     │                   │
│                      │  routing · expansion ·   │                   │
│                      │  decomposition · focus   │                   │
│                      │  (invokes LLM)           │                   │
│                      └────────────┬────────────┘                   │
│                                   ▼                                │
│  ┌──────── Search aggregator (parallel, fail-graceful) ─────────┐  │
│  │   SearXNG     ·     Tavily     ·     LinkUp                  │  │
│  │       ↓ rank-merged across connectors ↓                      │  │
│  │                      RRF fusion                              │  │
│  └─────────────────────────┬────────────────────────────────────┘  │
│                            ▼                                       │
│                      ┌─────────────────────────┐                   │
│                      │     Synthesis layer      │                   │
│                      │  CRAG quality gate ·     │                   │
│                      │  contradiction detector ·│                   │
│                      │  outline guide · RCS     │                   │
│                      │  (invokes LLM)           │                   │
│                      └────────────┬────────────┘                   │
│                                   ▼                                │
│             Citation-bound markdown answer                         │
│      (+ contradictions, outline when preset enables)               │
│                                                                    │
│  Shared dependency: OpenAI-compatible LLM                          │
│  (OpenRouter or local; Qwen3 30B et al.)                           │
└────────────────────────────────────────────────────────────────────┘

Different tools enter the pipeline at different stages: research() runs the whole flow; discover() stops after the search aggregator (returns ranked sources + gaps); synthesize() and reason() skip Discovery and Search and operate on pre-gathered sources; ask() calls the LLM directly with no search hop; search() returns RRF-fused results without touching the LLM.

The bigger stack

Gigaxity Deep Research is the synthesis MCP in a seven-MCP deep research stack — agent-framework-agnostic, designed to drop into any MCP-capable harness (Claude Code, Codex, Cursor, Hermes, etc.) or a standalone agent that takes a system prompt. The other six MCPs handle search, URL reading, and social discovery:

MCP

Role

Context7

Library and API documentation lookup

Exa

Code-context search, advanced web search, crawling

Exa Answer

Speed-critical factual lookups (1–2 s)

Jina (bundled — self-hosted)

Free-tier web search, URL reading, arXiv/SSRN/BibTeX, rerank, dedup, PDF layout

gigaxity-deep-research (this repo)

Multi-source search + synthesis with Qwen3-30B-A3B-Thinking

Brightdata fallback

Last-resort scraper for blocked URLs (CAPTCHA, paywall, Cloudflare)

gptr-mcp

Social-first research — community knowledge from Reddit, X/Twitter, YouTube

The bundled research-workflow skill plus the instruction block in CLAUDE.md wire all seven together with a query classifier (quick factual, direct, exploratory, synthesis, social-first), so the agent picks the right tools per query class on its own. Drop the instruction block into your own global CLAUDE.md or AGENTS.md to mirror the setup. All seven sanitized MCP server configs live in docs/reference/mcp-configs.md for one-stop copy-paste.

Documentation

Research foundations

The pipeline implements techniques from the recent literature:

Feature

Research basis

Quality gate

CRAG (arXiv:2401.15884)

Contradiction detection

PaperQA2 (arXiv:2409.13740)

Query expansion

HyDE (arXiv:2212.10496)

Query decomposition

Multi-hop retrieval (arXiv:2507.00355)

Outline-guided synthesis

SciRAG (arXiv:2511.14362)

Roadmap

Status

Feature

Description

:white_check_mark:

OpenRouter mode

Default, shipped on main

:white_check_mark:

MCP + REST surfaces

Both stable, share orchestration logic

:white_check_mark:

search · research · ask · discover · synthesize · reason

All six tools wired and tested

:white_check_mark:

Multi-tenant via per-request key

X-OpenRouter-Api-Key header passthrough

:white_check_mark:

Local inference branch

Bring-your-own Qwen3/DeepSeek/Llama with full parity to OpenRouter mode. Live on the local-inference branch — generic OpenAI-compatible client (LLMClient), localhost:8000/v1 defaults, X-LLM-Api-Key per-request header.

:white_check_mark:

Self-hosted model guide

vLLM, SGLang, and llama.cpp walkthroughs plus Q4_K_M GGUF quant recommendation (browse community GGUF builds on HuggingFace), threshold table, and quant-format-per-server matrix in setup-local-inference.md

:memo:

Streaming responses

SSE for synthesize / reason long-running calls

:memo:

Pluggable rerankers

Optional Jina or Cohere rerank stage between fusion and synthesis

:white_check_mark: Shipped&ensp; :construction: Planned&ensp; :memo: Exploring

Requirements

  • Python 3.11+

  • An OpenRouter API key (https://openrouter.ai/keys) for default mode

  • A SearXNG instance, self-hosted (https://docs.searxng.org/) or third-party, as the primary search source

  • Optional: Tavily API key and/or LinkUp API key — each runs in parallel with SearXNG and contributes to RRF fusion when configured

  • Optional: Docker + Docker Compose for REST mode

License

MIT. Copyright (c) 2026 Yoloshii.

Available Tools

6 tools
askA

Quick conversational answer using LLM.

No search, direct response from model knowledge. Use for simple factual questions or follow-ups.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesQuestion to answer
contextNoOptional context to consider
openrouter_api_keyNoPer-request key override; defaults to RESEARCH_LLM_API_KEY.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It notes 'quick' and 'direct response from model knowledge' but lacks disclosure on latency, cost, accuracy, or other behaviors. Minimal behavioral context beyond purpose.

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 plus a header. Front-loaded with core purpose. Every sentence 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 existing output schema (not shown), description need not explain returns. It covers purpose, usage context, and contrasts with siblings. Lacks mention of error handling or limitations, but adequate for a simple tool.

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%, so baseline 3 applies. Description adds no extra context beyond schema: no explanation of context role or API key override, but schema already describes them adequately.

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 'Quick conversational answer using LLM' and 'No search, direct response from model knowledge,' distinguishing it from sibling tools like search and research. It specifically targets simple factual questions or follow-ups.

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 advises use for 'simple factual questions or follow-ups' and contrasts with 'No search,' implying not for external discovery. However, it does not explicitly state when not to use or list alternative tools.

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

discoverA

Exploratory discovery with knowledge gap analysis.

Identifies what's known and unknown about a topic. Use for cold-start exploration.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesTopic to explore
top_kNoResults per source
focus_modeNoDomain-specific discovery modegeneral
identify_gapsNoAnalyze knowledge gaps
openrouter_api_keyNoPer-request key override; defaults to RESEARCH_LLM_API_KEY.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so the description bears full burden. It discloses the tool's function (gap analysis, identifying known/unknown) but omits behavioral traits like required permissions, rate limits, or side effects. The description adds moderate value but lacks depth expected for a complex 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?

Very concise at three lines with a clear structure: one-line summary, one-line outcome, one-line usage guidance. No wasted words. However, it could be slightly more informative without losing brevity (e.g., hinting at output or key parameters).

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 five parameters and an output schema, the description is minimal. It mentions the core function and use case but does not explain the role of parameters like focus_mode or identify_gaps. The output schema likely covers return values, so this is acceptable but not exemplary.

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%, so baseline is 3. The description does not elaborate on any parameters; it relies entirely on the schema. While sufficient, it adds no extra meaning beyond what the schema provides.

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?

Clearly states it performs 'exploratory discovery with knowledge gap analysis' and 'identifies what's known and unknown about a topic'. The verb+resource+outcome is specific and distinct from siblings like search (which returns results) and ask (Q&A). Mention of 'cold-start exploration' reinforces its unique use case.

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?

Says 'Use for cold-start exploration', providing a clear when-to-use scenario. However, it does not specify when not to use or offer alternatives among siblings (e.g., if you need direct answers, use ask; if you need detailed research, use research). The guidance is present but minimal.

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

reasonA

Deep reasoning with chain-of-thought analysis.

Two modes, picked automatically by whether sources is provided:

  • No-sources mode (default): direct chain-of-thought over the model's own knowledge plus optional context. Use for problems the model can reason about without external evidence; depth-controlled via reasoning_depth.

  • Sources-aware mode (when sources is non-empty): chain-of-thought synthesis over the pre-gathered sources, with the same shape REST /api/v1/reason produces. reasoning_depth is ignored in this mode — the chain-of-thought prompt is fixed because the reasoning shape is what matters here, not the prose register.

For style variants over pre-gathered sources, call synthesize directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesProblem or question requiring reasoning
contextNoBackground information or constraints (no-sources mode only)
sourcesNoPre-gathered sources to reason over. If provided, switches to sources-aware mode and uses chain-of-thought synthesis.
reasoning_depthNoHow thorough (no-sources mode only). shallow=2-3 steps, moderate=4-6, deep=7+moderate
openrouter_api_keyNoPer-request key override; defaults to RESEARCH_LLM_API_KEY.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Despite no annotations, the description discloses important behavioral traits: mode switching based on 'sources', that 'reasoning_depth' is ignored in sources-aware mode, and the fixed prompt nature in that mode. It also mentions the per-request API key override. Could be improved by explicitly stating it is a read-only operation with no 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?

Well-structured with clear mode breakdowns, using bullet-like formatting for readability. Every sentence provides necessary information, 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 presence of an output schema, the description doesn't need to detail return values. It covers the two modes, parameter behavior, and alternative tools. Missing aspects like error handling or rate limiting, but overall sufficient for the tool's complexity.

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 100%, baseline 3, but the description adds significant context: explains the two modes and how parameters behave differently in each (e.g., 'context' and 'reasoning_depth' only in no-sources mode, 'sources' switches modes). This greatly enriches the agent's understanding.

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 defines the tool's purpose: deep reasoning with chain-of-thought analysis, with two distinct modes. It distinguishes itself from the sibling tool 'synthesize' by noting that for style variants over pre-gathered sources, one should call 'synthesize' directly.

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?

Explicitly states when to use each mode: no-sources mode for problems requiring reasoning without external evidence, sources-aware mode when sources are provided. Also provides an alternative: 'For style variants over pre-gathered sources, call synthesize directly.'

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

researchA

Full research pipeline: search + LLM synthesis with citations.

Pipeline: Multi-source search → Source aggregation → LLM synthesis → Citation formatting

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesResearch query
top_kNoResults per source
reasoning_effortNoDepth of analysis (low=concise, medium=balanced, high=academic)medium
openrouter_api_keyNoPer-request key override; defaults to RESEARCH_LLM_API_KEY.

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, the description carries full burden. It discloses the pipeline steps (search, aggregation, synthesis, citation formatting), providing good behavioral insight. It does not mention potential costs or API key requirements, but the pipeline description is sufficient.

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 sentences: the first is a clear title-like statement, the second outlines the pipeline. No wasted words, front-loaded with key 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 the existence of an output schema (context signal), the description does not need to detail return values. It explains the workflow and sufficiently differentiates from siblings, though it could mention potential dependencies like network access.

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 100%, so baseline is 3. The description adds context about the pipeline (e.g., top_k affects per-source results) but does not elaborate on individual parameters beyond what is in 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 it's a 'Full research pipeline' combining search and synthesis with citations, and lists the pipeline steps. This distinguishes it from sibling tools like 'search' (just search) and 'synthesize' (just synthesis).

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 use for comprehensive research tasks but does not explicitly state when to use this tool vs. alternatives like 'search' or 'synthesize'. No exclusions or prerequisites are mentioned.

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

synthesizeA

Synthesize pre-gathered content into coherent analysis.

Use when you already have sources from other tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSynthesis focus/question
styleNoOutput format/length. When None and a preset is provided, the preset's own style is used (preset wins by default; explicit style always overrides). When None and no preset, defaults to comprehensive.
presetNoProcessing pipeline preset (comprehensive, fast, contracrow, academic, tutorial)
sourcesYesPre-gathered source documents with title, content, url, origin, source_type
gate_focusNoOptional focus string the pre-synthesis relevance gate scores sources against instead of the full query (Q2 precision lever for verbose queries). Omitted/None/whitespace uses the full query.
openrouter_api_keyNoPer-request key override; defaults to RESEARCH_LLM_API_KEY.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/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 the full burden of behavioral disclosure. The description only states the purpose without detailing side effects, safety, or any behavioral traits. For instance, it doesn't indicate whether the tool is read-only, whether it modifies any state, or what the synthesis process entails (e.g., uses LLM calls). This is a significant gap.

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 at two sentences. The first sentence captures the primary purpose, and the second provides direct usage context. Every word is earned; no fluff.

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 the complexity (6 parameters, output schema exists) and lack of annotations, the description is minimal. The output schema covers return values, so that's not an issue. However, the description does not explain the synthesis process, any prerequisites (other than having sources), or how to handle the output. It is adequate but lacks depth in behavioral 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 100%, so the schema itself fully documents the parameters. The tool description does not add any additional meaning beyond what the schema already provides. Thus, the baseline score of 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's action ('Synthesize pre-gathered content') and outcome ('into coherent analysis'). It distinguishes from sibling tools by explicitly mentioning that it works with already-gathered sources, which sets it apart from search or discover.

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 explicit guidance: 'Use when you already have sources from other tools.' This tells the agent when to invoke it, but it doesn't explicitly mention when not to use it or provide alternatives. Given the sibling tools, the guidance is sufficient but could be more comprehensive.

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. 6 tool updatesv0.6.1
    • First observedask
    • First observeddiscover
    • First observedreason
    • First observedresearch
    • First observedsearch
    • First observedsynthesize

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a distinct purpose: ask for quick answers, discover for exploration, reason for chain-of-thought, research for full pipeline, search for raw results, and synthesize for post-gathering analysis. No significant overlap.

Naming Consistency5/5

All tool names are single, lowercase verbs: ask, discover, reason, research, search, synthesize. Very consistent pattern.

Tool Count5/5

6 tools is ideal for a research server, covering all key operations without being excessive or sparse.

Completeness5/5

The set covers the full research workflow from exploration to synthesis, including raw search, quick answers, deep reasoning, and full pipeline. No obvious gaps.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

  • Academic research MCP server for paper search, citation checks, graphs, and deep research.

  • MCP server for building and testing AI agents with multi-model experimentation and insights.

  • Web research for agents: quality-scored Google search, webpage extraction, and deep research.

  • Your agent needs the open web — searched by more than one engine, and read as clean markdown rather than raw HTML. **What you can ask for** • "Search this question with two providers and tell me where they disagree." • "Scrape these 40 URLs into markdown, in one batch." • "Crawl this documentation site and give me every page." • "Do deep research on this topic and cite the sources." • "Find the academic papers behind this claim." **How to use it** Point any MCP client at https://mcp.aisa.one/search/mcp and sign in with OAuth — there is no key to create or paste. 30 tools across several independent providers: Tavily and Exa search, answers, contents and agent runs; Firecrawl scrape, batch scrape, crawl, map and search; Perplexity Sonar, Sonar Pro, reasoning and deep research; Oxylabs AI search and LLM jobs; OpenAI and Anthropic web search; and scholarly search. **Why this rather than the source** Several independent indexes behind one account, because one engine's blind spot is not visible from inside it. **It is also a door to the rest** The same login reaches 26 sources and 580+ operations. Find the page here, then ask the same agent who links to it or how much traffic it gets — without adding a second server. **What it costs** Finding and inspecting an operation is free. Running one is billed per call at API prices, with no seat and no monthly minimum, and every call takes max_price_usd so an agent cannot overspend by accident. **Where else it reaches** https://mcp.aisa.one/seo-serp/mcp for the Google results page itself, https://mcp.aisa.one/seo-serp-other-engines/mcp for Bing, Baidu and Naver.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that utilizes LangGraph and Google Gemini to conduct comprehensive research through multi-iteration deep searches and quick results. It provides high-quality analysis with automated citations and grounding metadata for thorough investigations.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A self-contained web-research MCP server that lets local LLM agents search, fetch, and synthesize web content using tools like web_search, web_fetch, and web_research.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Multi-purpose research MCP server integrating web search, deep research, web scraping, research methodology routing, and GPT Researcher report generation.
    MIT