Why eve + Tabstack
eve derives each tool's name from its filename: add a file under agent/tools/ and the model can call it. @tabstack/eve ships pre-built defineTool definitions you re-export into that directory: schema-enforced output, server-side rendering of JS-heavy pages, and one key for extraction, research, generation, and automation. Tool names stay in lockstep with the @tabstack/langchain, @tabstack/ai, and Python langchain-tabstack packages.
Quickstart
Install the adapter and set your key:
npm install @tabstack/eve eve zod
export TABSTACK_API_KEY="your-key-here"Re-export a Tabstack tool as the default export of a file named after the tool:
// agent/tools/research_question.ts
export { researchQuestionTool as default } from "@tabstack/eve";// agent/tools/extract_page_content.ts
export { extractPageContentTool as default } from "@tabstack/eve";That's it. The filename becomes the tool name, and the tools resolve TABSTACK_API_KEY lazily on first call. For a custom key, base URL, or a shared client, build them explicitly:
// agent/tools/research_question.ts
import { createTabstackEveTools } from "@tabstack/eve";
const tools = createTabstackEveTools({ apiKey: process.env.MY_KEY });
export default tools.research_question;The tools
| File name | What it does |
|---|---|
extract_structured_data.ts | Pull specific fields from a URL into a JSON shape you define. |
extract_page_content.ts | Fetch a page as clean markdown. |
research_question.ts | Synthesized answer with cited sources across multiple pages. |
generate_structured_data.ts | Fetch a page, then AI-transform it into derived or reshaped JSON. |
automate_browser_task.ts | Run a multi-step, natural-language browser task. |
The filename must match the tool name, because eve's identity is path-derived.
Common use cases
- Add web research to an eve agent by dropping one file into
agent/tools/. - Expose only the capabilities a given agent needs, one file each.
- Share a single configured Tabstack client across every tool.
- Keep tool names consistent across your TypeScript and Python agents.