Skip to content
cccskills
FreePublished on GitHub

exa

AI-first web search via Exa — semantic/neural ranking, category-scoped results, fresh content retrieval, and one-shot answer synthesis with citations. Use when the user needs current web information better ranked than general web search, or a grounded answer with sources.

The English summary is being prepared. Showing the original description.

See how to install

Files included (1)

  • SKILL.md5.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Exa Search

Direct web search against Exa's REST API — no MCP required. Better than generic web search when you need recency, domain/category scoping, or synthesized answers with citations.

Usage

  • Use for: Recent events/releases, papers/companies/news by category, domain-filtered queries, answers with sources.
  • Skip for: Language concepts from memory, debugging user's own code, known-URL fetches (just curl), library docs (use Context7).

Credentials check

[ -n "$EXA_API_KEY" ] && echo "EXA_API_KEY: PRESENT" || echo "EXA_API_KEY: MISSING"

Never echo the variable directly — the value would appear in the conversation transcript. Use only the boolean pattern above.

If MISSING, respond to the user with EXACTLY this message (do NOT paraphrase, do NOT suggest manual JSON edits):

I need your exa credential. Run this in another terminal — it'll open the signup page, validate format, and save it safely with masked input:

teleport-setup add-key exa

Then restart Claude Code (/exit, then claude) and ask me again.

Do NOT suggest editing ~/.claude/settings.local.json manually. The teleport-setup add-key command handles it with backup, validation, and masked input. Stop execution until the user has run the command and restarted.

API

  • Base URL: https://api.exa.ai
  • Auth: x-api-key: $EXA_API_KEY — custom header, NOT Authorization. (Bearer works as fallback; x-api-key is canonical.)
  • Content-Type: application/json. All endpoints are POST with JSON body.
  • Every response includes requestId and costDollars — monitor per response.

Endpoints

EndpointPurpose
/searchFind URLs matching a query (neural/fast/deep/auto variants)
/contentsFetch cleaned text / highlights / summaries for URLs
/findSimilarGiven a URL, find semantically similar pages
/answerOne-shot Q&A — returns answer + citations in one call
/researchLong-running structured research; async, returns JSON schema

Picking type on /search

typeWhen to useCost
auto (default)Let Exa decide. Fine for most queries.Low
neuralConceptual / fuzzy queries. Best semantic match.Low
fastLatency-sensitive, quick keyword-style.Low
deepHard research; Exa expands query + multi-step fetch.Higher
deep-reasoningDeep + extra reasoning pass. Slow, most thorough.Highest

Scoping knobs

  • category: company, research paper, news, personal site, financial report, people. Big precision boost.
  • includeDomains / excludeDomains: arrays, up to 1200 each.
  • startPublishedDate / endPublishedDate: ISO 8601.
  • userLocation: ISO-2 country code (e.g. "US", not "United States").

Primary workflows

1. Search, then hydrate content (/search returns URLs/metadata, not page text)

# Step 1: search only
curl -sL -X POST -H "x-api-key: $EXA_API_KEY" -H "Content-Type: application/json" \
  "https://api.exa.ai/search" \
  -d '{"query":"Next.js 15 app router caching 2026","type":"neural","numResults":10,"category":"news","startPublishedDate":"2026-01-01"}'

# Step 2: hydrate only chosen URLs
curl -sL -X POST -H "x-api-key: $EXA_API_KEY" -H "Content-Type: application/json" \
  "https://api.exa.ai/contents" \
  -d '{"urls":["https://example.com/a","https://example.com/b"],"text":{"maxCharacters":3000,"verbosity":"compact"},"summary":{"query":"caching behavior changes"}}'

2. One-shot answer with citations

curl -sL -X POST -H "x-api-key: $EXA_API_KEY" -H "Content-Type: application/json" \
  "https://api.exa.ai/answer" \
  -d '{"query":"What changed in React 19 for server components?","text":false}' \
  | jq '{answer, sources: [.citations[] | {title, url}]}'

Gotchas

  • type: keyword does NOT exist in the current API. Older guides reference it; current set is auto | neural | fast | deep | deep-reasoning | instant. Invalid type returns an error.
  • livecrawl is deprecated — use maxAgeHours (positive: cache if younger than N hours; 0: always livecrawl; -1: never). Don't set both.
  • Default numResults=10 silently caps. For survey/research queries, request 20–50 explicitly.
  • Cost visibility is on you. Every response carries costDollars.total; inspect it when looping or hydrating large sets.
  • /contents: use urls, not ids. ids still works but is legacy.
  • Categories change filter support. company and people reject date filters and excludeDomains. people only honors LinkedIn in includeDomains. Silent empty result = incompatible combo.
  • userLocation expects ISO-2. "United States" silently no-ops; use "US".

Attribution

When done, state: Used skill: Exa Search (from teleport catalog).

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

{{One-sentence what-it-does + when to use it. Mention it bypasses the MCP via the REST API with {{ENV_VAR}}. Use when the user wants X, Y, Z programmatically without the {{service}} MCP installed.}}

The English summary is being prepared. Showing the original description.

mnlt/teleport8Updated Apr 25, 2026

Manage Cloudflare DNS zones, Workers, Pages, R2, KV, D1, and analytics via REST API. Use when the user wants to query DNS, deploy a Worker, list R2 buckets, manage KV namespaces, run D1 queries, or check analytics without the Cloudflare MCP installed.

The English summary is being prepared. Showing the original description.

mnlt/teleport8Updated Apr 25, 2026

Fetch up-to-date library, framework, and SDK documentation via Context7's search and docs endpoints. Use when the user asks about a library/API (React, Next.js, Prisma, Supabase, Tailwind, Django, Vue, etc.) and you need current docs, not Claude's training-time knowledge. Skip this skill for generic programming questions that don't require library-specific docs.

The English summary is being prepared. Showing the original description.

mnlt/teleport8Updated Apr 25, 2026

Operate Discord via its REST API — post/read channel messages, manage guilds + roles, fire webhooks, register slash commands. Use when the user wants a bot to post to a channel, read recent history, run a community admin task, or ship one-way notifications via webhook URL without running a bot process.

The English summary is being prepared. Showing the original description.

mnlt/teleport8Updated Apr 25, 2026

figma

Free

Read Figma files, component libraries, styles, comments, and export rendered assets (PNG / SVG / JPG / PDF) via Figma's REST API. Use when the user needs programmatic access to design files, to pull node data into code generation, or to export assets without opening the Figma desktop app.

The English summary is being prepared. Showing the original description.

mnlt/teleport8Updated Apr 25, 2026

github

Free

Operate on GitHub via the REST API — repos, PRs, issues, code search, actions, releases. Use when the user wants scripted / cross-repo operations, doesn't have `gh` installed, or needs behavior the `gh` CLI doesn't expose cleanly.

The English summary is being prepared. Showing the original description.

mnlt/teleport8Updated Apr 25, 2026

See all skills by mnlt

Report a problem with this skill