Run tools
Tools for launching and managing interview runs.
Run tools take a published blueprint and put it in front of a real participant. A channel describes how the interview is delivered (WebRTC voice, telephony, chat, custom); an interview run is a single conversation between the agent and one participant. Use these tools to create, inspect, list, and cancel runs.
| Tool | Description | Key inputs | Returns |
|---|---|---|---|
create_channel | Create a delivery channel (voice, chat, custom). | type, name, settings | Channel object (chn_*) |
create_interview_run | Start an interview from a published blueprint. | blueprint_id, channel_id or connector_id, participant | Run object (run_*) |
get_interview_run | Get a run with optional expansions. | run_id, expand[] | Run object (optionally with related objects) |
list_interview_runs | List runs with cursor pagination. | limit, starting_after, blueprint_id | List envelope |
cancel_interview_run | Cancel an active run. | run_id | Updated run with status: "cancelled" |
create_channel
Signature
{
type: "webrtc_voice" | "telephony" | "chat" | "custom";
name: string;
settings?: {
recording?: boolean;
max_duration_s?: number;
idle_timeout_s?: number;
};
metadata?: Record<string, unknown>;
}When to use
Create a channel once per delivery surface — typically one chat channel and one voice channel per environment. Reuse the channel ID across many runs.
Natural-language example
Create a WebRTC voice channel called "Production voice" with recording on and a 20-minute max duration.
Raw tool call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_channel",
"arguments": {
"type": "webrtc_voice",
"name": "Production voice",
"settings": { "recording": true, "max_duration_s": 1200 }
}
}
}Common errors
400 invalid_request—typeoutside the allowed enum.401 unauthorized— missing API key.
create_interview_run
Signature
{
blueprint_id: string;
channel_id?: string;
connector_id?: string;
participant?: {
external_id?: string;
name?: string;
email?: string;
metadata?: Record<string, unknown>;
};
metadata?: Record<string, unknown>;
}Provide either channel_id (chat/voice) or connector_id (external platform like Google Meet, Zoom, Teams) — not both.
When to use
Kick off a single interview. The blueprint must be published. The returned run object contains the join URL or session details for the participant.
Natural-language example
Start an interview from blueprint bp_7f3a_abc on channel chn_voice for participant jane@example.com.
Raw tool call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_interview_run",
"arguments": {
"blueprint_id": "bp_7f3a_abc",
"channel_id": "chn_voice",
"participant": { "email": "jane@example.com", "name": "Jane Doe" }
}
}
}Common errors
400 invalid_request— neitherchannel_idnorconnector_idprovided, or both provided.409 conflict— blueprint is not published.404 not_found—blueprint_id,channel_id, orconnector_iddoes not exist.
get_interview_run
Signature
{
run_id: string;
expand?: Array<
| "blueprint" | "agent" | "channel" | "connector"
| "transcript" | "responses" | "analysis"
>;
}When to use
Poll for status (pending, in_progress, completed, cancelled, failed) or fetch a run with related objects inlined to avoid follow-up calls.
Natural-language example
Get run run_xyz789 and include the transcript and analysis.
Raw tool call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_interview_run",
"arguments": { "run_id": "run_xyz789", "expand": ["transcript", "analysis"] }
}
}Common errors
404 not_found— wrong ID or run belongs to another organization.400 invalid_request—expandvalue outside the allowed enum.
list_interview_runs
Signature
{
limit?: number;
starting_after?: string;
blueprint_id?: string;
}When to use
List recent runs across the workspace, or filter by blueprint_id to see all runs for a specific study.
Natural-language example
Show me the latest 20 runs for blueprint bp_7f3a_abc.
Raw tool call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_interview_runs",
"arguments": { "blueprint_id": "bp_7f3a_abc", "limit": 20 }
}
}Common errors
400 invalid_request—limitoutside 1–100.400 invalid_request—starting_aftercursor malformed.
cancel_interview_run
Signature
{ run_id: string }When to use
Stop a run that is in progress or pending. Cancellation is terminal — you can't resume.
Natural-language example
Cancel run run_xyz789.
Raw tool call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": { "name": "cancel_interview_run", "arguments": { "run_id": "run_xyz789" } }
}Common errors
409 conflict— run is already in a terminal state (completed,cancelled,failed).404 not_found— wrong run ID.
Related tools
Pair with publish_blueprint before creating a run, launch_interview to create a connector and run together, or get_interview_summary once the run completes.