Agent skill

Web Search Exa

by gooseworks-ai in gooseworks-ai/goose-skills

Neural web search - find similar content, extract pages, and run deep research

MITAuto-check passedProductivity & Automation

Install Web Search Exa

skills CLI
$ npx skills add gooseworks-ai/goose-skills --skill web-search-exa -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install gooseworks-ai/goose-skills web-search-exa --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/gooseworks-ai/goose-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/research-tools/capabilities/web-search-exa .claude/skills/web-search-exa && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
web-search-exa
GitHub stars
1.2k
Used in
1 other repo
Token cost
~3.4k tokens
SKILL.md length
1,548 words
Files
2
Skills in repo
273
Repo updated
First seen
Licence
MIT

At a glance

Neural web search - find similar content, extract pages, and run deep research

  • Works in 5 steps: Competitive Research: Find companies… → Content Discovery: Find related articles… → Market Research: Discover companies in… → …
  • Tasks that involve Web search
  • SKILL.md covers Setup, Capabilities, Usage and Use Cases, plus 1 more section
  • Calls curl, python3 and npx; reaches api.gooseworks.ai; needs GOOSEWORKS_API_KEY

What it does

Web Search Exa is an agent skill from gooseworks-ai/goose-skills. Neural web search - find similar content, extract pages, and run deep research

Its SKILL.md is about 3.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `skill.meta.json`).

It sits in Productivity & Automation, covering Web search and Deep research. It works with Exa. The repository describes itself as: Library of Growth & GTM skills + data APIs for Claude Code, Codex, Cursor to run ads, social, content, lead gen, seo and data scraping. The licence is MIT.

When your agent uses it

  • Tasks that involve Web search
  • Tasks that involve Deep research

Example prompts

  • “/web-search-exa”

Requirements

  • Python 3
  • Node.js
  • A credential in GOOSEWORKS_API_KEY

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Competitive Research: Find companies similar to competitors
  2. Content Discovery: Find related articles and resources
  3. Market Research: Discover companies in specific niches
  4. Fact-Finding: Get sourced answers to questions
  5. Deep Research: Comprehensive research on complex topics

What it can do on your machine

Read from SKILL.md and the folder at commit c650c6d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • python3
    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.gooseworks.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • GOOSEWORKS_API_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Web Search Exa loads about 3.4k tokens when it runs. Until then it costs about 23 tokens; SKILL.md has 1,548 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~23
When it runs · the whole SKILL.md, loaded when a task matches
~3.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from gooseworks-ai/goose-skills at commit c650c6d, republished under its MIT licence (© gooseworks-ai). 1,548 words, ~3,361 tokens.

Download SKILL.mdSave it as .claude/skills/web-search-exa/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
web-search-exa
description
Neural web search - find similar content, extract pages, and run deep research
source
orthogonal

Exa - Neural Web Search & Research

Setup

Read your credentials from ~/.gooseworks/credentials.json:

bash
export GOOSEWORKS_API_KEY=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json'))['api_key'])")
export GOOSEWORKS_API_BASE=$(python3 -c "import json;print(json.load(open('$HOME/.gooseworks/credentials.json')).get('api_base','https://api.gooseworks.ai'))")

If ~/.gooseworks/credentials.json does not exist, tell the user to run: npx gooseworks login

All endpoints use Bearer auth: -H "Authorization: Bearer $GOOSEWORKS_API_KEY"

Neural search engine for finding similar content, extracting pages, and deep research.

Capabilities

  • Exa Research: Retrieve a paginated list of your research tasks
  • Answer: Get an LLM answer to a question informed by Exa search results
  • Search: The search endpoint lets you intelligently search the web and extract contents from the results
  • Get a task: Retrieve the status and results of a previously created research task
  • Find similar links: Find similar links to the link provided and optionally return the contents of the pages
  • Create a task: Create an asynchronous research task that explores the web, gathers sources, synthesizes findings, and returns results with citations
  • Get contents: Get the full page contents, summaries, and metadata for a list of URLs

Usage

Exa Research

Retrieve a paginated list of your research tasks. The response follows a cursor-based pagination pattern. Pass the limit parameter to control page size (max 50) and use the cursor token returned in the response to fetch subsequent pages.

Parameters:

  • cursor (string) - The cursor to paginate through the results Minimum string length: 1
  • limit (number) - Number of results per page (1-50) Required range: 1 <= x <= 50
bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/research/v1"}'
Answer

Get an LLM answer to a question informed by Exa search results. /answer performs an Exa search and uses an LLM to generate either:

