← Back to search

autosearch-ai

0xmariowu Scanned 10d ago

AutoSearch — deep research MCP server for AI developers

C
64 / 100

Versions

2026.4.26latest
Apr 26, 2026
2026.4.25
Apr 25, 2026
2026.4.24
Apr 24, 2026
2026.423.9
Apr 23, 2026
2026.423.8
Apr 23, 2026
+ show 4 moreshow less
2026.423.7
Apr 23, 2026
2026.423.6
Apr 23, 2026
2026.423.5
Apr 23, 2026
2026.423.4
Apr 23, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 23

health
annotations: none low

Return a structured health snapshot for MCP clients. Includes version, registered tool count, required-tool status, channel counts by status, secrets-file presence (key NAMES only), and a cooldown summary from the runtime ChannelHealth. All values are redacted before return — no key VALUES, no cookies, no token text.

list_modes
annotations: none low

List available search modes with their channel guidance. Returns the built-in research modes (academic, news, chinese_ugc, developer, product) plus any user-defined custom modes from ~/.config/autosearch/custom_modes.json. Each mode includes: - key: mode identifier to pass to run_clarify as mode_hint - label_zh / label_en: display name - keywords: phrases that trigger auto-detection - channel_priority: recommended channels for this mode - channel_skip: channels to avoid for this mode

run_clarify
annotations: none low

Run the autosearch clarifier on a user query, returning structured output. Part of the v2 tool-supplier architecture: the runtime AI uses this to decide whether to ask the user a clarifying question, and which channels / mode / rubrics to target if it proceeds. Autosearch does NOT run the full research pipeline here — it only produces the clarification envelope. Args: query: The user's research question, as-is. mode_hint: Optional preference for "fast" / "deep" / "comprehensive". If omitted, the clarifier picks. Returns: ClarifyToolResponse with: - need_clarification: True if runtime should ask the user first. - question: the clarifying question (if needed). - verification: acknowledgement text (if no clarification needed). - mode / query_type / rubrics / channel_priority / channel_skip as structured guidance for the runtime's next step.

query str mode_hint string
run_channel
annotations: none low

Run a single autosearch channel and return raw evidence. Part of the v2 tool-supplier architecture: autosearch does NOT synthesize, compact, or summarize — the runtime AI reads the evidence list and decides what to do (quote, cite, follow up, ignore). Use `list_skills(group="channels")` to discover valid `channel_name` values. Args: channel_name: One of the autosearch channel skill names, e.g. "bilibili", "arxiv", "github", "xiaohongshu". query: The search text. rationale: Optional short rationale (defaults to `query` if empty). Used by some channels to tune ranking. k: Max number of Evidence items to return (latest first). Default 10. Returns: RunChannelResponse with `ok: bool`, `evidence: list[dict]` (up to k items; each evidence is already source_page-slimmed), `reason` populated on failure, and `count_total / count_returned`.

k int query str rationale str channel_name str
list_skills
annotations: none low

List autosearch skills with their frontmatter metadata. Part of the v2 tool-supplier architecture: the runtime AI calls this to discover what autosearch can do, then picks and invokes the leaf skills it needs. Returns static metadata only — this does not run any skill. See also: `autosearch:router` SKILL.md for how to pick groups before reading leaf skills. Args: group: Filter by group ("channels", "tools", "meta", "router"). Empty string = all groups. domain: Filter by domain tag (e.g. "chinese-ugc", "web-fetch", "academic"). Empty string = no domain filter. include_deprecated: If True, include skills marked `deprecated: true` in their frontmatter. Defaults to False so callers don't accidentally discover wave-3 removal targets.

group str domain str include_deprecated bool
loop_init
annotations: none low

Initialize a reflective search loop. Returns {state_id}.

loop_update
annotations: none low

Update loop state with evidence from run_channel. Returns state summary.

query str evidence string state_id str
loop_get_gaps
annotations: none low

Get coverage gaps for this loop. Returns {state_id, gaps}.

state_id str
loop_add_gap
annotations: none low

Mark a topic as a coverage gap. Returns {state_id, gaps}.

