360 Secure SkillHub
360 安全技能中心

Exa Integration

该 Skill 通过 superagnt 统一 API 接入 Exa,提供搜索、内容提取、相似链接和问答四类端点;可执行神经网页搜索、页面内容/摘要提取、相似链接发现和带来源问答。需要 SUPERAGNT_API_KEY 及已连接的 Exa 账户,可用 curl 调用或 MCP 接入。

superagnt
superagnt
热度 43.44
最近更新 2026-09-23 02:45:38
分类:搜索依赖:第三方 API / 代码执行应用场景:研究 / API 集成 / 摘要总结 / 数据处理

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add superagnt/exa-search
Metadata
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.6
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 and export it as SUPERAGNT_API_KEY.
  2. A connected Exa account — connect it in the connections dashboard. 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)

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.

[
  {
    "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

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