getTools (or pass it per request), and the agent can call it.
@ooneex/ai/tools/<ToolName> — so you only pull in the SDK a tool needs when you use it. API keys are read from the environment (via AppEnv) and clients are created lazily on first call, so registering a tool never requires its key.
Web search
| Tool | Name | What it searches | Key |
|---|---|---|---|
ExaSearchTool | exa_web_search | The web via Exa, with highlighted snippets. | SEARCH_EXA_API_KEY |
FirecrawlSearchTool | firecrawl_search | Web, news, and images via Firecrawl. | SEARCH_FIRECRAWL_API_KEY |
BrightDataSearchTool | brightdata_search | Google organic results via Bright Data SERP. | SEARCH_BRIGHTDATA_API_KEY, SEARCH_BRIGHTDATA_SERP_ZONE |
ExaSearchTool returns the most relevant pages with title, URL, published date, author, relevance score, and highlighted snippets. The model can bias the search by type (auto, fast, deep, …), category (e.g. research paper, news), or include/exclude specific domains.
FirecrawlSearchTool returns pages, news, and images with URL, title, description, and — for news and images — date and image URL. The model can restrict the sources, filter domains, or localize by location.
BrightDataSearchTool returns the top Google organic results with title, URL, description, and rank, optionally localized by country and language.
Knowledge sources
| Tool | Name | What it searches | Key |
|---|---|---|---|
WikipediaSearchTool | wikipedia_search | Wikipedia encyclopedia articles. | — |
PubMedSearchTool | pubmed_search | PubMed biomedical literature. | SEARCH_PUBMED_API_KEY (optional) |
WikipediaSearchTool returns the most relevant articles with title, a plain-text snippet, word count, and URL. The model can pick a language edition (e.g. en, fr). No API key is required.
PubMedSearchTool accepts PubMed query syntax (field tags, boolean operators) and returns articles with PMID, title, authors, journal, publication date, DOI, and PubMed URL, sorted by relevance or publication date. A key raises the rate limit but is optional.
Linear
Tools for reading and managing Linear issues. They use the configured@ooneex/linear client.
| Tool | Name | Action |
|---|---|---|
LinearSearchTool | linear_search | Search issues by free text across titles and descriptions. |
LinearIssueCreateTool | linear_issue_create | Create an issue (requires a title and teamId). |
LinearIssueUpdateTool | linear_issue_update | Update an existing issue; only provided fields change. |
LinearIssueDeleteTool | linear_issue_delete | Delete an issue by id. |
LinearSearchTool returns each matching issue’s identifier, title, status, assignee, and labels. The create and update tools accept a description, assignee, project, priority (0=none, 1=urgent, 2=high, 3=normal, 4=low), workflow state, and labels, and return the resulting issue.