agentleFS
yoloshiiyoloshii/gigaxity-deep-research/SKILL.md

gigaxity-deep-research

Skill61 starsChanged 45 days agoMITView on GitHub

Deep research MCP server wrapping Qwen3-30B-A3B-Thinking via OpenRouter. Use when an agent needs cross-source synthesis with citations, exploratory expansion of an unfamiliar topic, chain-of-thought reasoning over evidence, or fast conversational lookups grounded in live web search. Exposes seven MCP tools — three primitives (search, vertical_search, research) plus four deep-research tools (discover, synthesize, reason, ask) — with matching REST endpoints for each.

  • Reads credentials

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If you do not have pre-gathered sources, drop the sources argument and use depth-controlled CoT instead:

    line 122
  2. Very specific:

    All seven tools return markdown strings, not JSON.

    line 136
  3. Very specific:

    All POST endpoints accept the optional header X-OpenRouter-Api-Key: <key> to override RESEARCH_LLM_API_KEY for that request.

    line 206

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Gigaxity Deep Research

A skill-format reference for any agent (Claude Code, Codex, Cursor, Hermes, plain-MCP) calling this server. For human-readable installation instructions, see README.md. For harness-agnostic routing logic and the pasteable instruction block (drop into your harness's global CLAUDE.md / AGENTS.md or a standalone agent's system prompt), see CLAUDE.md.

Quick Start

The MCP server exposes seven tools — three primitives plus four deep-research tools. Pick one based on query type, call it, return the result to the user verbatim.

# Primitives — raw and combined behavior in one call
search(query)                           # Multi-source aggregation, no LLM
vertical_search(query, vertical)        # One SearXNG category (videos/science/it/docs/packages), no LLM
research(query)                         # Search + synthesis with citations, single call

# Deep-research tools — discrete steps, drive each independently
ask(query)                              # Fast conversational answer (direct LLM, no search)
discover(query)                         # Exploratory expansion + gap detection
synthesize(query, sources)              # Citation-aware fusion of pre-gathered content
reason(query, sources)                  # Synthesize + explicit chain-of-thought depth control

Workflow

Phase 1: Classify the query

Query class?
├── "what is X right now / when was X / latest version"
│     → Phase 2A (ask)
│
├── "tell me about X" (cold start, no prior context)
│     → Phase 2B (discover → read → synthesize)
│
├── "compare X vs Y" or "best practice for X"
│     → Phase 2C (parallel search → synthesize)
│
└── "why did X happen" or "explain reasoning behind X"
      → Phase 2D (reason)

Phase 2A: ASK (fast factual)

result = mcp__gigaxity-deep-research__ask(query="<query>")
return result

Token budget: ~500–1500. Latency: ~2–5 s.

Phase 2B: DISCOVER → READ → SYNTHESIZE (exploratory)

discovered = mcp__gigaxity-deep-research__discover(
    query="<query>",
    focus_mode="general",  # or academic, documentation, comparison, debugging, tutorial, news
    identify_gaps=True
)

# discovered.sources is a ranked list. Pick top 3-5 URLs.
top_urls = [s.url for s in discovered.sources[:5]]

# Read full content (use a parallel reader if your environment has one)
contents = parallel_read(top_urls)  # e.g. mcp__jina__parallel_read_url

# Fold into a citation-backed synthesis
result = mcp__gigaxity-deep-research__synthesize(
    query="<query>",
    sources=contents,
    preset="comprehensive"  # or fast, tutorial, academic, contracrow
)
return result

Token budget: ~5000–10000. Latency: ~10–20 s.

Phase 2C: SYNTHESIZE (cross-source comparison)

# Gather in parallel from multiple search providers
results = await asyncio.gather(
    docs_search(query),       # e.g. Context7 MCP
    code_search(query),       # e.g. Exa get_code_context
    web_search(query),        # e.g. Jina search_web
)

# Optional free middleware: rerank + dedup
ranked = jina_sort_by_relevance(query, results)
deduped = jina_deduplicate_strings(ranked)

result = mcp__gigaxity-deep-research__synthesize(
    query="<query>",
    sources=deduped,
    preset="contracrow"  # surfaces disagreements rather than averaging
)
return result

Token budget: ~5000–10000. Latency: ~10–20 s.

Phase 2D: REASON (CoT over evidence)

# Sources-aware: chain-of-thought synthesis over the pre-gathered evidence.
result = mcp__gigaxity-deep-research__reason(
    query="<query>",
    sources=evidence_list,
)
return result  # markdown text — the synthesized answer (the CoT is
               # consumed by the prompt and not echoed back; if the model
               # fails to emit the expected tags, the full raw response is
               # returned as a fallback)

Token budget: ~5000–15000. Latency: ~15–30 s.

If you do not have pre-gathered sources, drop the sources argument and use depth-controlled CoT instead:

result = mcp__gigaxity-deep-research__reason(
    query="<query>",
    context="<optional background>",
    reasoning_depth="deep"        # shallow / moderate / deep
)

API Reference

MCP tools (stdio)

All seven tools return markdown strings, not JSON. Every tool also accepts an optional openrouter_api_key: str | None = None for per-request key override (omitted from the signatures below for brevity).

mcp__gigaxity-deep-research__search(
    query: str,
    top_k: int = 10,
    focus_mode: Literal["general", "academic", "documentation", "comparison", "debugging", "tutorial", "news"] | None = None
) -> str                      # markdown ranked results, no LLM call; focus_mode routes the SearXNG category lane

mcp__gigaxity-deep-research__vertical_search(
    query: str,
    vertical: Literal["videos", "science", "it", "docs", "packages", "general"] = "videos",
    top_k: int = 10
) -> str                      # markdown results from one SearXNG category + failing engines, no LLM call

