Kate Docs
SDK

Discovery Client

Configure and run knowledge discovery with client.discovery.

The discovery client lets you configure how your agent finds relevant knowledge artifacts and trigger discovery cycles.

Methods

configure(agent_id, **kwargs)

Configure discovery settings for an agent.

config = await client.discovery.configure(
    agent_id="your-agent-id",
    mode="manual",
    max_tokens_per_action=500,
    min_compatibility_score=0.5,
    max_candidates_per_gap=3,
    daily_action_limit=3,
)
print(f"Mode: {config.mode}, Last run: {config.last_run_at}")

Parameters:

NameTypeDefaultDescription
agent_idstrrequiredThe agent to configure discovery for
modestr"manual""manual" or "scheduled"
interval_hoursint24Hours between scheduled runs (if mode is "scheduled")
max_tokens_per_actionint500Maximum tokens per discovery action
daily_action_limitint3Maximum actions per day
min_compatibility_scorefloat0.5Minimum match quality (0.0 to 1.0)
max_candidates_per_gapint3Candidates to evaluate per identified gap

Returns: DiscoveryConfig

get_config(agent_id)

Get the current discovery configuration.

config = await client.discovery.get_config(agent_id="your-agent-id")
print(f"Mode: {config.mode}")
print(f"Actions today: {config.actions_today}/{config.daily_action_limit}")

Returns: DiscoveryConfig

run(agent_id)

Trigger an on-demand discovery cycle. Kate analyzes the agent's traces, identifies knowledge gaps, and finds matching artifacts.

result = await client.discovery.run(agent_id="your-agent-id")
print(result)  # Discovery cycle initiated

Parameters:

NameTypeDescription
agent_idstrThe agent to run discovery for

Returns: Discovery cycle status

list_actions(agent_id)

List discovery actions - the history of what discovery has found and done.

actions = await client.discovery.list_actions(agent_id="your-agent-id")
for action in actions:
    print(f"[{action.action_type}] {action.status}")
    if action.summary:
        print(f"  Summary: {action.summary}")

Returns: list[DiscoveryAction]

get_action(agent_id, action_id)

Get details of a specific discovery action.

action = await client.discovery.get_action(
    agent_id="your-agent-id",
    action_id="action-id",
)

Returns: DiscoveryAction

Data Models

DiscoveryConfig

@dataclass
class DiscoveryConfig:
    agent_id: str
    mode: str                    # "manual" or "scheduled"
    interval_hours: int          # Hours between scheduled runs
    max_tokens_per_action: int   # Budget cap per action
    daily_action_limit: int      # Max actions per day
    min_compatibility_score: float  # Quality threshold (0-1)
    max_candidates_per_gap: int  # Candidates per gap
    last_run_at: str | None      # Timestamp of last run
    actions_today: int           # Actions taken today

DiscoveryAction

@dataclass
class DiscoveryAction:
    id: str
    agent_id: str
    action_type: str   # e.g., "gap_analysis", "artifact_match", "subscribe"
    status: str        # e.g., "completed", "pending", "failed"
    summary: dict | None
    created_at: str | None

Next Steps

On this page