Agent framework integrations
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
Section titled “Choose your package”| Framework | Language | Package | Guide |
|---|---|---|---|
| LangChain | Python | langchain-tabstack | LangChain (Python) |
| LangChain.js | TypeScript | @tabstack/langchain | LangChain.js |
| Vercel AI SDK | TypeScript | @tabstack/ai | Vercel AI SDK |
| Mastra | TypeScript | @tabstack/mastra | Mastra |
| LlamaIndex.TS | TypeScript | @tabstack/llamaindex | LlamaIndex.TS |
| OpenAI Agents SDK | TypeScript | @tabstack/openai-agents | OpenAI Agents SDK |
| Claude Agent SDK | TypeScript | @tabstack/claude-agent | Claude Agent SDK |
| eve | TypeScript | @tabstack/eve | eve |
If you are not using one of these frameworks, call the TypeScript or Python SDK directly.
The tools
Section titled “The tools”| Tool | Backed by | Use it for |
|---|---|---|
extract_structured_data | extract.json | Pull specific fields from a URL into a JSON shape you define. |
extract_page_content | extract.markdown | Fetch a page as clean markdown. |
research_question | agent.research | Synthesize a cited answer across multiple pages. |
generate_structured_data | generate.json | Fetch a page, then AI-transform it into derived or reshaped JSON. |
automate_browser_task | agent.automate | Run a multi-step, natural-language browser task. |
Shared concepts
Section titled “Shared concepts”These apply to every package.
Optional inputs
Section titled “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, ormax. Usemaxfor JS-heavy pages (full server-side browser rendering). See Effort levels.nocache: bypass the cache and fetch fresh.country: ISO 3166-1 alpha-2 code for geotargeting.
research_question:mode(fastorbalanced),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
Section titled “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 directly.
Output shapes
Section titled “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 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
Section titled “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.