Skip to main content
The package ships a set of function-calling tools you can add to an agent without writing any code. Each is a container-managed class — import it, add it to getTools (or pass it per request), and the agent can call it.
import { ExaSearchTool } from "@ooneex/ai/tools/ExaSearchTool";

@decorator.chat()
class ResearchChat extends Chat {
  public getModel = (): string => "anthropic/claude-sonnet-4.5";
  public getSystemPrompts = (): string[] => ["You research topics on the web."];
  public getTools = (): AiToolClassType[] => [ExaSearchTool];
  public getMiddlewares = (): AiMiddlewareClassType[] => [];
}
Each tool is imported from its own subpath — @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.
ToolNameWhat it searchesKey
ExaSearchToolexa_web_searchThe web via Exa, with highlighted snippets.SEARCH_EXA_API_KEY
FirecrawlSearchToolfirecrawl_searchWeb, news, and images via Firecrawl.SEARCH_FIRECRAWL_API_KEY
BrightDataSearchToolbrightdata_searchGoogle 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

ToolNameWhat it searchesKey
WikipediaSearchToolwikipedia_searchWikipedia encyclopedia articles.
PubMedSearchToolpubmed_searchPubMed 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.
ToolNameAction
LinearSearchToollinear_searchSearch issues by free text across titles and descriptions.
LinearIssueCreateToollinear_issue_createCreate an issue (requires a title and teamId).
LinearIssueUpdateToollinear_issue_updateUpdate an existing issue; only provided fields change.
LinearIssueDeleteToollinear_issue_deleteDelete 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.
LinearIssueDeleteTool is irreversible. Its description tells the model to call it only when a user has clearly asked to delete an issue — pair it with a tool onBeforeCall hook or a permission check if you expose it in an agent that acts autonomously.

Combining tools

An agent can hold any mix of built-in and custom tools — the model picks the right one per step:
import { ExaSearchTool } from "@ooneex/ai/tools/ExaSearchTool";
import { WikipediaSearchTool } from "@ooneex/ai/tools/WikipediaSearchTool";
import { LinearIssueCreateTool } from "@ooneex/ai/tools/LinearIssueCreateTool";

public getTools = (): AiToolClassType[] => [
  ExaSearchTool,
  WikipediaSearchTool,
  LinearIssueCreateTool,
];
To build your own, see Tools.