gap str state_id str
citation_create
annotations: none low

Create a citation index for a research session. Returns {index_id}.

citation_add
annotations: none low

Add URL to citation index (idempotent). Returns {index_id, citation_number, url}.

url str title str source str index_id str
citation_export
annotations: none low

Export citations as Markdown. Returns {index_id, markdown, count}.

index_id str
citation_merge
annotations: none low

Merge source citation index into target. Returns {merged_count, skipped_duplicates}.

source_id str target_id str
select_channels_tool
annotations: none low

Select 3-8 channels using group-first two-stage algorithm. Call after run_clarify to get a ranked channel list before run_channel. Returns {groups, channels, rationale}.

mode str query str channel_skip string channel_priority string
delegate_subtask
annotations: none low

Run a query across multiple channels concurrently. Use when you want to search several channels in parallel for the same query. Returns {evidence_by_channel, summary, failed_channels, failed_channel_details, budget_used}.

query str channels string max_per_channel int task_description str
doctor
annotations: none low

Scan all configured channels and return their health status with fix hints. Returns a structured report grouped by tier: - tier 0: zero-config (works out of the box) - tier 1: needs API key - tier 2: needs login / cookie (run: autosearch login <platform>) Each channel includes a fix_hint — a one-line command to resolve the issue. Use this to diagnose which channels are missing API keys or credentials.

list_channels
annotations: none low

List all channels with their runtime availability status. Unlike list_skills (which returns SKILL.md metadata), list_channels returns the live status of each channel: whether it's usable right now based on the current environment's API keys and credentials. Args: status_filter: Optional filter — "ok", "warn", or "off". Empty string returns all channels. Returns: {total, ok_count, warn_count, off_count, channels: [{name, status, message, unmet_requires}]}

status_filter str
trace_harvest
annotations: none low

Extract winning query patterns from a run_channel trace. Pass the channel name, query, and result counts from a run_channel call. Returns a list of {query, channel, score} pattern dicts (empty if score < 0.5). Write results to the channel's patterns.jsonl to accumulate learning.

query str channel str outcome str count_total int count_returned int
perspective_questioning
annotations: none low

Generate n sub-questions covering different viewpoints on a topic. Viewpoints: user (practitioner), expert (domain), critic (skeptic), competitor (alternatives). n is clamped to [1, 4]. Returns list of {viewpoint, question} dicts.

n int topic str
graph_search_plan
annotations: none low

Build a DAG from subtasks and return topologically sorted parallel batches. Each subtask dict: {id, description, depends_on?: [id, ...]}. Returns list of batches; subtasks in the same batch can run in parallel. Raises on unknown dependency references or cycles.

subtasks string
recent_signal_fusion
annotations: none low

Filter evidence to items published within the last `days` days, newest first. Looks for date in keys: date, published_at, created_at, ts, timestamp. Items with no parseable date are excluded.

days int evidence string
context_retention_policy
annotations: none low

Trim evidence list to fit within token_budget, keeping highest-scored items. Token estimate: len(str(item)) // 4 per item. Items sorted by 'score' field descending before trimming.

evidence string token_budget int
consolidate_research
annotations: none low

Compress accumulated evidence into a compact research brief. Use this when a research session has accumulated many evidence items (from multiple run_channel calls) and the context is getting large. Deduplicates, reranks by relevance to query, and formats a brief summary. Args: evidence: Combined list of evidence dicts from run_channel / delegate_subtask. query: The original research question (used for relevance ranking). top_k: Max items to keep in the brief (default 5). Returns: { total_processed: int, kept: int, top_evidence: list[dict], source_coverage: {channel: count}, brief_text: "Markdown summary of key findings", }

query str top_k int evidence string

Permissions 5

network medium
Server uses network capabilities via: http, httpx, socket, urllib
filesystem low
Server uses filesystem capabilities via: open(), os, pathlib, shutil, tempfile
shell high
Server uses shell capabilities via: child_process, execSync(), spawnSync(), subprocess
database medium
Server uses database capabilities via: sqlite3
env_vars low
Server uses env_vars capabilities via: os.environ, os.getenv(), process.env

