agentsclimarketplace

Exa search

Skill BenedictKing/benedictking-skills/skills/exa-search

BenedictKing's Agent Skills collection for Claude Code and compatible agents

Install
npx -y skills add BenedictKing/benedictking-skills --skill exa-search

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 13 stars13 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use this skill when users need semantic web search, similar-page discovery, result content retrieval, research-paper lookup, GitHub discovery, or structured Exa-powered research.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

4.9 KB, as published. Nobody here has run it

Exa Search Skill

Trigger Conditions & Endpoint Selection

Choose Exa endpoint based on user intent:

  • search: Need semantic search / find web pages / research topics. Use type: "auto" by default.
  • deep search / structured research: Use the search endpoint with type: "deep" or type: "deep-reasoning" and optional outputSchema.
  • 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 and /research/v1 are deprecated and were hard-removed on 2026-05-01. Do not use them for new calls; migrate research-style requests to /search with type: "deep-reasoning".

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 scripts/exa-api.cjs <search|contents|findsimilar|answer>
  { ...payload... }
  JSON

The script still accepts the legacy research command for backwards compatibility, but it normalizes the payload and sends it to /search with type: "deep-reasoning".

Payload Examples

1) Search

cat <<'JSON' | node scripts/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",
  "contents": {
    "highlights": true,
    "summary": true
  }
}
JSON

Search Types:

  • auto: Balanced default
  • fast: Low latency
  • instant: Lowest latency
  • deep-lite: Lightweight synthesized output
  • deep: Multi-step search with reasoning and structured outputs
  • deep-reasoning: Highest-effort deep search for complex research tasks

Treat older neural references as legacy terminology; prefer auto for normal searches.

Categories:

  • company, people, research paper, news, personal site, financial report, etc.

2) Contents

cat <<'JSON' | node scripts/exa-api.cjs contents
{
  "ids": ["result-id-1", "result-id-2"],
  "text": true,
  "highlights": true,
  "summary": true
}
JSON

3) Find Similar

cat <<'JSON' | node scripts/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 scripts/exa-api.cjs answer
{
  "query": "What is the capital of France?",
  "numResults": 5,
  "includeDomains": [],
  "excludeDomains": []
}
JSON

5) Structured Research via Search

Use /search with type: "deep-reasoning" and outputSchema for research-style synthesized output.

cat <<'JSON' | node scripts/exa-api.cjs search
{
  "query": "What are the latest developments in AI?",
  "type": "deep-reasoning",
  "stream": false,
  "systemPrompt": "Prefer official sources and provide specific, grounded findings.",
  "outputSchema": {
    "type": "object",
    "properties": {
      "topic": {
        "type": "string",
        "description": "The main topic"
      },
      "key_findings": {
        "type": "array",
        "description": "List of key findings",
        "items": {
          "type": "string"
        }
      }
    },
    "required": ["topic"]
  }
}
JSON

/search returns synthesized content in output.content and field-level citations/confidence in output.grounding when outputSchema is used. Do not add citation or confidence fields to the schema.

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 .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

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.