Tool tree
gradeNot graded
set_candidate_profileAction
Set or update the candidate's field, target position, years of experience, and skills. Call this FIRST before starting an interview.
View tool JSON
{
"name": "set_candidate_profile",
"kind": "act",
"impl": "imperative",
"description": "Set or update the candidate's field, target position, years of experience, and skills. Call this FIRST before starting an interview.",
"inputSchema": {
"type": "object",
"properties": {
"field": {
"type": "string",
"description": "Broad field, e.g. 'Software Engineering'."
},
"position": {
"type": "string",
"description": "Specific role, e.g. 'Senior Backend Engineer'."
},
"experienceYears": {
"type": "number",
"minimum": 0,
"maximum": 50
},
"skills": {
"type": "array",
"items": {
"type": "string"
},
"description": "Concrete technologies/skills, e.g. ['Python','AWS','PostgreSQL']."
},
"focusAreas": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional weak spots the candidate wants to drill."
}
},
"required": [
"field",
"position",
"experienceYears",
"skills"
],
"additionalProperties": false
}
}start_interviewAction
Begin the mock interview. YOU (the AI) must write ALL the interview questions yourself, right now, in this single call — there is no built-in question bank. Pass them as the `questions` array, each genuinely tailored to the candidate's profile (use their exact field/position/skills/experience — vary the type across behavioral, technical, situational, system_design, culture_fit). After this call, IMMEDIATELY call `run_interview` (no arguments) — that ONE call runs the entire ask/wait/evaluate loop for every question and blocks until the candidate finishes, returning the full transcript and final report at the end. Do not try to ask questions one at a time yourself.
View tool JSON
{
"name": "start_interview",
"kind": "act",
"impl": "imperative",
"description": "Begin the mock interview. YOU (the AI) must write ALL the interview questions yourself, right now, in this single call — there is no built-in question bank. Pass them as the `questions` array, each genuinely tailored to the candidate's profile (use their exact field/position/skills/experience — vary the type across behavioral, technical, situational, system_design, culture_fit). After this call, IMMEDIATELY call `run_interview` (no arguments) — that ONE call runs the entire ask/wait/evaluate loop for every question and blocks until the candidate finishes, returning the full transcript and final report at the end. Do not try to ask questions one at a time yourself.",
"inputSchema": {
"type": "object",
"properties": {
"difficulty": {
"type": "string",
"enum": [
"junior",
"mid",
"senior"
]
},
"questions": {
"type": "array",
"minItems": 3,
"maxItems": 20,
"description": "ALL the questions for this interview, in order, written by you and tailored to the candidate's profile. Vary the `type` across the list.",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "The exact question text."
},
"type": {
"type": "string",
"enum": [
"behavioral",
"technical",
"system_design",
"situational",
"culture_fit"
]
},
"rubricPoints": {
"type": "array",
"items": {
"type": "string"
},
"description": "2-4 bullet points describing what a strong answer covers."
},
"hint": {
"type": "string",
"description": "Optional short on-screen hint for the candidate."
}
},
"required": [
"text",
"type"
],
"additionalProperties": false
}
}
},
"required": [
"questions"
],
"additionalProperties": false
}
}run_interviewAction
Runs the full interview using the exact questions you passed to `start_interview`. For each one: displays it, WAITS for the candidate to type and submit their answer, evaluates it, and moves to the next — automatically, without any further tool calls from you. Returns once, at the very end, with every question/answer/evaluation and the final summary report. Call this immediately after `start_interview`.
View tool JSON
{
"name": "run_interview",
"kind": "act",
"impl": "imperative",
"description": "Runs the full interview using the exact questions you passed to `start_interview`. For each one: displays it, WAITS for the candidate to type and submit their answer, evaluates it, and moves to the next — automatically, without any further tool calls from you. Returns once, at the very end, with every question/answer/evaluation and the final summary report. Call this immediately after `start_interview`.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_transcriptAnswer
Returns the full list of asked questions, given answers, and evaluations so far.
View tool JSON
{
"name": "get_transcript",
"kind": "answer",
"impl": "imperative",
"description": "Returns the full list of asked questions, given answers, and evaluations so far.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}end_interviewAction
Ends the session and produces a final report: overall score, strengths, development areas, hire recommendation, and next steps. Only call this after `remaining_questions` reached 0 from `ask_question`, OR the candidate has explicitly asked to stop early. If questions are still remaining and the candidate hasn't asked to stop, this call will be REJECTED — call `ask_question` again instead.
View tool JSON
{
"name": "end_interview",
"kind": "act",
"impl": "imperative",
"description": "Ends the session and produces a final report: overall score, strengths, development areas, hire recommendation, and next steps. Only call this after `remaining_questions` reached 0 from `ask_question`, OR the candidate has explicitly asked to stop early. If questions are still remaining and the candidate hasn't asked to stop, this call will be REJECTED — call `ask_question` again instead.",
"inputSchema": {
"type": "object",
"properties": {
"force": {
"type": "boolean",
"description": "Set true ONLY if the candidate explicitly asked to end early / skip remaining questions. Otherwise omit — ending with unanswered questions remaining is rejected by default."
}
},
"additionalProperties": false
}
}reset_sessionAction
Clear all state. Returns to the profile screen so a new interview can start.
View tool JSON
{
"name": "reset_session",
"kind": "act",
"impl": "imperative",
"description": "Clear all state. Returns to the profile screen so a new interview can start.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}