Skip to content
Backend
Skill

/exa-agent

Use Exa Agent for multi-step web research, list-building, enrichment, structured output, run continuation, and coverage validation. Exa Agent can access additional data providers: fiber, financial_datasets, similarweb, baselayer, affiliate, particle, and jinko.

BOOST
From plugin
exa
5.1k2 skills
Install
$ npx -y skills add exa-labs/exa-mcp-server --skill exa-agent --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/exa-agent

Context preview

The summary Claude sees to decide when to auto-load this skill.

Use Exa Agent for multi-step web research, list-building, enrichment, structured output, run continuation, and coverage validation. Exa Agent can access additional data providers: fiber, financial_datasets, similarweb, baselayer, affiliate, particle, and jinko.

SKILL.md

exa-agent.SKILL.md
name: Exa Agent
description: "Use Exa Agent for multi-step web research, list-building, enrichment, structured output, run continuation, and coverage validation. Exa Agent can access additional data providers: fiber, financial_datasets, similarweb, baselayer, affiliate, particle, and jinko."

Exa Agent Research

You are operating Exa Agent through MCP. Exa Agent is a tool that allows you to run multi-step web research, list-building, enrichment, structured output, run continuation, and coverage validation.

Required tools

  • `agent_run`

Exa Connect providers

When a run needs premium partner data alongside Exa web search, pass `dataSources` to `agent_run`.

Use only the currently usable self-serve providers:

  • `fiber`: B2B company, people, jobs, and contact enrichment
  • `financial_datasets`: ticker-based news for US public companies
  • `similarweb`: website traffic estimates, rankings, and competitor discovery
  • `baselayer`: US business verification, officers, registrations, and KYB
  • `affiliate`: product catalog search, pricing, brands, and merchant links
  • `particle`: podcast transcript search with speaker attribution and timestamps
  • `jinko`: travel destination discovery ranked by fare

Do not suggest request-only providers unless the user explicitly says their Exa account already has them enabled.

Decision tree

Choose the work surface before acting:

1. Known input rows plus repeated same-shape enrichment at scale

  • Write a deterministic script using Exa APIs directly.
  • Use bounded concurrency, exponential backoff, checkpoints, and a stable output file.
  • Read the output file and synthesize from it.
  • Do not burn context manually looping over hundreds of identical tool calls.

2. Open-ended universe definition, list-building, people/company discovery, multi-hop research, structured research, or follow-up over previous work

  • Use Exa Agent.
  • Define the objective and `outputSchema` before creating the run.

Before creating a run

Always write down:

  • Objective: what the run is meant to answer.
  • Universe: what entities qualify.
  • Segments: geographies, industries, personas, dates, asset classes, or other partitions.
  • Coverage target: desired count, maximum count, and what "good enough" means.
  • Output fields: columns needed in the final answer.
  • Evidence requirements: URLs, source titles, dates, and confidence.
  • Exclusions: prior results or disallowed entities.

If the user uses relative time like "recent", "last 6 months", or "post-IPO", calculate exact dates from today's date first.

Schema rules

Use `outputSchema` for list-building, enrichment, finance/company research, and repeatable workflows.

Rules:

  • Use a top-level object.
  • Put list rows in a named array field.
  • Add `maxItems` to arrays when possible.
  • Include source/evidence fields, not just conclusions.
  • Include stable identifiers: company name, website/domain, person LinkedIn URL, ticker, CIK, etc.
  • Include confidence or rationale fields for fuzzy judgments.
  • Keep required fields limited to what must exist.
  • Use `format: "uri"`, `format: "email"`, or `format: "phone"` when needed.

Example company-list schema:

{
  "type": "object",
  "properties": {
    "companies": {
      "type": "array",
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "company_name": { "type": "string" },
          "website": { "type": "string", "format": "uri" },
          "segment": { "type": "string" },
          "why_it_qualifies": { "type": "string" },
          "evidence_url": { "type": "string", "format": "uri" },
          "confidence": { "type": "string", "enum": ["low", "medium", "high"] }
        },
        "required": ["company_name", "website", "why_it_qualifies", "evidence_url"]
      }
    },
    "coverage_notes": { "type": "string" },
    "known_gaps": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "required": ["companies", "coverage_notes"]
}

Example with Exa Connect:

{
  "tool": "agent_run",
  "arguments": {
    "query": "Find 10 fast-growing B2B SaaS companies and return estimated monthly website visits from Similarweb.",
    "dataSources": [
      { "provider": "similarweb" }
    ],
    "outputSchema": {
      "type": "object",
      "properties": {
        "companies": {
          "type": "array",
          "maxItems": 10,
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "domain": { "type": "string" },
              "monthlyVisits": {
                "type": "number",
                "description": "Estimated monthly visits from Similarweb"
              }
            },
            "required": ["name", "domain", "monthlyVisits"]
          }
        }
      },
      "required": ["companies"]
    }
  }
}

Exa Agent workflow

1. Run the agent

  • Call `agent_run`.
  • Omit `effort` to use the tool's `low` default. Choose `auto` or a higher effort only when the user asks for more depth or the task clearly requires it.
  • Include `outputSchema` for structured work.
  • Use `input.data` for known rows.
  • Use `input.exclusion` for entities already returned or disallowed.
  • Add `dataSources` only when one of the self-serve Exa Connect providers is clearly useful.
  • Name the provider-specific data you want in both the query and the schema so Agent uses the provider instead of falling back to web search.
  • Save the returned `id` when a later continuation may use `previousRunId`.
  • If the response has `status: "running"`, call `agent_run` again with that `runId` until `outputReady` is true. This continuation is available for retained runs that outlive one MCP call.
  • Zero Data Retention (ZDR) teams: new runs always stream, and output is only available on that live stream (not via `runId` resumption). The MCP call window is ~750 seconds; if a ZDR run cannot finish in on
Read more
Ships withexa

Exa MCP for web search and web crawling!

Get the whole plugin
Stats
5,094
Stars
403
Forks
Active
Maintenance
TypeScript
Language
MIT
License
12h ago
Last commit
1y ago
Created
1d ago
Added

Repo: exa-labs/exa-mcp-server

Other skills on exa.