OAUTH 2.0
ANALYTICS
Let your agent search customer research, pull insights and highlights, and create notes in Dovetail as the researcher who owns the workspace.
For more tools, view docs.
import { ScalekitClient } from "@scalekit-sdk/node";
import { ChatOpenAI } from "@langchain/openai";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["dovetailmcp"], toolNames: ["dovetail_insights_search", "dovetail_insight_get", "dovetail_highlights_list"] },
pageSize: 100,
});
const agent = createReactAgent({ llm: new ChatOpenAI({ model: "gpt-4o" }), tools });
await agent.invoke({ messages: [{ role: "user", content: "Summarise onboarding friction insights" }] });import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";
const openai = new OpenAI();
const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["dovetailmcp"], toolNames: ["dovetail_insights_search", "dovetail_insight_get", "dovetail_highlights_list"] },
pageSize: 100,
});
const res = await openai.responses.create({
model: "gpt-4o",
input: "Search insights about onboarding friction",
tools,
});import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";
const anthropic = new Anthropic();
const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["dovetailmcp"], toolNames: ["dovetail_insights_search", "dovetail_insight_get", "dovetail_highlights_list"] },
pageSize: 100,
});
const msg = await anthropic.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
tools,
messages: [{ role: "user", content: "Pull highlights linked to the pricing insight" }],
});import { LlmAgent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";
const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);
const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["dovetailmcp"], toolNames: ["dovetail_insights_search", "dovetail_insight_get", "dovetail_highlights_list"] },
pageSize: 100,
});
const agent = new LlmAgent({ name: "dovetail_agent", model: "gemini-2.0-flash", tools });
await agent.run("List insights in the onboarding project");// shared token
create_note → research_bot
// scalekit
create_note → user_abc ✓