Setu Recipes: reusable digital workers across every app.Browse templates

Integrations / Exa

Exa

Neural web search with page contents, similar-page discovery and cited answers.

4 actions API key 4 read0 write Calls api.exa.ai

Connect

TypeScript
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "exa" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();

Permissions requested

This toolkit uses a single credential and requests no scopes.

Actions

Get a cited answerreadexa.answerAsk a question and get an answer written from live web search, with the source citations.
InputTypeDescription
querystringRequiredThe question to answer
textbooleanOptionalInclude the full text of cited pages
modelstringOptionalAnswer model
systemPromptstringOptionalExtra instructions for the answer
TypeScript
await setu.execute({
  userId: "user_1",
  action: "exa.answer",
  input: {
    "query": "<query>"
  },
});
Find similar pagesreadexa.find_similarFind web pages similar to a given URL, optionally excluding the source domain or limiting to certain domains.
InputTypeDescription
urlstringRequiredThe URL to find similar pages for
numResultsintegerOptionalNumber of results, up to 100 (default 10)
includeDomainsarray of stringOptionalOnly return results from these domains
excludeDomainsarray of stringOptionalNever return these domains
excludeSourceDomainbooleanOptionalExclude results from the same domain as the url
contentsobjectOptionalOptions for page contents, e.g. {"highlights": true}
TypeScript
await setu.execute({
  userId: "user_1",
  action: "exa.find_similar",
  input: {
    "url": "<url>"
  },
});
Get page contentsreadexa.get_contentsFetch the text, highlights or summary of specific pages by URL (or Exa document id), up to 100 at a time.
InputTypeDescription
urlsarray of stringRequiredURLs to fetch, 1 to 100
textbooleanOptionalReturn the full page text
highlightsbooleanOptionalReturn relevant highlight snippets
maxAgeHoursintegerOptionalMaximum cache age in hours; 0 always fetches fresh, -1 always uses cache
TypeScript
await setu.execute({
  userId: "user_1",
  action: "exa.get_contents",
  input: {
    "urls": []
  },
});