PHPackages                             shipfastlabs/toolkit-exa - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Search &amp; Filtering](/categories/search)
4. /
5. shipfastlabs/toolkit-exa

ActiveLibrary[Search &amp; Filtering](/categories/search)

shipfastlabs/toolkit-exa
========================

Exa tools for the Laravel AI SDK - Search, Find Similar, Get Contents, and Answer

1.0.0(2d ago)00MITPHPPHP ^8.4.0

Since Jun 7Pushed 2d agoCompare

[ Source](https://github.com/shipfastlabs/toolkit-exa)[ Packagist](https://packagist.org/packages/shipfastlabs/toolkit-exa)[ RSS](/packages/shipfastlabs-toolkit-exa/feed)WikiDiscussions main Synced 2d ago

READMEChangelog (1)Dependencies (3)Versions (2)Used By (0)

shipfastlabs/toolkit-exa
========================

[](#shipfastlabstoolkit-exa)

[![Latest Version](https://camo.githubusercontent.com/76a77c27febf78b5eecfeeb6b4b524470ef2a64548b079f8f2ed57599f0f7e45/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f73686970666173746c6162732f746f6f6c6b69742d6578612e737667)](https://packagist.org/packages/shipfastlabs/toolkit-exa)[![Total Downloads](https://camo.githubusercontent.com/96e0b3faf4161e291c23189ae0d42b0d4d16de7a2a250aa6044a491e5240f82e/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f73686970666173746c6162732f746f6f6c6b69742d6578612e737667)](https://packagist.org/packages/shipfastlabs/toolkit-exa)

> Exa tools for the Laravel AI SDK - Search, Find Similar, Get Contents, and Answer

Part of the [shipfastlabs/toolkit](https://github.com/shipfastlabs/toolkit) catalog of reusable AI tools for the Laravel AI SDK.

Installation
------------

[](#installation)

```
composer require shipfastlabs/toolkit-exa
```

Usage
-----

[](#usage)

Register every Exa tool at once with the `Exa` helper:

```
use Shipfastlabs\Toolkit\Exa\Exa;

$tools = Exa::all(); // Collection
```

Or add individual tools to an agent's `tools()`:

```
use Shipfastlabs\Toolkit\Exa\ExaSearch;
use Shipfastlabs\Toolkit\Exa\ExaFindSimilar;
use Shipfastlabs\Toolkit\Exa\ExaGetContents;
use Shipfastlabs\Toolkit\Exa\ExaAnswer;

$tools = [
    new ExaSearch,
    new ExaFindSimilar,
    new ExaGetContents,
    new ExaAnswer,
];
```

Tools
-----

[](#tools)

### ExaSearch

[](#exasearch)

Search the web with Exa's embeddings-based search engine.

ParameterTypeRequiredDescription`query`stringyesThe search query to look up on the web.`type`stringno`"auto"`, `"keyword"`, `"neural"`, `"fast"`, or `"deep"`. Defaults to `"auto"`.`num_results`integernoNumber of results to return (1-25). Defaults to 10.`category`stringnoFocus a category, e.g. `"research paper"`, `"news"`, `"github"`, `"pdf"`.`include_domains`stringnoComma-separated domains to restrict results to.`exclude_domains`stringnoComma-separated domains to exclude from results.`include_text`booleannoWhether to include each result's full page text. Defaults to true.### ExaFindSimilar

[](#exafindsimilar)

Find pages semantically similar to a given URL.

ParameterTypeRequiredDescription`url`stringyesThe URL to find similar pages for.`num_results`integernoNumber of similar results to return (1-25). Defaults to 10.`include_domains`stringnoComma-separated domains to restrict results to.`exclude_domains`stringnoComma-separated domains to exclude from results.`include_text`booleannoWhether to include each result's full page text. Defaults to true.### ExaGetContents

[](#exagetcontents)

Retrieve clean, parsed contents from one or more URLs.

ParameterTypeRequiredDescription`urls`stringyesA single URL or comma-separated URLs (max 20) to fetch contents from.`text`booleannoWhether to include the full page text. Defaults to true.`summary`booleannoWhether to include an AI-generated summary of each page. Defaults to false.`highlights`booleannoWhether to include relevant highlighted snippets. Defaults to false.`livecrawl`stringno`"never"`, `"fallback"`, `"always"`, or `"preferred"`. Defaults to `"fallback"`.### ExaAnswer

[](#exaanswer)

Get a direct, sourced answer to a question with citations.

ParameterTypeRequiredDescription`query`stringyesThe question to answer using web sources.`include_text`booleannoWhether to include the full text of each cited source. Defaults to false.Provider setup
--------------

[](#provider-setup)

All tools read their API credentials from Laravel's `services` config and their optional defaults from the `ai` config.

### 1. Add the Exa service to `config/services.php`

[](#1-add-the-exa-service-to-configservicesphp)

```
// config/services.php

return [

    // ... existing services ...

    'exa' => [
        'key' => env('EXA_API_KEY'),
    ],

];
```

### 2. Add toolkit defaults to `config/ai.php`

[](#2-add-toolkit-defaults-to-configaiphp)

```
// config/ai.php

return [

    // ... existing laravel/ai config ...

    'toolkit' => [
        'exa' => [
            'search' => [
                'num_results' => (int) env('EXA_SEARCH_NUM_RESULTS', 10),
                'type' => env('EXA_SEARCH_TYPE', 'auto'),
                'include_text' => (bool) env('EXA_SEARCH_INCLUDE_TEXT', true),
            ],
            'find_similar' => [
                'num_results' => (int) env('EXA_FIND_SIMILAR_NUM_RESULTS', 10),
                'include_text' => (bool) env('EXA_FIND_SIMILAR_INCLUDE_TEXT', true),
            ],
            'contents' => [
                'text' => (bool) env('EXA_CONTENTS_TEXT', true),
                'livecrawl' => env('EXA_CONTENTS_LIVECRAWL', 'fallback'),
            ],
            'answer' => [
                'include_text' => (bool) env('EXA_ANSWER_INCLUDE_TEXT', false),
            ],
        ],
    ],

];
```

### 3. Add environment variables to `.env`

[](#3-add-environment-variables-to-env)

```
EXA_API_KEY=your-key-here

# Search defaults
EXA_SEARCH_NUM_RESULTS=10
EXA_SEARCH_TYPE=auto
EXA_SEARCH_INCLUDE_TEXT=true

# Find similar defaults
EXA_FIND_SIMILAR_NUM_RESULTS=10
EXA_FIND_SIMILAR_INCLUDE_TEXT=true

# Contents defaults
EXA_CONTENTS_TEXT=true
EXA_CONTENTS_LIVECRAWL=fallback

# Answer defaults
EXA_ANSWER_INCLUDE_TEXT=false
```

Config keyEnv varDefaultDescription`services.exa.key``EXA_API_KEY`-**Required.** Your Exa API key.`ai.toolkit.exa.search.num_results``EXA_SEARCH_NUM_RESULTS``10`Default search results (1-25).`ai.toolkit.exa.search.type``EXA_SEARCH_TYPE``"auto"``"auto"`, `"keyword"`, `"neural"`, `"fast"`, or `"deep"`.`ai.toolkit.exa.search.include_text``EXA_SEARCH_INCLUDE_TEXT``true`Include full page text in search results.`ai.toolkit.exa.find_similar.num_results``EXA_FIND_SIMILAR_NUM_RESULTS``10`Default similar results (1-25).`ai.toolkit.exa.find_similar.include_text``EXA_FIND_SIMILAR_INCLUDE_TEXT``true`Include full page text in similar results.`ai.toolkit.exa.contents.text``EXA_CONTENTS_TEXT``true`Include full page text in contents.`ai.toolkit.exa.contents.livecrawl``EXA_CONTENTS_LIVECRAWL``"fallback"``"never"`, `"fallback"`, `"always"`, or `"preferred"`.`ai.toolkit.exa.answer.include_text``EXA_ANSWER_INCLUDE_TEXT``false`Include full text of cited sources.Safety
------

[](#safety)

- All tools validate required inputs before calling the API.
- Numeric parameters are clamped to their valid ranges; enums fall back to safe defaults.
- `ExaGetContents` accepts at most 20 URLs per request.
- API errors are caught and returned as friendly string messages.
- Requires a valid Exa API key.

Exa API
-------

[](#exa-api)

These tools use the [Exa API](https://exa.ai). Exa offers a free tier to get started.

Full API reference:

- [Search Endpoint](https://exa.ai/docs/reference/search)
- [Find Similar Links Endpoint](https://exa.ai/docs/reference/find-similar-links)
- [Get Contents Endpoint](https://exa.ai/docs/reference/get-contents)
- [Answer Endpoint](https://exa.ai/docs/reference/answer)

###  Health Score

41

—

FairBetter than 87% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity50

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

2d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/31663512?v=4)[Pushpak Chhajed](/maintainers/pushpak1300)[@pushpak1300](https://github.com/pushpak1300)

---

Top Contributors

[![pushpak1300](https://avatars.githubusercontent.com/u/31663512?v=4)](https://github.com/pushpak1300 "pushpak1300 (1 commits)")

---

Tags

ailaravellaravel-aitoolsearchlaravelaitoolcontentsanswerexafind-similar

### Embed Badge

![Health badge](/badges/shipfastlabs-toolkit-exa/health.svg)

```
[![Health](https://phpackages.com/badges/shipfastlabs-toolkit-exa/health.svg)](https://phpackages.com/packages/shipfastlabs-toolkit-exa)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

9782.1M153](/packages/laravel-ai)[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.1k91.3M277](/packages/laravel-horizon)[illuminate/database

The Illuminate Database package.

3.0k54.1M11.0k](/packages/illuminate-database)[mailerlite/laravel-elasticsearch

An easy way to use the official PHP ElasticSearch client in your Laravel applications.

936572.3k2](/packages/mailerlite-laravel-elasticsearch)[moonshine/moonshine

Laravel administration panel

1.3k239.9k72](/packages/moonshine-moonshine)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
