Integration Examples
With Vercel AI SDK
With Vercel AI SDK
Copy
import { Actionbook } from '@actionbookdev/sdk'
import { generateText, tool } from 'ai'
import { openai } from '@ai-sdk/openai'
const actionbook = new Actionbook()
const { text } = await generateText({
model: openai('gpt-4o'),
tools: {
searchActions: tool({
description: actionbook.searchActions.description,
parameters: actionbook.searchActions.params.zod,
execute: async ({ query }) => actionbook.searchActions(query),
}),
getActionById: tool({
description: actionbook.getActionById.description,
parameters: actionbook.getActionById.params.zod,
execute: async ({ id }) => actionbook.getActionById(id),
}),
},
maxSteps: 5,
prompt: 'Search for LinkedIn message actions and get the action manual',
})
With OpenAI SDK
With OpenAI SDK
Copy
import { Actionbook } from '@actionbookdev/sdk'
import OpenAI from 'openai'
const actionbook = new Actionbook()
const openai = new OpenAI()
const tools: OpenAI.ChatCompletionTool[] = [
{
type: 'function',
function: {
name: 'searchActions',
description: actionbook.searchActions.description,
parameters: actionbook.searchActions.params.json,
},
},
{
type: 'function',
function: {
name: 'getActionById',
description: actionbook.getActionById.description,
parameters: actionbook.getActionById.params.json,
},
},
]
const completion = await openai.chat.completions.create({
model: 'gpt-4o',
tools,
messages: [{ role: 'user', content: 'Search for Google login actions' }],
})
With Anthropic Claude SDK
With Anthropic Claude SDK
Copy
import { Actionbook } from '@actionbookdev/sdk'
import Anthropic from '@anthropic-ai/sdk'
const actionbook = new Actionbook()
const anthropic = new Anthropic()
const tools: Anthropic.Tool[] = [
{
name: 'searchActions',
description: actionbook.searchActions.description,
input_schema: actionbook.searchActions.params.json,
},
{
name: 'getActionById',
description: actionbook.getActionById.description,
input_schema: actionbook.getActionById.params.json,
},
]
const message = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
max_tokens: 1024,
tools,
messages: [{ role: 'user', content: 'Search for Twitter post actions' }],
})
With Google Gemini SDK
With Google Gemini SDK
Copy
import { Actionbook } from '@actionbookdev/sdk'
import { GoogleGenAI } from '@google/genai'
const actionbook = new Actionbook()
const genai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY })
const tools = [
{
functionDeclarations: [
{
name: 'searchActions',
description: actionbook.searchActions.description,
parameters: actionbook.searchActions.params.json,
},
{
name: 'getActionById',
description: actionbook.getActionById.description,
parameters: actionbook.getActionById.params.json,
},
],
},
]
const response = await genai.models.generateContent({
model: 'gemini-2.0-flash',
contents: [{ role: 'user', parts: [{ text: 'Search for YouTube upload actions' }] }],
config: { tools },
})
With Stagehand
With Stagehand
Copy
import { Actionbook } from '@actionbookdev/sdk'
import { tool } from 'ai'
const actionbook = new Actionbook()
const agent = stagehand.agent({
model: 'openai/gpt-4o',
tools: {
searchActions: tool({
description: actionbook.searchActions.description,
inputSchema: actionbook.searchActions.params.zod,
execute: async ({ query }) => actionbook.searchActions(query),
}),
getActionById: tool({
description: actionbook.getActionById.description,
inputSchema: actionbook.getActionById.params.zod,
execute: async ({ id }) => actionbook.getActionById(id),
}),
},
})
await agent.execute('Search for Airbnb booking actions and get the action manual')
Installation
Copy
# Using npm
npm install @actionbookdev/sdk
# Using pnpm
pnpm add @actionbookdev/sdk
# Using yarn
yarn add @actionbookdev/sdk
# Using bun
bun add @actionbookdev/sdk
Basic Usage
Copy
import { Actionbook } from '@actionbookdev/sdk'
// Initialize the client (no API key required during open beta)
const actionbook = new Actionbook()
// Search for action manuals
const results = await actionbook.searchActions('airbnb search')
console.log(`Found ${results.length} actions:`, results)
// Get a specific action by ID
const action = await actionbook.getActionById(results[0].id)
console.log('Action details:', action)
// Access the selectors
const selector = action.selectors.css ||
action.selectors.dataTestId ||
action.selectors.ariaLabel
console.log('Use this selector:', selector)
Tool Definitions
Each method hasdescription and params attached for easy integration with any LLM framework.
Copy
import { Actionbook } from '@actionbookdev/sdk'
const actionbook = new Actionbook()
// Description
actionbook.searchActions.description // "Search for action manuals by keyword"
// Params - JSON Schema format
actionbook.searchActions.params.json // { type: "object", properties: { query: { type: "string" } }, required: ["query"] }
// Params - Zod format
actionbook.searchActions.params.zod // z.object({ query: z.string() })