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
- An API key — get one from the dashboard and export it as
SUPERAGNT_API_KEY. - 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
