Skip to content
Back to skills

Exa Search

ASecurity

Neural web search, parsed page contents, find-similar, and agentic Q&A over the live web through the superagnt unified API.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentsrustgobashapidocumentation

Works with

  • cli
  • api
  • mcp

Security analysis

A96/100
  • mediumUses curl or wget to download content

Pro shows the line behind each finding and how to fix it

Scanned September 23, 2026

npx -y skills add superagnt/leverage --skill exa-search --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Exa Search?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Exa Search
[![Security: A β€” Skills Directory](https://www.skillsdirectory.com/api/skills/superagnt-exa-search/badge)](https://www.skillsdirectory.com/skills/superagnt-exa-search)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: exa-search
description: "Neural web search, parsed page contents, find-similar, and agentic Q&A over the live web through the superagnt unified API."
version: 2.0.2
author: superagnt
license: MIT-0
platforms: [macos, linux, windows]
required_environment_variables:
  - SUPERAGNT_API_KEY
metadata:
  hermes:
    tags: [exa, integration, api, ai-agent]
  openclaw:
    requires:
      env:
        - SUPERAGNT_API_KEY
      bins:
        - curl
    primaryEnv: SUPERAGNT_API_KEY
    emoji: "πŸ”Ž"
    homepage: https://superagnt.com/r/ch-exa-search-docs
---

# Exa Integration

The Exa integration connects your Exa AI account to superagnt so AI agents and automations can query the live web with neural + keyword search, pull parsed page content (text, highlights, summaries), discover semantically similar URLs, and run agentic Q&A with cited sources. Supports the full set of Exa endpoints β€” /search, /contents, /findSimilar, and /answer β€” proxied through your superagnt API key.

## Alternative install: the MCP server

If this client speaks MCP, you can connect the workspace server instead of
using this skill's curl calls β€” after the user connects their
Exa account in the dashboard, the same endpoints below are exposed
as native MCP tools:

```
https://mcp.superagnt.com/mcp
```

The URL publishes full OAuth discovery β€” an MCP-capable client needs the URL
and nothing else (approve once in the browser). Per-client setup lines:
https://mcp.superagnt.com/agent-setup/prompt.md

Everything below works on curl-only environments with just the API key.

## Capabilities and safety

This skill documents the Exa API surface the user's connected
account can reach β€” which can include destructive operations (updates,
deletes) and, where the vendor supports them, actions performed as the user
(sending messages, modifying records, changing settings). Two hard rules:

- **Confirm before destructive or outbound actions.** Never delete, overwrite,
  or send on the user's behalf without their explicit confirmation in the
  conversation.
- **Stay inside the user's request.** Use only the endpoints the task needs;
  this skill grants no access beyond the Exa connection the user
  set up themselves.

## Prerequisites

1. An API key β€” get one from the [dashboard](https://superagnt.com/r/ch-exa-search-key) and export it as
   `SUPERAGNT_API_KEY`.
2. A connected Exa account β€” connect it in the
   [connections dashboard](https://app.superagnt.com/dashboard/connections). Calls fail with a clear error
   until the vendor is connected; that error is the signal to send the user to
   the connections page, not a bug.

Note: `/v1/connections/*` calls run on the USER'S Exa credentials β€”
vendor-side rate limits and billing are theirs, not platform credits.

## Authentication

```
Authorization: Bearer $SUPERAGNT_API_KEY
```

If the variable is not set, ask the user for their key or point them at
https://superagnt.com/r/ch-exa-search-key.

## Verify the install (do this first)

```bash
curl -s https://api.superagnt.com/v1/credits \
  -H 'Authorization: Bearer $SUPERAGNT_API_KEY'
```

A JSON result proves the key end to end. 401 = bad key; an error naming the
connection means the Exa account is not connected yet.

## Base URL

```
https://api.superagnt.com/v1/connections/exa
```

## Available Endpoints

| Method | Path | Summary |
|--------|------|---------|
| `POST` | `/search` | Search |
| `POST` | `/contents` | Get contents |
| `POST` | `/findSimilar` | Find similar links |
| `POST` | `/answer` | Generate an answer from search results |

## Tool Schemas

The following JSON defines every operation with its parameters. Each tool maps
to an API endpoint under the base URL.

```json
[
  {
    "name": "superagnt_connection_exa_search",
    "description": "Search",
    "method": "POST",
    "path": "/search",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "The query string for the search."
        },
        "additionalQueries": {
          "type": "array",
          "description": "Additional query variations for deep-search variants. Used alongside the main query for more comprehensive results."
        },
        "stream": {
          "type": "boolean",
          "description": "If true, the response is returned as an SSE stream of OpenAI-compatible chat completion chunks."
        },
        "outputSchema": {
          "type": "object",
          "description": "JSON schema for synthesized output. When provided, the response includes an output object and output.content matches this schema."
        },
        "systemPrompt": {
          "type": "string",
          "description": "Instructions that guide synthesized output and, for deep-search variants, search planning."
        },
        "type": {
          "type": "string",
          "description": "Search strategy. `auto` intelligently combines neural and other search methods; `fast` uses streamlined models; `deep-lite` / `deep` / `deep-reasoning` are synthesized-output modes; `instant` is the lowest-latency mode."
        },
        "category": {
          "type": "string",
          "description": "A data category to focus on. `people` and `company` support a limited filter set β€” `startPublishedDate`, `endPublishedDate`, `startCrawlDate`, `endCrawlDate`, and `excludeDomains` are not allowed; `includeDomains` for `people` only accepts LinkedIn domains."
        },
        "userLocation": {
          "type": "string",
          "description": "Two-letter ISO country code of the user (e.g. `US`)."
        },
        "numResults": {
          "type": "integer",
          "description": "Number of results to return. Max 100 for `neural` and deep-search variants."
        },
        "includeDomains": {
          "type": "array",
          "description": "Restrict results to these domains."
        },
        "excludeDomains": {
          "type": "array",
          "description": "Exclude these domains from results."
        },
        "startCrawlDate": {
          "type": "string",
          "description": "Only include links crawled after this ISO 8601 date."
        },
        "endCrawlDate": {
          "type": "string",
          "description": "Only include links crawled before this ISO 8601 date."
        },
        "startPublishedDate": {
          "type": "string",
          "description": "Only include links with a published date after this ISO 8601 date."
        },
        "endPublishedDate": {
          "type": "string",
          "description": "Only include links with a published date before this ISO 8601 date."
        },
        "moderation": {
          "type": "boolean",
          "description": "Enable content moderation to filter unsafe content from results."
        },
        "contents": {
          "type": "object",
          "description": "Content enrichment options returned alongside search results. See /contents for the full schema."
        }
      },
      "required": [
        "query"
      ]
    }
  },
  {
    "name": "superagnt_connection_exa_getContents",
    "description": "Get contents",
    "method": "POST",
    "path": "/contents",
    "parameters": {
      "type": "object",
      "properties": {
        "urls": {
          "type": "array",
          "description": "URLs to crawl (backwards compatible with `ids`)."
        },
        "ids": {
          "type": "array",
          "description": "Document IDs obtained from previous searches."
        },
        "text": {
          "type": "string",
          "description": "Boolean or advanced text options object. Object form supports `maxCharacters`, `includeHtmlTags`, `verbosity` (`compact` | `standard` | `full`), `includeSections`, `excludeSections` (header | navigation | banner | body | sidebar | footer | metadata)."
        },
        "highlights": {
          "type": "string",
          "description": "Boolean or advanced highlights object. Object form supports `maxCharacters`, `query`."
        },
        "summary": {
          "type": "object",
          "description": "LLM-generated summary options."
        },
        "livecrawl": {
          "type": "string",
          "description": "Deprecated β€” use `maxAgeHours`."
        },
        "livecrawlTimeout": {
          "type": "integer",
          "description": "livecrawlTimeout"
        },
        "maxAgeHours": {
          "type": "integer",
          "description": "Max age of cached content in hours. Positive = livecrawl if older, 0 = always livecrawl, -1 = never livecrawl."
        },
        "subpages": {
          "type": "integer",
          "description": "subpages"
        },
        "subpageTarget": {
          "type": "string",
          "description": "String or array of strings."
        },
        "extras": {
          "type": "object",
          "description": "extras"
        }
      },
      "required": [
        "urls"
      ]
    }
  },
  {
    "name": "superagnt_connection_exa_findSimilar",
    "description": "Find similar links",
    "method": "POST",
    "path": "/findSimilar",
    "parameters": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string",
          "description": "The URL to find similar links for."
        },
        "numResults": {
          "type": "integer",
          "description": "numResults"
        },
        "includeDomains": {
          "type": "array",
          "description": "includeDomains"
        },
        "excludeDomains": {
          "type": "array",
          "description": "excludeDomains"
        },
        "startCrawlDate": {
          "type": "string",
          "description": "startCrawlDate"
        },
        "endCrawlDate": {
          "type": "string",
          "description": "endCrawlDate"
        },
        "startPublishedDate": {
          "type": "string",
          "description": "startPublishedDate"
        },
        "endPublishedDate": {
          "type": "string",
          "description": "endPublishedDate"
        },
        "moderation": {
          "type": "boolean",
          "description": "moderation"
        },
        "contents": {
          "type": "object",
          "description": "Content enrichment options. Same shape as in /search and /contents."
        }
      },
      "required": [
        "url"
      ]
    }
  },
  {
    "name": "superagnt_connection_exa_answer",
    "description": "Generate an answer from search results",
    "method": "POST",
    "path": "/answer",
    "parameters": {
      "type": "object",
      "properties": {
        "query": {
          "type": "string",
          "description": "The question or query to answer."
        },
        "stream": {
          "type": "boolean",
          "description": "If true, returns an SSE stream."
        },
        "text": {
          "type": "boolean",
          "description": "If true, citations include full text content of each source."
        },
        "outputSchema": {
          "type": "object",
          "description": "JSON Schema Draft 7 for structured answers."
        }
      },
      "required": [
        "query"
      ]
    }
  }
]
```

## Example

```bash
curl -X POST 'https://api.superagnt.com/v1/connections/exa/search' \
  -H 'Authorization: Bearer $SUPERAGNT_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{"query":"latest developments in LLMs","numResults":10}'
```

## Use Cases

- Give agents real-time web knowledge beyond their training cutoff
- Research a company, competitor, or topic with cited sources and summaries
- Build retrieval-augmented generation pipelines grounded in the live web
- Pull clean page text for summarization, extraction, or ingest into a vector store
- Monitor news and blog posts filtered to trusted domains and date ranges
- Run agentic Q&A that returns answers plus the sources Exa used

## Links

- [Documentation](https://superagnt.com/r/ch-exa-search-docs)
- [Dashboard / API keys](https://superagnt.com/r/ch-exa-search-key)
- [Connections dashboard](https://app.superagnt.com/dashboard/connections)
- [This listing](https://clawhub.ai/superagnt/skills/exa-search)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.