# eve + Tabstack

> Give your eve agents reliable web access. Schema-enforced extraction, research, generation, and browser automation as native, path-derived eve tools.

Category: Agent Frameworks
Language: TypeScript
Package: `@tabstack/eve`
Canonical URL: https://tabstack.ai/integrations/eve

## 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`](https://www.npmjs.com/package/@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:

```bash
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:

```ts
// agent/tools/research_question.ts
export { researchQuestionTool as default } from "@tabstack/eve";
```

```ts
// 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:

```ts
// 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.

## Next steps

- [Adapter on GitHub](https://github.com/Mozilla-Ocho/tabstack-integrations-typescript)
- [@tabstack/eve on npm](https://www.npmjs.com/package/@tabstack/eve)
- [Get an API key](https://console.tabstack.ai/signup)

---

- All integrations: https://tabstack.ai/integrations
- Agent quickstart, every endpoint in one file: https://tabstack.ai/agents.md
- Full documentation: https://docs.tabstack.ai/