A direct answer for specific queries. (i.e.

Parameters:

  • query* (string) - The question or query to answer.
  • stream (boolean) - If true, the response is returned as a server-sent events (SSS) stream.
  • text (boolean) - If true, the response includes full text content in the search results
bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/answer","body":{"query":"What are the best practices for prompt engineering?"}}'

The search endpoint lets you intelligently search the web and extract contents from the results.By default, it automatically chooses the best search method using Exa’s embeddings-based model and other techniques to find the most relevant results for your query.

Parameters:

  • query* (string) - The query string for the search.
  • additionalQueries (string[]) - Additional query variations for deep search. Only works with type="deep". When provided, these queries are used alongside the main query for comprehensive results.
  • type (enum<string>) - The type of search. Neural uses an embeddings-based model, auto (default) intelligently combines neural and other search methods, fast uses streamlined versions of the search models, and deep provides comprehensive search with query expansion and detailed context.
  • category (enum<string>) - A data category to focus on. The people and company categories have improved quality for finding LinkedIn profiles and company pages. Note: The company and people categories only support a limited set of filters. The following parameters are NOT supported for these categories: startPublishedDate, endPublishedDate, startCrawlDate, endCrawlDate, includeText, excludeText, excludeDomains. For people category, includeDomains only accepts LinkedIn domains. Using unsupported parameters will result in a 400 error.
  • userLocation (string) - The two-letter ISO country code of the user, e.g. US.
  • numResults (integer) - Number of results to return. Limits vary by search type: With "neural": max 100 results With "deep": max 100 results If you want to increase the num results beyond these limits, contact sales (hello@exa.ai)
  • includeDomains (string[]) - List of domains to include in the search. If specified, results will only come from these domains.
  • excludeDomains (string[]) - List of domains to exclude from search results. If specified, no results will be returned from these domains.
  • startCrawlDate (string<date-time>) - Crawl date refers to the date that Exa discovered a link. Results will include links that were crawled after this date. Must be specified in ISO 8601 format.
  • endCrawlDate (string<date-time>) - Crawl date refers to the date that Exa discovered a link. Results will include links that were crawled before this date. Must be specified in ISO 8601 format.
  • startPublishedDate (string<date-time>) - Only links with a published date after this will be returned. Must be specified in ISO 8601 format.
  • endPublishedDate (string<date-time>) - Only links with a published date before this will be returned. Must be specified in ISO 8601 format.
  • includeText (string[]) - List of strings that must be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words.
  • excludeText (string[]) - List of strings that must not be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words. Checks from the first 1000 words of the webpage text.
  • context (string) - Return page contents as a context string for LLM. When true, combines all result contents into one string. We recommend using 10000+ characters for best results, though no limit works best. Context strings often perform better than highlights for RAG applications.
  • moderation (boolean) - Enable content moderation to filter unsafe content from search results.
  • contents (object)
bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/search"}'
  "query": "startups building AI coding assistants",
  "num_results": 10,
  "contents": {"text": true}
}'
Get a task

Retrieve the status and results of a previously created research task.Use the unique researchId returned from POST /research/v1 to poll until the task is finished.

Parameters:

  • stream (string) - Set to "true" to receive real-time updates via Server-Sent Events (SSE)
  • events (string) - Set to "true" to include the detailed event log of all operations performed
bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/research/v1/{researchId}"}'
Show full SKILL.md (714 more words)Show less

Find similar links to the link provided and optionally return the contents of the pages.

Parameters:

  • url* (string) - The url for which you would like to find similar links.
  • numResults (integer) - Number of results to return. Limits vary by search type: With "neural": max 100 results With "deep": max 100 results If you want to increase the num results beyond these limits, contact sales (hello@exa.ai)
  • includeDomains (string[]) - List of domains to include in the search. If specified, results will only come from these domains.
  • excludeDomains (string[]) - List of domains to exclude from search results. If specified, no results will be returned from these domains.
  • startCrawlDate (string<date-time>) - Crawl date refers to the date that Exa discovered a link. Results will include links that were crawled after this date. Must be specified in ISO 8601 format.
  • endCrawlDate (string<date-time>) - Crawl date refers to the date that Exa discovered a link. Results will include links that were crawled before this date. Must be specified in ISO 8601 format.
  • startPublishedDate (string<date-time>) - Only links with a published date after this will be returned. Must be specified in ISO 8601 format.
  • endPublishedDate (string<date-time>) - Only links with a published date before this will be returned. Must be specified in ISO 8601 format.
  • includeText (string[]) - List of strings that must be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words.
  • excludeText (string[]) - List of strings that must not be present in webpage text of results. Currently, only 1 string is supported, of up to 5 words. Checks from the first 1000 words of the webpage text.
  • context (string) - Return page contents as a context string for LLM. When true, combines all result contents into one string. We recommend using 10000+ characters for best results, though no limit works best. Context strings often perform better than highlights for RAG applications.
  • moderation (boolean) - Enable content moderation to filter unsafe content from search results.
  • contents (object)
bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/findSimilar"}'
  "url": "https://example.com/article",
  "num_results": 10
}'
Create a task