mcp__gigaxity-deep-research__research(
    query: str,
    top_k: int = 10,
    reasoning_effort: Literal["low", "medium", "high"] = "medium"
) -> str                      # markdown: search + synthesis + citations

mcp__gigaxity-deep-research__ask(
    query: str,
    context: str = ""
) -> str                      # the LLM's response text, direct call (no search)

mcp__gigaxity-deep-research__discover(
    query: str,
    top_k: int = 10,
    identify_gaps: bool = True,
    focus_mode: Literal["general","academic","documentation","comparison","debugging","tutorial","news"] = "general"
) -> str                      # markdown: knowledge landscape + gaps + sources

mcp__gigaxity-deep-research__synthesize(
    query: str,
    sources: list[dict],      # {title, content, url?, origin?, source_type?}
    style: Literal["comprehensive","concise","comparative","academic","tutorial"] = "comprehensive",
    preset: Literal["comprehensive","fast","contracrow","academic","tutorial"] | None = None
) -> str                      # markdown: synthesis + citations (+ contradictions if preset enables)

mcp__gigaxity-deep-research__reason(
    query: str,
    context: str = "",
    sources: list[dict] | None = None,
    style: Literal["comprehensive","concise","comparative","academic","tutorial"] = "comprehensive",
    reasoning_depth: Literal["shallow", "moderate", "deep"] = "moderate"
) -> str                      # markdown: CoT response. If `sources` is provided,
                              # synthesizes over them; otherwise depth-controlled CoT
                              # over the model's own knowledge plus optional `context`.

For the JSON / typed shape, call the matching REST endpoints (/api/v1/<tool>) — see docs/reference/rest-api.md.

REST endpoints

Base URL: http://localhost:8000 (configurable via RESEARCH_HOST / RESEARCH_PORT).

MethodPathBodyNotes
GET/api/v1/health—Health + active connectors
POST/api/v1/search{query, top_k?, connectors?, focus_mode?}Multi-source search only, no LLM
POST/api/v1/vertical-search{query, vertical?, top_k?}One SearXNG category, no LLM
POST/api/v1/research{query, top_k?, reasoning_effort?, preset?, focus_mode?}Combined search + synthesis
POST/api/v1/ask{query, context?, api_key?}Direct LLM, no search hop
POST/api/v1/discover{query, focus_mode?, identify_gaps?, top_k?}Exploratory expansion + gap detection
POST/api/v1/synthesize{query, sources, style?, max_tokens?}Citation-aware synthesis over pre-gathered content
POST/api/v1/reason{query, sources, api_key?}CoT synthesis over pre-gathered sources (no style — see synthesize for variants)
GET/api/v1/presets—List the five synthesis presets
GET/api/v1/focus-modes—List the seven focus modes

All POST endpoints accept the optional header X-OpenRouter-Api-Key: <key> to override RESEARCH_LLM_API_KEY for that request.

Presets

PresetUse forLatencyLLM calls
fastQuick answers, single-call synthesis~2–5 s1
tutorialStep-by-step explanations with outline~5–10 s1
comprehensiveMulti-pass synthesis with quality gate~15–30 s2–3
contracrowComparison queries — surfaces disagreements~10–20 s2
academicCitation-heavy, formal structure~15–25 s2

Focus modes

ModeTunes
generalDefault, balanced
academicPrioritizes peer-reviewed and .edu sources
documentationPrioritizes official docs and reference sites
comparisonTunes synthesis to surface differences
debuggingPrioritizes Stack Overflow, GitHub issues, error-message matches
tutorialPrioritizes step-by-step content, blog posts
newsDate-bounded, recent-first

Architecture

LayerPath
MCP entryrun_mcp.py → src/mcp_server.py
REST entrysrc/main.py → src/api/routes.py
LLM clientsrc/llm_client.py (OpenRouter on main, generic OpenAI-compat on local-inference branch)
Discoverysrc/discovery/
Synthesissrc/synthesis/
Connectorssrc/connectors/ (SearXNG, Tavily, LinkUp, Brave, Parallel)
Configsrc/config.py (pydantic settings, RESEARCH_* env vars)

Error Handling

ErrorAction
RESEARCH_LLM_API_KEY missingFail fast at startup with clear message
401 from OpenRouterPropagate as 401 to caller; do not retry with same key
429 from OpenRouterExponential backoff (3 attempts), then propagate
SearXNG host unreachableFail open — the keyed connectors (Tavily, LinkUp, Brave, Parallel) still answer if configured
All search sources failReturn empty sources with error field — let the agent decide
LLM timeoutHonor RESEARCH_LLM_TIMEOUT; return partial result if streaming, else 504
Per-request key invalid401 to caller; the env-configured key remains usable for other tenants

Composable dependencies

This skill works alone for synthesis. For the full deep research workflow, pair with the other six MCPs in the stack:

  • mcp__exa-answer__exa_answer — quick factual lookups (1–2 s, citation-backed)
  • mcp__context7__resolve-library-id → mcp__context7__query-docs — official library/API docs
  • mcp__exa__get_code_context_exa — code-context examples
  • mcp__exa__web_search_advanced_exa — category-filtered search (company, people, financial report, news, github, pdf)
  • mcp__jina__search_web / mcp__jina__parallel_read_url — free-tier web access
  • mcp__jina__extract_pdf / mcp__jina__guess_datetime_url — PDF layout, URL freshness
  • mcp__brightdata_fallback__scrape_as_markdown — blocked-URL fallback (CAPTCHA / paywall / Cloudflare)
  • mcp__gptr-mcp__quick_search / deep_research — social-first research (Reddit, X, YouTube)

Routing logic across all seven is in skills/research-workflow/SKILL.md. Sanitized JSON configs for all seven in docs/reference/mcp-configs.md.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.