Skip to Content
ExtendingAgents

Agents

Agents are specialist sub-agents that Pandora can route tasks to. When a user asks a question that matches an agent’s expertise, the main agent automatically delegates — no routing configuration needed.

Unlike tools, agents don’t contain executable code. They are pure data: an identity (name, description) and instructions (system prompt). The system handles execution, model selection, and tool access.

Agent Definition

Each agent entry point exports a named agent object:

import type { Agent } from '@pandorakit/sdk/agents' export const agent: Agent = { id: 'research', name: 'Deep Research', description: 'Thorough, multi-step research on complex topics', instructions: `You are a deep research specialist. Your job is to thoroughly investigate complex questions by conducting multiple rounds of web searches, cross-referencing sources, and synthesizing your findings. When answering: - Cite all sources with URLs - Distinguish between well-established facts and claims with limited sourcing - Note any conflicting information you found`, }

Manifest Fields

The provides.agents section of your manifest accepts an array of entries:

{ "provides": { "agents": [ { "entry": "./src/research.ts", "useTools": ["@pandorakit/tavily-search:tavily_search"], "modelTools": ["search"] } ] } }
FieldDescription
entryPath to the file that exports the agent definition
useToolsTool IDs from the global registry. Use fully-qualified IDs: pluginId:toolId
modelToolsModel-native capability keys (e.g. "search" for provider’s built-in web search)

Enable It

Users control agents from the Plugins page — toggling the plugin on/off and optionally configuring per-agent model overrides.

Routing

Pandora reads each agent’s description and decides whether to handle a request directly or hand it off to a specialist. The routing decision is made by the LLM, not by rules — adding a new specialist is just installing a plugin.

With zero agents registered, Pandora handles all requests directly — behavior is unchanged from a standard setup.

The quality of your agent’s description directly affects how well routing works:

// Good — specific about what it does description: 'Thorough, multi-step research on complex topics using web search' // Bad — too vague description: 'A helpful assistant'

Include the kinds of tasks the agent handles and the tools it has access to (conceptually, not by ID).

Model Overrides

Users can configure a per-agent model override on the Plugins page. This lets them use a different (potentially cheaper or faster) model for specific specialists.

Reference

import type { Agent } from '@pandorakit/sdk/agents'

Agent

FieldTypeRequiredDescription
idstringYesUnique agent identifier
namestringYesHuman-readable display name
descriptionstringYesWhat the agent does (used for routing decisions)
instructionsstringYesSystem instructions for the agent
useToolsstring[]NoTool IDs from the global registry (set from manifest at load time)
modelToolsstring[]NoModel-native tool keys like 'search' (set from manifest at load time)

useTools and modelTools are typically declared in the manifest rather than in the agent code.

Last updated on