Create an asynchronous research task that explores the web, gathers sources, synthesizes findings, and returns results with citations.

Parameters:

  • instructions* (string) - Instructions for what you would like research on. A good prompt clearly defines what information you want to find, how research should be conducted, and what the output should look like.
  • model (enum<string>) - Research model to use. exa-research is faster and cheaper, while exa-research-pro provides more thorough analysis and stronger reasoning.
  • outputSchema (object) - JSON Schema to enforce structured output. When provided, the research output will be validated against this schema and returned as parsed JSON.
bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/research/v1","body":{"instructions":"Research the current state of AI coding assistants"}}'
Get contents

Get the full page contents, summaries, and metadata for a list of URLs.Returns instant results from our cache, with automatic live crawling as fallback for uncached pages.

Parameters:

  • urls* (string[]) - Array of URLs to crawl (backwards compatible with 'ids' parameter).
  • ids (string[]) - Deprecated - use 'urls' instead. Array of document IDs obtained from searches.
  • text (string) - If true, returns full page text with default settings. If false, disables text return.
  • highlights (object) - Text snippets the LLM identifies as most relevant from each page.
  • summary (object) - Summary of the webpage
  • livecrawl (enum<string>) - Options for livecrawling pages.'never': Disable livecrawling (default for neural search).'fallback': Livecrawl when cache is empty.'preferred': Always try to livecrawl, but fall back to cache if crawling fails.'always': Always live-crawl, never use cache. Only use if you cannot tolerate any cached content. This option is not recommended unless consulted with the Exa team.
  • livecrawlTimeout (integer) - The timeout for livecrawling in milliseconds.
  • subpages (integer) - The number of subpages to crawl. The actual number crawled may be limited by system constraints.
  • subpageTarget (string) - Term to find specific subpages of search results. Can be a single string or an array of strings, comma delimited.
  • extras (object) - Extra parameters to pass.
  • context (string) - Return page contents as a context string for LLM. When true, combines all result contents into one string. We recommend using 10000+ characters for best results, though no limit works best. Context strings often perform better than highlights for RAG applications.
bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/run \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/contents"}'
  "ids": ["https://example.com"],
  "text": true,
  "summary": true
}'

Use Cases

  1. Competitive Research: Find companies similar to competitors
  2. Content Discovery: Find related articles and resources
  3. Market Research: Discover companies in specific niches
  4. Fact-Finding: Get sourced answers to questions
  5. Deep Research: Comprehensive research on complex topics

Discover More

For full endpoint details and parameters:

bash
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/search \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"prompt":"exa API endpoints"}' List all endpoints
curl -s -X POST $GOOSEWORKS_API_BASE/v1/proxy/orthogonal/details \
  -H "Authorization: Bearer $GOOSEWORKS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"api":"exa","path":"/research"}'   # Get endpoint details

© gooseworks-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in skills/research-tools/capabilities/web-search-exa of gooseworks-ai/goose-skills.

  • SKILL.md
  • skill.meta.json

Open the folder on GitHubat commit c650c6d

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in gooseworks-ai/goose-skills, which our catalogue first saw on October 9, 2026.

Compare with similar skills

Web Search Exa next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Web Search Exa compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Web Search Exa this skillgooseworks-ai/goose-skills1.2k1 repos~3.4kAutomated safety check: PassMIT
Exa Neural Search via MCPaffaan-m/ECC277k4 repos~1.1kAutomated safety check: PassMIT
Web Research Search Tipsmalob/nix-config463—~2.4kAutomated safety check: PassMIT
AI RAG PipelineNeverSight/learn-skills.dev2171 repos~2kAutomated safety check: PassNone
Agent ReachPanniantong/Agent-Reach95k—~1.4kAutomated safety check: PassMIT
Tavily Web Searchallenpeng0705/EnvoyMesh3.1k3 repos~2.5kAutomated safety check: NotesNone

