API KEY
HR OPERATIONS
BambooHR gives your agent HR operations: read and update employee records, manage time off requests and balances, track timesheets and clock entries, run reports, set performance goals, and move job applications.
For more tools, view docs.
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
// BambooHR tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["bamboohr"], toolNames: [
"bamboohr_whos_out_list",
"bamboohr_time_off_requests_list",
"bamboohr_time_off_request_approve"] },
pageSize: 100,
});
const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Show who is out next week and approve Dana Kim's pending time off request" }] });import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["bamboohr"] }, pageSize: 100,
});
const res = await openai.chat.completions.create({
model: "gpt-5",
messages: [{ role: "user", content: "Show who is out next week and approve Dana Kim's pending time off request" }],
tools,
});
// Execute the tool call with the user's vaulted BambooHR API key
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["bamboohr"] }, pageSize: 100,
});
const msg = await anthropic.messages.create({
model: "claude-sonnet-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Show who is out next week and approve Dana Kim's pending time off request" }],
tools,
});
// Tool call runs with the user's vaulted BambooHR API key
await sk.tools.executeTool(msg.content, "user_123");import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["bamboohr"] }, pageSize: 100,
});
const agent = new Agent({
name: "hr_agent",
model: "gemini-2.5-pro",
instruction: "BambooHR tools scoped to this user",
tools,
});
await agent.run("Show who is out next week and approve Dana Kim's pending time off request");// shared key
audit → bot_service_account
// scalekit
audit → user_abc ✓