Scan Findings 69

low
Tool 'health' has no annotations annotation_checker · 100%
low
Tool 'list_modes' has no annotations annotation_checker · 100%
low
Tool 'run_clarify' has no annotations annotation_checker · 100%
low
Tool 'run_channel' has no annotations annotation_checker · 100%
low
Tool 'list_skills' has no annotations annotation_checker · 100%
low
Tool 'loop_init' has no annotations annotation_checker · 100%
low
Tool 'loop_update' has no annotations annotation_checker · 100%
low
Tool 'loop_get_gaps' has no annotations annotation_checker · 100%
low
Tool 'loop_add_gap' has no annotations annotation_checker · 100%
low
Tool 'citation_create' has no annotations annotation_checker · 100%
low
Tool 'citation_add' has no annotations annotation_checker · 100%
low
Tool 'citation_export' has no annotations annotation_checker · 100%
low
Tool 'citation_merge' has no annotations annotation_checker · 100%
low
Tool 'select_channels_tool' has no annotations annotation_checker · 100%
low
Tool 'delegate_subtask' has no annotations annotation_checker · 100%
low
Tool 'doctor' has no annotations annotation_checker · 100%
low
Tool 'list_channels' has no annotations annotation_checker · 100%
low
Tool 'trace_harvest' has no annotations annotation_checker · 100%
low
Tool 'perspective_questioning' has no annotations annotation_checker · 100%
low
Tool 'graph_search_plan' has no annotations annotation_checker · 100%
low
Tool 'recent_signal_fusion' has no annotations annotation_checker · 100%
low
Tool 'context_retention_policy' has no annotations annotation_checker · 100%
low
Tool 'consolidate_research' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: markdownify@0.11 (GHSA-7mpr-5m44-h73r) dependency_analyzer · 95%
medium
Vulnerable dependency: markdownify@0.11 (PYSEC-2026-1604) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (GHSA-69qj-pvh9-c5wg) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (GHSA-6v4j-43gg-vj32) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (GHSA-c6mh-fpjc-4pr3) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (GHSA-f7j3-774f-rfhj) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (GHSA-vx4q-3cr2-7cg2) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (PYSEC-2026-3430) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (PYSEC-2026-3431) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (PYSEC-2026-3433) dependency_analyzer · 95%
medium
Vulnerable dependency: yt-dlp@2026.3.17 (PYSEC-2026-3622) dependency_analyzer · 95%
info
package.json metadata manifest_parser · 100%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: health manifest_parser · 90%
info
Tool: list_modes manifest_parser · 90%
info
Tool: run_clarify manifest_parser · 90%
info
Tool: run_channel manifest_parser · 90%
info
Tool: list_skills manifest_parser · 90%
info
Tool: loop_init manifest_parser · 90%
info
Tool: loop_update manifest_parser · 90%
info
Tool: loop_get_gaps manifest_parser · 90%
info
Tool: loop_add_gap manifest_parser · 90%
info
Tool: citation_create manifest_parser · 90%
info
Tool: citation_add manifest_parser · 90%
info
Tool: citation_export manifest_parser · 90%
info
Tool: citation_merge manifest_parser · 90%
info
Tool: select_channels_tool manifest_parser · 90%
info
Tool: delegate_subtask manifest_parser · 90%
info
Tool: doctor manifest_parser · 90%
info
Tool: list_channels manifest_parser · 90%
info
Tool: trace_harvest manifest_parser · 90%
info
Tool: perspective_questioning manifest_parser · 90%
info
Tool: graph_search_plan manifest_parser · 90%
info
Tool: recent_signal_fusion manifest_parser · 90%
info
Tool: context_retention_policy manifest_parser · 90%
info
Tool: consolidate_research manifest_parser · 90%
info
Required env vars (47) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 90%
high
Permission: shell access detected permission_analyzer · 95%
medium
Permission: database access detected permission_analyzer · 90%
low
Permission: env_vars access detected permission_analyzer · 90%
info
SBOM generated: 88 components sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%