Similar skills

  • Searches the web, code, companies and people through the Exa MCP server, with notes on setup, the web_search_exa tool and treating results as untrusted data.

    277k GitHub starsUsed in 4 repos~1.1k tokens
    Productivity & AutomationAuto-check passed
  • Web Research Search Tips

    malob/nix-config

    Practical guidance for multi-source web research with Exa, the Firecrawl CLI and Reddit MCP tools: when to search, when to fetch and which tool to prefer.

    463 GitHub stars~2.4k tokensUpdated today
    Research & ScienceAuto-check passed
  • AI RAG Pipeline

    NeverSight/learn-skills.dev

    Build RAG (Retrieval Augmented Generation) pipelines with web search and LLMs.

    217 GitHub starsUsed in 1 repo~2k tokens
    AI & LLM EngineeringAuto-check passed
  • Agent Reach

    Panniantong/Agent-Reach

    Routes web research and platform lookups across 16 sites, including Twitter, Reddit, YouTube, Bilibili, Xiaohongshu and GitHub, through one command-line tool.

    95k GitHub stars~1.4k tokensUpdated 3 days ago
    Productivity & AutomationAuto-check passed
  • Tavily Web Search

    allenpeng0705/EnvoyMesh

    Searches the web through the Tavily API with LLM-friendly output: clean structured results, optional AI-written answers, domain filters, news mode, images and raw content.

    3.1k GitHub starsUsed in 3 repos~2.5k tokens
    Productivity & AutomationAuto-check: notes
  • Perplexity Search

    escapeWu/perplexity-ai

    Searches the live web with citations through perplexity-mcp v2 tools or a bundled Python REST client, with focused ask, deep research and detached tasks.

    171 GitHub stars~1.8k tokensUpdated 13 days ago
    Productivity & AutomationAuto-check passed

More from gooseworks-ai/goose-skills

All 273 skills in this repo
  • Reddit Post Finder

    gooseworks-ai/goose-skills

    Scrape and search Reddit posts using Apify. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Create Image Fal

    gooseworks-ai/goose-skills

    Generate or edit an image via any FAL image model (nano-banana edit, gpt-image, flux, ...), ROUTED THROUGH THE fal-proxy so it bills the Ads agent.

    1.2k GitHub stars~1.3k tokensUpdated today
    Auto-check passed
  • Render Hook Replacement

    gooseworks-ai/goose-skills

    Replace an existing video's opening with a supplied clip or free kinetic text hook while retaining and verifying every original body frame, audio, captions and ending.

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed
  • Blog Feed Monitor

    gooseworks-ai/goose-skills

    Scrape blog posts via RSS feeds (free, no API key) with Apify fallback for JS-heavy sites.

    1.2k GitHub starsUsed in 1 repo~578 tokens
    Auto-check passed
  • Competitor Post Engagers

    gooseworks-ai/goose-skills

    Find leads by scraping engagers from a competitor's top LinkedIn posts.

    1.2k GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check: notes
  • Render Chatgpt Chat

    gooseworks-ai/goose-skills

    Assemble a ChatGPT chat-reveal video ad from a thread + timeline JSON — one continuous Playwright recording of a ChatGPT mobile chat (user types with the iOS keyboard up → taps send → keyboard…

    1.2k GitHub stars~2.3k tokensUpdated today
    Auto-check passed

Works with

Questions about Web Search Exa

What does Web Search Exa do?

Neural web search - find similar content, extract pages, and run deep research. Web Search Exa is an agent skill from gooseworks-ai/goose-skills.

When should I use Web Search Exa?

Web Search Exa fits situations like: tasks that involve Web search; tasks that involve Deep research.

How do I install Web Search Exa in Claude Code?

Run `npx skills add gooseworks-ai/goose-skills --skill web-search-exa -a claude-code`. Or copy the skill folder (skills/research-tools/capabilities/web-search-exa in gooseworks-ai/goose-skills) into .claude/skills/web-search-exa in your project. Claude Code loads it when a task matches its description.

How do I install Web Search Exa in Codex?

Run `npx skills add gooseworks-ai/goose-skills --skill web-search-exa -a codex`. Or copy the skill folder (skills/research-tools/capabilities/web-search-exa in gooseworks-ai/goose-skills) into .agents/skills/web-search-exa in your project. Codex loads it when a task matches its description.

Can I use Web Search Exa in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add gooseworks-ai/goose-skills --skill web-search-exa -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/web-search-exa, .gemini/skills/web-search-exa, .github/skills/web-search-exa and .opencode/skills/web-search-exa in your project.

What does Web Search Exa need to run?

Going by SKILL.md and its folder, Web Search Exa needs the command-line tools its instructions call (curl, python3 and npx) and credentials named GOOSEWORKS_API_KEY. Our summary lists: Python 3; Node.js; A credential in GOOSEWORKS_API_KEY.

Does Web Search Exa access the network?

SKILL.md names 1 domain. In commands or code: api.gooseworks.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Web Search Exa safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Web Search Exa use?

Web Search Exa is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Web Search Exa use?

About 3.4k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Web Search Exa?

Skills that share tags, products or a category with Web Search Exa: Exa Neural Search via MCP (affaan-m/ECC, 277k stars), Web Research Search Tips (malob/nix-config, 463 stars), AI RAG Pipeline (NeverSight/learn-skills.dev, 217 stars) and Agent Reach (Panniantong/Agent-Reach, 95k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Web Search Exa?

gooseworks-ai (a GitHub organization) maintains it in gooseworks-ai/goose-skills, which has 1,240 GitHub stars. The repository holds 273 skills in this directory. The repository was last updated on October 8, 2026.

Source: gooseworks-ai/goose-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.