← Back to search

io.github.daedalus/mcp-exa

daedalus Scanned 25d ago

MCP server exposing Exa websearch API

B
83.4 / 100

Versions

0.1.1latest
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 13

web_search_exa
annotations: none low

Search the web for any topic and get clean, ready-to-use content. Args: query: The search query string. num_results: Number of results to return (default: 10). text_max_characters: Maximum characters per result (0 for unlimited). summary_query: Query to generate AI summary of results. Returns: Dictionary containing search results with title, url, content. Example: >>> web_search_exa("Python asyncio best practices") {"results": [...]}

query str num_results int summary_query str text_max_characters int
get_code_context_exa
annotations: none low

Find code examples, documentation, and programming solutions from GitHub, Stack Overflow, and docs. Args: query: The code search query string. tokens_num: Context length in tokens (default: 5000, typical range: 1000-50000). Returns: Dictionary containing code examples with source URLs. Example: >>> get_code_context_exa("Python FastMCP server example") {"results": [...]}

query str tokens_num int
crawling_exa
annotations: none low

Get the full content of a specific webpage from a known URL. Args: url: The URL to crawl. query: Query to extract relevant content. text_max_characters: Maximum characters to extract (0 for unlimited). Returns: Dictionary containing extracted content from the URL. Example: >>> crawling_exa("https://github.com/exa-labs/exa-mcp-server") {"results": [...]}

url str query str text_max_characters int
web_search_advanced_exa
annotations: none low

Advanced web search with full control over filters, domains, dates, and content options. Args: query: The search query string. num_results: Number of results to return (default: 10). search_type: Search type - "auto", "fast", "deep", or "neural" (default: "auto"). category: Category filter - "company", "news", "people", "research paper", "financial report", "personal site". include_domains: List of domains to include. exclude_domains: List of domains to exclude. include_text: List of text patterns that must be present (single item recommended). exclude_text: List of text patterns to exclude (single item recommended). start_published_date: Start date filter (ISO 8601 format, e.g., "2024-01-01"). end_published_date: End date filter (ISO 8601 format). enable_summary: Enable AI-generated summary. summary_query: Query to guide summary generation. enable_highlights: Enable highlights extraction. highlights_query: Query to extract highlights. Returns: Dictionary containing advanced search results. Example: >>> web_search_advanced_exa( ... query="AI infrastructure startups", ... category="company", ... num_results=20, ... search_type="auto" ... ) {"results": [...]}

query str category str num_results int search_type str exclude_text string include_text string summary_query str enable_summary bool exclude_domains string include_domains string highlights_query str enable_highlights bool end_published_date str start_published_date str
search
annotations: none low

Perform a web search using Exa. Args: query: The search query string. num_results: Number of search results to return (default: 10). contents: Options for retrieving page contents. Use False to disable. include_domains: Domains to include in the search. exclude_domains: Domains to exclude from the search. start_crawl_date: Only links crawled after this date (YYYY-MM-DD). end_crawl_date: Only links crawled before this date (YYYY-MM-DD). start_published_date: Only links published after this date (YYYY-MM-DD). end_published_date: Only links published before this date (YYYY-MM-DD). include_text: Strings that must appear in the page text. exclude_text: Strings that must not appear in the page text. type: Search type - 'auto', 'fast', 'deep', 'deep-reasoning', or 'instant'. category: Data category to focus on (e.g., 'company', 'news', 'research_paper'). flags: Experimental flags for Exa usage. moderation: If True, moderate search results for safety. user_location: Two-letter ISO country code for user location. additional_queries: Alternative query formulations for deep search. output_schema: JSON schema for deep search structured output. Returns: Dict containing search results with optional contents. Example: >>> search("hottest AI startups", num_results=5) {"results": [{"title": "...", "url": "..."}]}

type string flags string query str category string contents string moderation string num_results string exclude_text string include_text string output_schema string user_location string end_crawl_date string exclude_domains string include_domains string start_crawl_date string additional_queries string end_published_date string start_published_date string
find_similar
annotations: none low

Find pages similar to a given URL using Exa. Args: url: The URL to find similar pages for. num_results: Number of results to return. contents: Options for retrieving page contents. Use False to disable. include_domains: Domains to include in the search. exclude_domains: Domains to exclude from the search. start_crawl_date: Only links crawled after this date (YYYY-MM-DD). end_crawl_date: Only links crawled before this date (YYYY-MM-DD). start_published_date: Only links published after this date (YYYY-MM-DD). end_published_date: Only links published before this date (YYYY-MM-DD). include_text: Strings that must appear in the page text. exclude_text: Strings that must not appear in the page text. exclude_source_domain: Whether to exclude the source domain. category: Data category to focus on. flags: Experimental flags for Exa usage. Returns: Dict containing similar pages. Example: >>> find_similar("https://example.com", num_results=5) {"results": [{"title": "...", "url": "..."}]}

url str flags string category string contents string num_results string exclude_text string include_text string end_crawl_date string exclude_domains string include_domains string start_crawl_date string end_published_date string start_published_date string exclude_source_domain string
get_contents
annotations: none low

