Skip to main content

AgentProvider

AgentProvider is the root component for the Agent SDK. It sets up the chat engine, theming, and language, and provides context to all child components.

Keep AgentProvider mounted

AgentProvider holds all conversation state: messages, streaming status, session tokens, and tool approval state. Mount it high in your component tree and keep it mounted for the lifetime of your app. Unmounting the provider resets all state.

To show or hide the chat UI, toggle AgentPanel's open prop or conditionally render AgentChat. Both can be mounted and unmounted freely without losing conversation data.

Usage​

import { AgentProvider, AgentChat } from '@kapaai/agent-react';

<AgentProvider
getSessionToken={async () => {
const res = await fetch('/api/session', { method: 'POST' });
return res.json();
}}
projectId="your-project-id"
integrationId="your-integration-id"
model="kapa-agent-1.0"
tools={myTools}
context={myContext}
builtinToolMeta={{
search_knowledge_base: { displayName: 'Search Knowledge Base' },
}}
theme={{ accentColor: '#2563eb', colorScheme: 'dark' }}
>
<AgentChat branding={{ title: 'AI Assistant' }} />
</AgentProvider>

Props​

PropTypeRequiredDescription
getSessionToken() => Promise<...>YesAsync function that returns a session token. Accepts the raw Kapa API response directly. Called lazily on first message. See Authentication.
projectIdstringYesYour Kapa project ID.
integrationIdstringYesYour Kapa integration ID.
modelstringYesAgent model version (e.g. kapa-agent-1.0). See Models.
toolsAgentTool<TContext>[]NoClient-side tool definitions. Defaults to []. See Custom tools.
contextTContextNoContext object passed to every tool's execute function. Defaults to {}.
builtinToolMetaRecord<string, ToolDisplayMeta>NoDisplay metadata for server-side built-in tools (e.g. search_knowledge_base).
customInstructionsstringNoAdditional system prompt instructions for the agent.
userEndUserInfoNoEnd user metadata (email, name) for analytics.
sourceGroupIdsIncludestring[]NoArray of source group IDs to limit the agent's knowledge base. When set, the agent retrieves from sources in the specified groups and any sources not assigned to a group (global sources). See source groups documentation for details.
onEventOnAgentEventNoCallback for analytics events (message_sent, response_completed, tool_executed, etc.).
themeAgentThemeConfigNoVisual theme. See Theming.
localestringNoSet the language of the built-in UI strings and the formatting of numbers and dates. Users can still ask questions in any language. Defaults to 'en'. See locale.
enableHistorybooleanNoEnable conversation history. When true, shows the history toggle in AgentChat and enables the history methods. Defaults to false.

In addition to the core events, the React SDK also emits panel_opened and panel_closed events when using AgentPanel.

AgentThemeConfig​

FieldTypeDefaultDescription
accentColorstring'#9333ea'Primary color (hex). A full palette is generated automatically.
colorScheme'dark' | 'light' | 'auto''dark'Color scheme. 'auto' follows system preference.
fontFamilystring'Inter, system-ui, sans-serif'Font family for the entire chat UI.
fontSizenumber14Base font size in pixels.
radius'sharp' | 'soft' | 'round' | 'pill''soft'Border radius style.

See Theming for details and examples.

locale​

<AgentProvider locale="nl" {...otherProps}>
LanguageLanguage code
English (default)en
Chinese (Simplified)zh
Czechcs
Dutchnl
Finnishfi
Frenchfr
Germande
Italianit
Japaneseja
Koreanko
Polishpl
Portuguesept
Russianru
Spanishes

A regional tag such as nl-BE uses that language and formats numbers and dates for the region. Any other value falls back to English. Agent answers, conversation titles, and the content you pass through branding and your tools are shown as given.

ToolDisplayMeta​

The agent includes a built-in search_knowledge_base tool that searches your project's knowledge base server-side. Since it's not a client tool, you can't define or execute it, but you can customize how it appears in the chat. See Built-in tools for details.

builtinToolMeta={{
search_knowledge_base: {
displayName: 'Search Knowledge Base',
icon: IconSearch, // optional
iconColor: '#38bdf8', // optional
},
}}