mcpField
E
exa-search

exa-search

github.com/benedictkingProductivity5621 installsUpdated 27w ago
Repository

About exa-search

exa-search is a skill for choosing and calling Exa endpoints for web search, content extraction, similar-page discovery, direct answers, and structured research. It separates request planning from API execution through a sub-skill.

Key features

  1. 01Selects an Exa endpoint by intent
  2. 02Searches the web with multiple search types
  3. 03Extracts content from result IDs
  4. 04Finds pages similar to a URL
  5. 05Produces answers or schema-based research

Use cases

  1. 01Research a topic across web pages
  2. 02Retrieve full text from search results
  3. 03Find pages related to a known URL
  4. 04Get a direct answer or structured report

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/benedictking/exa-search --skill exa-search

After installing, type/exa-searchin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

.env.example
.gitignore
exa-api.cjs
exa-fetcher.md

Details

From the project README

Exa Search Skill

Trigger Conditions & Endpoint Selection

Choose Exa endpoint based on user intent:

  • search: Need semantic search / find web pages / research topics
  • contents: Given result IDs, need to extract full content
  • findsimilar: Given URL, need to find similar pages
  • answer: Need direct answer to a question
  • research: Need structured research output following given output_schema

Recommended Architecture (Main Skill + Sub-skill)

This skill uses a two-phase architecture:

  1. Main skill (current context): Understand user question → Choose endpoint → Assemble JSON payload
  2. Sub-skill (fork context): Only responsible for HTTP call execution, avoiding conversation history token waste

Execution Method

Use Task tool to invoke exa-fetcher sub-skill, passing command and JSON (stdin):

Task parameters:
- subagent_type: Bash
- description: "Call Exa API"
- prompt: cat <<'JSON' | node .claude/skills/exa-search/exa-api.cjs <search|contents|findsimilar|answer|research>
  { ...payload... }
  JSON

Payload Examples

1) Search
cat <<'JSON' | node .claude/skills/exa-search/exa-api.cjs search
{
  "query": "Latest research in LLMs",
  "type": "auto",
  "numResults": 10,
  "category": "research paper",
  "includeDomains": [],
  "excludeDomains": [],
  "startPublishedDate": "2025-01-01",
  "endPublishedDate": "2025-12-31",
  "includeText": [],
  "excludeText": [],
  "context": true,
  "contents": {
    "text": true,
    "highlights": true,
    "summary": true
  }
}
JSON

Search Types:

  • neural: Semantic search using embeddings
  • fast: Quick keyword-based search
  • auto: Automatically choose best method (default)
  • deep: Comprehensive deep search

Categories:

  • company, people, research paper, news, pdf, github, tweet, etc.
2) Contents
cat <<'JSON' | node .claude/skills/exa-search/exa-api.cjs contents
{
  "ids": ["result-id-1", "result-id-2"],
  "text": true,
  "highlights": true,
  "summary": true
}
JSON
3) Find Similar
cat <<'JSON' | node .claude/skills/exa-search/exa-api.cjs findsimilar
{
  "url": "https://example.com/article",
  "numResults": 10,
  "category": "news",
  "includeDomains": [],
  "excludeDomains": [],
  "startPublishedDate": "2025-01-01",
  "contents": {
    "text": true,
    "summary": true
  }
}
JSON
4) Answer
cat <<'JSON' | node .claude/skills/exa-search/exa-api.cjs answer
{
  "query": "What is the capital of France?",
  "numResults": 5,
  "includeDomains": [],
  "excludeDomains": []
}
JSON
5) Research
cat <<'JSON' | node .claude/skills/exa-search/exa-api.cjs research
{
  "input": "What are the latest developments in AI?",
  "model": "auto",
  "stream": false,
  "output_schema": {
    "properties": {
      "topic": {
        "type": "string",
        "description": "The main topic"
      },
      "key_findings": {
        "type": "array",
        "description": "List of key findings",
        "items": {
          "type": "string"
        }
      }
    },
    "required": ["topic"]
  },
  "citation_format": "numbered"
}
JSON

Environment Variables & API Key

Two ways to configure API Key (priority: environment variable > .env):

  1. Environment variable: EXA_API_KEY
  2. .env file: Place in .claude/skills/exa-search/.env, can copy from .env.example

Response Format

All endpoints return JSON with:

  • requestId: Unique request identifier
  • results: Array of search results
  • searchType: Type of search performed (for search endpoint)
  • context: LLM-friendly context string (if requested)
  • costDollars: Detailed cost breakdown

Comments

Markdown supported