Retrieve contents for a list of URLs using Exa. Args: urls: A single URL or list of URLs to retrieve contents from. Returns: Dict containing the contents of each URL. Example: >>> get_contents(["https://example.com/article1", "https://example.com/article2"]) {"results": [{"url": "...", "title": "...", "text": "..."}]}

urls string
answer
annotations: none low

Generate an answer to a query using Exa's search and LLM capabilities. Args: query: The query to answer. text: Whether to include full text in the results. system_prompt: A system prompt to guide the LLM's behavior. model: The model to use for answering (default: exa). output_schema: JSON schema for structured output. user_location: Two-letter ISO country code for user location. Returns: Dict containing the answer and citations. Example: >>> answer("What is the capital of France?") {"answer": "Paris", "citations": [...]}

text string model string query str output_schema string system_prompt string user_location string
stream_answer
annotations: none low

Generate a streaming answer response using Exa. Args: query: The query to answer. text: Whether to include full text in the results. system_prompt: A system prompt to guide the LLM's behavior. model: The model to use for answering. output_schema: JSON schema for structured output. user_location: Two-letter ISO country code for user location. Returns: List of dicts containing partial answers and citations. Example: >>> await stream_answer("What is the capital of France?") [{"content": "Paris", "citations": [...]}]

text string model string query str output_schema string system_prompt string user_location string
research_create
annotations: none low

Create a new research request using Exa. Args: instructions: The research instructions describing what to research. model: The model to use ('exa-research-fast', 'exa-research', 'exa-research-pro'). output_schema: JSON schema for structured output format. Returns: Dict containing the research task ID and initial status. Example: >>> research_create(instructions="What is the latest valuation of SpaceX?") {"research_id": "abc-123", "status": "running"}

model string instructions str output_schema string
research_get
annotations: none low

Get a research request by ID using Exa. Args: research_id: The unique identifier of the research task. events: Whether to include events in the response. output_schema: Optional Pydantic model for typed output validation. Returns: Dict containing the research task status and output. Example: >>> research_get("abc-123") {"research_id": "abc-123", "status": "completed", "output": {...}}

events string research_id str output_schema string
research_poll_until_finished
annotations: none low

Poll until research is finished using Exa. Args: research_id: The unique identifier of the research task. poll_interval: Milliseconds between polling attempts (default: 1000). timeout_ms: Maximum time to wait in milliseconds (default: 600000). events: Whether to include events in the response. output_schema: Optional Pydantic model for typed output validation. Returns: Dict containing the completed research task. Example: >>> research_poll_until_finished("abc-123") {"research_id": "abc-123", "status": "completed", "output": {...}}

events string timeout_ms string research_id str output_schema string poll_interval string
research_list
annotations: none low

List research requests using Exa. Args: cursor: Pagination cursor from a previous response. limit: Maximum number of results to return. Returns: Dict containing the list of research requests. Example: >>> research_list(limit=10) {"data": [...], "has_more": true, "next_cursor": "..."}

limit string cursor string

Permissions 3

network medium
Server uses network capabilities via: httpx
filesystem low
Server uses filesystem capabilities via: os
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 36

low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
low
Tool 'web_search_exa' has no annotations annotation_checker · 100%
low
Tool 'get_code_context_exa' has no annotations annotation_checker · 100%
low
Tool 'crawling_exa' has no annotations annotation_checker · 100%
low
Tool 'web_search_advanced_exa' has no annotations annotation_checker · 100%
low
Tool 'search' has no annotations annotation_checker · 100%
low
Tool 'find_similar' has no annotations annotation_checker · 100%
low
Tool 'get_contents' has no annotations annotation_checker · 100%
low
Tool 'answer' has no annotations annotation_checker · 100%
low
Tool 'stream_answer' has no annotations annotation_checker · 100%
low
Tool 'research_create' has no annotations annotation_checker · 100%
low
Tool 'research_get' has no annotations annotation_checker · 100%
low
Tool 'research_poll_until_finished' has no annotations annotation_checker · 100%
low
Tool 'research_list' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
low
Cross-tool reference in 'find_similar': Comparison: 'similar to a' cross_tool_detector · 30%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: web_search_exa manifest_parser · 90%
info
Tool: get_code_context_exa manifest_parser · 90%
info
Tool: crawling_exa manifest_parser · 90%
info
Tool: web_search_advanced_exa manifest_parser · 90%
info
Tool: search manifest_parser · 90%
info
Tool: find_similar manifest_parser · 90%
info
Tool: get_contents manifest_parser · 90%
info
Tool: answer manifest_parser · 90%
info
Tool: stream_answer manifest_parser · 90%
info
Tool: research_create manifest_parser · 90%
info
Tool: research_get manifest_parser · 90%
info
Tool: research_poll_until_finished manifest_parser · 90%
info
Tool: research_list manifest_parser · 90%
info
Required env vars (2) 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 · 70%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%