The Research Agent drives Xedant Agent and integrates with it tightly at the interface level: the agent’s chats, running tasks, and document edits are visible in the same window where your research lives — without a dozen browser tabs.
Enabling the integration
Set the AGENT_API_URL and AGENT_API_KEY variables — both together: the URL of your Xedant Agent instance and its API key, the machine access code the Agent checks on every call. Without them, the integration features stay hidden and never appear in the interface.
One assistant, several apps. The Research Agent needs no LLM keys of its own (an LLM is the AI model that does the thinking) and no separate subscriptions: it works through your Xedant Agent, which is already configured — with its models, skills, hooks, and checks. The same agent can serve the Analytics Agent and other apps at the same time: you manage models and keys once, centrally, and every app uses them automatically.
Agent chats
There is no separate chats page: the chat list opens as a panel via the “Chats” button at the bottom of the sidebar — next to it, the “Prompts” button opens the shared task queue. The panel shows the agent’s chats with filtering and paging, processing statuses, progress, and totals for each chat; active chats with their combined token spend and cost are visible right in the sidebar. Chats can be marked with labels — your own names, by topic or project — and the list filtered by them: “With labels”, “Without labels”, or a specific label. Labels are created and changed through “Manage chat labels” — so the chat you need never gets lost, even when there are hundreds of them. Events stream in real time over a SignalR bridge (a live channel between the apps): a new message, a status change, timers, and the chat’s message queue update on screen without a reload. The chat itself opens in a slide-over panel above the list.
Next to every message sits a spend counter: how many portions of text (tokens) were spent, what they cost, and how fast the processing is going; a detailed breakdown appears on hover. Tool statuses are shown in English — Reading, Writing, Searching, Executing, Launching a subagent… — so you can see what the agent is busy with right now. The chat lets you pick a model and a skill, just like the agent itself; after a page reload, the chat’s state — title, timer, status — is restored. Images and files are pasted into the message straight from the clipboard.
Prompt queue
A prompt is simply a text task for the agent. The prompt queue lets you sketch out a list of such tasks in advance: the agent sends them one by one, with no manual sending of each. The queue is shared — both the Research Agent and the Xedant Agent interface itself use it, so the same rows are visible in both places. The prompts button sits in the right part of the chat’s message input. Learn more in the Prompt Queue section.
Voice input
You can dictate the task to the agent instead of typing: the message input has a microphone button. The recognized speech appears in the message as text and goes to the agent as an ordinary message. Learn more in the Voice Input section.
The event bridge
AgentBridgeService relays the agent’s events into the interface: structuredEvent, messageUpdate, processingStateUpdate, timerUpdate, queueStatusUpdate, and others. The queueStatusUpdate event concerns a single chat’s message queue — not the prompts queue, but the messages waiting to be processed inside the chat. If the connection drops, the bridge reconnects automatically — the live picture restores itself.
“Call Agent” from a document
On any research page, the AI button opens a panel with a prompt. On send, the prompt goes to Xedant Agent ({AGENT_API_URL}/api/remote/chats), with the document’s path substituted into it — the [path] and [url] placeholders are resolved by the server. The model is picked from the Xedant Agent’s model list, which the Research Agent reads live over the API; the finished chat opens from the interface.
The reverse direction: the agent API
The integration runs both ways. The RESEARCH_AGENT_API_KEY variable enables the machine interface /api/agent/* for external agents — including Xedant Agent from another project. The available commands: /api/agent/search (searching), /api/agent/fetch (downloading pages), /api/agent/extract (extracting data) — plus sessions and the content APIs (chunk, links, markdown/clean, telegram/verify). Authentication is an X-API-Key header carrying that same value; without the variable, the API returns 503.
You do not need to check anything to know the agent API works: while all is well, the interface stays quiet. When something is wrong, a small warning appears in the documents sidebar — above the “Prompts” button — naming the exact problem: missing AGENT_API_URL/AGENT_API_KEY, a rejected key, or an unreachable agent. The key itself is never shown.