agentsclimarketplace

Exa

Skill Dianel555/DSkills/skills/exa

High-precision semantic search and content retrieval via Exa API. Use when: (1) Deep research requiring semantic understanding, (2) Code documentation and examples lookup, (3) Company/professional research, (4) AI-powered comprehensive research tasks, (5) URL content extraction with structured output. Triggers: "research", "find papers", "code examples", "company info", "LinkedIn profiles", "deep analysis". Differentiator: Exa excels at semantic/neural search while grok-search is better for real-time news and general web content.From its SKILL.md

Install
npx -y skills add Dianel555/DSkills --skill exa

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • reads credentialsReads from 1 credential source: `EXA_API_KEY`.
  • runs commandsInstructs the agent to run 6 commands, including `cd skills/exa` and 5 more.

SKILL.md

6.4 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

Exa Search

High-precision semantic search via Exa API. Standalone CLI only (no MCP dependency).

Execution Method

# Prerequisites: pip install httpx tenacity
# Environment: EXA_API_KEY (required), EXA_API_URL (optional, default: https://api.exa.ai)

# All examples assume cwd == skills/exa/. The shim auto-chdirs if you launch
# it from elsewhere (e.g., the repo root).
cd skills/exa
python scripts/exa_cli.py --help

Available Tools

# Basic semantic search (highlights always on; supports inline category:<type>)
python scripts/exa_cli.py web_search_exa --query "TypeScript design patterns" [--num-results 10]
python scripts/exa_cli.py web_search_exa --query "category:company Anthropic AI safety"

# Batch URL fetch (urls is a repeatable flag; payload field is upstream `ids`)
python scripts/exa_cli.py web_fetch_exa \
  --urls "https://a.com" --urls "https://b.com" \
  [--max-chars 3000] [--out content.json]

# Advanced filtered search (list params are repeatable flags, no comma syntax)
python scripts/exa_cli.py web_search_advanced_exa --query "transformer" \
  [--type auto|fast|instant] [--category research\ paper] \
  [--include-domains arxiv.org --include-domains papers.nips.cc] \
  [--exclude-domains medium.com] \
  [--include-text "attention"] [--exclude-text "tutorial"] \
  [--start-date 2024-01-01] [--end-date 2024-12-31] \
  [--num-results 10] [--max-age-hours 168] \
  [--text] [--highlights] [--summary] \
  [--max-chars 5000]   # only effective when --text is set; emits stderr warning otherwise
  [--out results.json]

# Configuration / connectivity probe (omit --no-test to run a numResults=1 ping)
python scripts/exa_cli.py get_config_info [--no-test]

Tool Capability Matrix

ToolRequiredOptionalOutput
web_search_exa--query--num-results (1-100)Search results JSON (highlights always present)
web_fetch_exa--urls (repeatable, ≥1)--max-chars (default 3000), --out/contents response JSON
web_search_advanced_exa--query--type, --category, repeatable --include-domains/--exclude-domains/--include-text/--exclude-text, --start-date, --end-date, --num-results, --max-age-hours, --text, --highlights, --summary, --max-chars, --outFiltered search results JSON
get_config_info--no-testConfig + (default) connection_test

Global Options

Place before the subcommand:

OptionPurpose
--api-urlOverride EXA_API_URL (does not write to os.environ)
--api-keyOverride EXA_API_KEY
--debugEnable JSON debug events on stderr (EXA_DEBUG=true) — never logs auth values
--max-retry-wait <s>Cap (seconds) for single retry wait + exponential backoff (default 60, env: EXA_MAX_RETRY_WAIT)
--auth-scheme <scheme>Authentication scheme: x-api-key (default) or bearer for third-party endpoints (env: EXA_AUTH_SCHEME)

Tool Routing Guide

Use CaseRecommended Tool
Real-time news, current eventsgrok-search
Semantic/conceptual researchexa (web_search_exa)
Domain or date-bounded researchexa (web_search_advanced_exa)
Read full content of one or more URLsexa (web_fetch_exa)
Academic papers, technical docsexa (web_search_advanced_exa --include-domains arxiv.org ...)

Workflow Patterns

Pattern 1: Quick Semantic Search

python scripts/exa_cli.py web_search_exa --query "best practices for React hooks" --num-results 5

Pattern 2: Filtered Research (repeatable flags)

python scripts/exa_cli.py web_search_advanced_exa --query "transformer architecture" \
  --include-domains arxiv.org --include-domains papers.nips.cc \
  --start-date 2023-01-01 --text --summary

Pattern 3: Batch URL Read

python scripts/exa_cli.py web_fetch_exa \
  --urls "https://example.com/a" --urls "https://example.com/b" \
  --max-chars 4000 --out batch.json

Pattern 4: Third-Party Endpoint (Bearer Auth)

# Connect to exa-pool or other Exa-compatible proxy
export EXA_API_URL=https://pool.example.com
export EXA_AUTH_SCHEME=bearer
export EXA_API_KEY=your-bearer-token

python scripts/exa_cli.py web_search_exa --query "AI agents" --num-results 5

# Or use CLI flags for one-off requests
python scripts/exa_cli.py --auth-scheme bearer --api-url https://pool.example.com \
  web_search_exa --query "AI agents"

References

The references/ directory carries 11 prompt-engineering guides. Open them on demand when crafting queries:

FileWhen to read
searching.mdCrafting web_search_exa queries (semantic phrasing, category usage)
extraction.mdChoosing between highlights / text / summary on advanced search
filtering.mdBuilding include/exclude domain & date filters
synthesis.mdAggregating multiple result sets into a coherent answer
source-quality.mdVetting source credibility
patterns-code.mdCode/library research recipes
patterns-companies.mdCompany research recipes
patterns-news.mdCurrent-events research recipes
patterns-papers.mdAcademic paper recipes
patterns-people.mdPeople search recipes
patterns-relationships.mdMulti-entity relationship research

Error Handling

ErrorRecovery
EXA_API_KEY not configuredSet environment variable or pass --api-key
HTTP 408/429/5xxAutomatic retry with exponential backoff (max 4 attempts, capped by --max-retry-wait)
HTTP 401Verify API key
TimeoutReduce --num-results or retry

Output Format

All commands print JSON (ensure_ascii=False, indent 2) to stdout. With --out <file>, the response JSON is written to that path and stdout becomes {"status":"ok","file":"<file>"}. Errors go to stderr as {"error":"<message>"} with non-zero exit.

What ships with it: 24 files

46.1 KB alongside SKILL.md, 11 of them executable

exa_cli/

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.