--- title: Agent framework integrations | Tabstack description: Use Tabstack as native tools in LangChain, the Vercel AI SDK, Mastra, LlamaIndex.TS, the OpenAI Agents SDK, the Claude Agent SDK, and eve. Schema-enforced extraction, research, generation, and browser automation, backed by the official SDK. --- Tabstack ships maintained packages that expose its capabilities as native tools for common agent frameworks. Instead of hand-rolling a tool around the SDK, you install one package and drop a ready-made tool set into your agent. Every package wraps the official Tabstack SDK and exposes the same five tools, with the same names, descriptions, and inputs, so behavior is consistent across languages and frameworks. ## Choose your package | Framework | Language | Package | Guide | | ---------------------------------------------------------------------- | ---------- | ------------------------- | ------------------------------------------------------------- | | [LangChain](https://python.langchain.com) | Python | `langchain-tabstack` | [LangChain (Python)](/integrations/langchain-python/index.md) | | [LangChain.js](https://js.langchain.com) | TypeScript | `@tabstack/langchain` | [LangChain.js](/integrations/langchain-js/index.md) | | [Vercel AI SDK](https://ai-sdk.dev) | TypeScript | `@tabstack/ai` | [Vercel AI SDK](/integrations/vercel-ai/index.md) | | [Mastra](https://mastra.ai) | TypeScript | `@tabstack/mastra` | [Mastra](/integrations/mastra/index.md) | | [LlamaIndex.TS](https://developers.llamaindex.ai/typescript) | TypeScript | `@tabstack/llamaindex` | [LlamaIndex.TS](/integrations/llamaindex/index.md) | | [OpenAI Agents SDK](https://openai.github.io/openai-agents-js/) | TypeScript | `@tabstack/openai-agents` | [OpenAI Agents SDK](/integrations/openai-agents/index.md) | | [Claude Agent SDK](https://code.claude.com/docs/en/agent-sdk/overview) | TypeScript | `@tabstack/claude-agent` | [Claude Agent SDK](/integrations/claude-agent/index.md) | | [eve](https://vercel.com/eve) | TypeScript | `@tabstack/eve` | [eve](/integrations/eve/index.md) | If you are not using one of these frameworks, call the [TypeScript](/sdks/typescript/quickstart/index.md) or [Python](/sdks/python/quickstart/index.md) SDK directly. ## The tools | Tool | Backed by | Use it for | | -------------------------- | ------------------------------------------------------------------- | ----------------------------------------------------------------- | | `extract_structured_data` | [`extract.json`](/guides/how-to-extract-json/index.md) | Pull specific fields from a URL into a JSON shape you define. | | `extract_page_content` | [`extract.markdown`](/guides/how-to-use-markdown-endpoint/index.md) | Fetch a page as clean markdown. | | `research_question` | [`agent.research`](/guides/research/index.md) | Synthesize a cited answer across multiple pages. | | `generate_structured_data` | [`generate.json`](/guides/how-to-generate-json/index.md) | Fetch a page, then AI-transform it into derived or reshaped JSON. | | `automate_browser_task` | [`agent.automate`](/guides/how-to-use-automate-endpoint/index.md) | Run a multi-step, natural-language browser task. | ## Shared concepts These apply to every package. ### Optional inputs Beyond each tool’s required inputs, the fetch-based tools accept optional controls. They are sent to Tabstack only when provided, so omitting them keeps the defaults. - `extract_structured_data`, `extract_page_content`, `generate_structured_data`: - `effort`: `min`, `standard`, or `max`. Use `max` for JS-heavy pages (full server-side browser rendering). See [Effort levels](/guides/effort-levels/index.md). - `nocache`: bypass the cache and fetch fresh. - `country`: ISO 3166-1 alpha-2 code for [geotargeting](/guides/geotargeting/index.md). - `research_question`: `mode` (`fast` or `balanced`), `nocache`. - `automate_browser_task`: `guardrails` (constraints on what the agent may do), `data` (context for form filling), `country`, `max_iterations`, `max_validation_attempts`. ### Browser automation runs non-interactively `automate_browser_task` consumes the automate stream without the human-in-the-loop form-data flow, so it never blocks waiting for input. It returns the final answer plus the data it extracted and the pages it visited. For interactive automation, use the SDK’s [interactive mode](/guides/interactive-mode/index.md) directly. ### Output shapes The TypeScript packages return native objects (camelCase keys). The Python package returns JSON strings (snake\_case keys), the conventional LangChain-Python tool output. The data is the same; only the return type and key casing differ, by language convention. [`@tabstack/claude-agent`](/integrations/claude-agent/index.md) is the one structural exception: it registers the tools as an in-process MCP server rather than handing you tool objects, so results reach the model as MCP text content (markdown for `extract_page_content`, JSON for the rest). ## Why use Tabstack here - **Schema-enforced output.** You define the shape, you get that shape back. No prompt-engineering the JSON out of raw text. - **No browser to run.** JS-heavy pages render server-side. No Playwright, no binaries. - **Version-independent.** It is an SDK call, not a loader coupled to your framework version. See [Tabstack vs. LangChain browser tools](/comparisons/vs-langchain/index.md).