Skip to content
Last updated

MCP tool reference

Junior's MCP connector exposes 4 read-only tools. Every tool is scoped to the signed-in user: it returns only the projects, calls, and entities that user can already see in the Junior web app.

You don't call these yourself — the assistant picks the right one from what you ask. This page is here so you can see exactly what it can reach. For phrasing that works well, see What you can ask.

At a glance

ToolWhat it doesExample ask
get_callRead one call — summary, Key Takeaways, Q&A, and optionally the transcriptSummarise the call with the former Head of Procurement
list_callsFind calls by expert network, country, job title, segment, rating, cost, duration, or dateExpert calls in France rated 4+ from GLG since March
list_entitiesSee the companies and products recognized across a project's callsWhich competitors came up most across the diligence?
list_projectsList your projects and the segment names their calls are tagged withWhat segments do we have calls for on the Acme diligence?

Server version 0.5.0 — this changes whenever a tool name, parameter, or response shape changes, so clients that cache tool definitions can tell they need to refresh.

Reference

Parameters and response fields for each tool — useful for security review or for anyone building against the same data.

get_call

Get a call · read-only · requires calls:read

Fetch one call's detail by its public ID (get the ID from list_calls first). Returns metadata, a summary, cleaned Q&A, and Key Takeaways by default. Set include_transcript=true ONLY when you need exact quotes or precise wording — for most questions the summary and Q&A are enough and far smaller.

Parameters

ParameterTypeDescription
call_id requiredstringCall's public ID — the id field returned by list_calls. Under the hood this is transcript.public_id (transcript and call share one identifier in Junior's data model).
include_ktasboolean · default trueInclude Key Takeaways: a curated markdown summary of the call's most important points. Defaults to true; keep on when the user wants headline insights rather than full detail.
include_notesboolean · default trueInclude your scratchpad notes from the call (the ScribblePad you type during a call). Defaults to true; set false to omit.
include_qaboolean · default trueInclude the cleaned, structured Q&A extracted from the call (question/answer pairs by section). Defaults to true; use for content and quotes organized by topic.
include_summaryboolean · default trueInclude the call's AI summary (markdown). Defaults to true; set false to omit (e.g. when you only need Q&A or metadata).
include_transcriptboolean · default falseVerbatim transcript text. Defaults to false. Set true ONLY when you need exact quotes or precise wording — it can be large, and the summary and Q&A cover most questions.

Response

FieldTypeDescription
anonymity_statusstring | nullRedaction state for this call: 'not_requested', 'started', 'complete', or 'errored'. 'complete' means anonymized variants of the identity fields exist — but this tool still returns the originals, so treat this as informational rather than as a description of what you received.
call_statusstring | nullWhere the call sits in the scheduling workflow: 'scheduled', 'reached_out', 'not_scheduled', 'done', 'rescheduled', 'not_interested', 'canceled', or 'candidate'. 'done' means the call actually happened.
costnumber | null
created_atstring | nullISO 8601 timestamp of when the call record was created in Junior — not when the call took place. See date for that.
datestring | nullISO 8601 timestamp of when the call took place.
duration_minutesnumber | nullCall duration in minutes, derived from the recording/transcript. null when the duration is unknown.
expertobjectWho was interviewed.
expert.biostring | null
expert.countrystring | nullThe interviewee's country, e.g. 'France'.
expert.job_titlestring | nullThe interviewee's job title, e.g. 'VP of Procurement'.
expert.namestring | nullThe interviewee's name as recorded. Identity fields are returned as-is: MCP does not substitute the anonymized variant, even for calls that have been through redaction, which matches what the Junior web app shows. (The REST API differs — it can return an anonymized name depending on organization settings.) See anonymity_status for whether this call was redacted.
expert.organizationstring | nullThe interviewee's employer.
idstringThe call's public ID — the value you passed in.
kta_approval_status"approved" | "pending" | null'pending' = AI-generated, not yet human-reviewed (treat as draft); 'approved' = reviewed. Omitted when include_ktas=false.
ktasstring | nullKey Takeaways as markdown. Omitted when include_ktas=false; null if none have been generated for the call.
notesstring | nullYour scratchpad notes from the call (the ScribblePad — transcript.scribble_pad). Omitted when include_notes=false.
qa_blocksarrayThe call's cleaned question-and-answer pairs. Omitted when include_qa=false.
qa_blocks[].answerstring | nullThe answer, rewritten as a clean standalone statement rather than raw transcript speech.
qa_blocks[].idstringQA block UUID.
qa_blocks[].questionstring | nullThe question as asked.
qa_blocks[].sectionstring | null
ratingnumber | null
segmentstring | nullThe call's segment — a per-project label grouping calls by interviewee type, e.g. 'Buyer' or 'Former Employee'. Call list_projects to see a project's segment vocabulary.
sourcestring | nullWhere the call came from — free text, usually an expert-network name such as 'GLG' or 'AlphaSights', or an import label.
summarystring | nullThe call's AI summary (markdown). Omitted when include_summary=false.
transcriptstring | nullVerbatim transcript text. Present only when include_transcript=true.
transcript_public_idstring | nullSame value as id — transcript and call share one identifier in Junior's data model.

list_calls

List calls · read-only · requires calls:read

List calls (interviews) most recent first. Defaults to calls the authenticated user personally conducted (scope="mine"). Pass scope="all" to widen to every call you can access — project calls, teammates' calls, and your own uncategorized (not-yet-filed) calls. Pass project_id to narrow to a single project (works with any scope). Filter params (country, organization, job title, source, segment, rating, cost range, duration range, date range, call type, call status) are AND-combined and applied at query time, so you can fetch 'expert calls with people in France rated 4+ from GLG since March' without paginating through everything. Returns metadata only — use get_call for the transcript, Questions & Answers, and Key Takeaways.

Parameters

ParameterTypeDescription
call_statusstring (1–64)Exact-match filter on interview.call_status. Case-sensitive. Valid values: 'scheduled', 'reached_out', 'not_scheduled', 'done', 'rescheduled', 'not_interested', 'canceled', 'candidate'. Most common in queries is 'done' (the call actually happened).
call_type"interview" | "meeting"Filter on transcript.call_type. 'interview' = expert call, 'meeting' = internal/recorded meeting.
countrystring (1–64)Filter on interview.country. Case-insensitive exact match (e.g. 'France', 'United States').
cursorstring
date_afterstring (date-time)ISO 8601 timestamp. Returns calls with interview.date >= this. Use for date-range queries.
date_beforestring (date-time)ISO 8601 timestamp. Returns calls with interview.date <= this.
job_title_containsstring (1–128)Case-insensitive substring match on interview.job_title (e.g. 'VP', 'CFO', 'Engineer').
limitinteger (1–100) · default 25
max_costnumber (min 0)Return only calls with interview.cost <= this. Cost is the call's recorded spend in the project's currency — the 'Cost' column in the web call tracker. Combine with min_cost for a range.
max_duration_minutesnumber (min 0)Return only calls whose transcript duration <= this many minutes — the 'Duration' column in the web call tracker. Combine with min_duration_minutes for a range.
min_costnumber (min 0)Return only calls with interview.cost >= this. See max_cost.
min_duration_minutesnumber (min 0)Return only calls whose transcript duration >= this many minutes. See max_duration_minutes.
min_ratinginteger (1–5)Return only calls with interview.rating >= this. 1–5 scale.
organization_containsstring (1–128)Case-insensitive substring match on interview.organization (e.g. 'Goldman', 'Microsoft').
project_idstring (uuid)Project UUID. Omit to list calls across every accessible project.
scope"mine" | "all" | "project" · default "mine"Which calls to list. "mine" (default) = calls you personally conducted (interview.created_by = you). "all" = every call you can access: project calls, teammates' calls, and your own uncategorized (not-yet-filed) calls. ("project" is a deprecated alias for "all".) Combine with project_id to narrow to a single project.
segment_containsstring (1–128)Case-insensitive substring match on the call's segment name (interview_segment.segment) — the 'Segment' column in the web call tracker. Segments are per-project labels grouping calls by interviewee type (e.g. 'Buyer', 'Competitor', 'Former Employee').
source_containsstring (1–128)Case-insensitive substring match on interview.source (e.g. 'GLG', 'AlphaSights'). The source field is free text — usually an expert-network name or import label — so substring match handles common variants ('GLG' vs 'Gerson Lehrman').

Response

FieldTypeDescription
callsarrayMatching calls, most recent first.
calls[].call_statusstring | nullWhere the call sits in the scheduling workflow: 'scheduled', 'reached_out', 'not_scheduled', 'done', 'rescheduled', 'not_interested', 'canceled', or 'candidate'. 'done' means the call actually happened.
calls[].costnumber | null
calls[].countrystring | nullThe interviewee's country, e.g. 'France'.
calls[].created_atstring | nullISO 8601 timestamp of when the call record was created in Junior — not when the call took place. See date for that.
calls[].datestring | nullISO 8601 timestamp of when the call took place.
calls[].duration_minutesnumber | nullCall duration in minutes, derived from the recording/transcript. null when the duration is unknown.
calls[].idstringThe call's public ID. Pass as call_id to get_call for the transcript, Questions & Answers, and Key Takeaways.
calls[].job_titlestring | nullThe interviewee's job title, e.g. 'VP of Procurement'.
calls[].namestring | nullThe interviewee's name as recorded. Not anonymized: MCP returns the original even for calls that have been through redaction, matching the Junior web app. get_call returns anonymity_status if you need to know whether a call was redacted.
calls[].organizationstring | nullThe interviewee's employer.
calls[].ratingnumber | null
calls[].segmentstring | nullThe call's segment — a per-project label grouping calls by interviewee type, e.g. 'Buyer' or 'Former Employee'. Call list_projects to see a project's segment vocabulary.
calls[].sourcestring | nullWhere the call came from — free text, usually an expert-network name such as 'GLG' or 'AlphaSights', or an import label.
next_cursorstring | nullPass as cursor to fetch the next page. null when this is the last page.

list_entities

List entities in a project · read-only · requires entities:read

List entities (companies, products, etc.) recognized across the calls in a project.

Parameters

ParameterTypeDescription
cursorstring
limitinteger (1–200) · default 50
project_id requiredstring (uuid)Project UUID
typestringOptional entity-type filter (e.g. "company", "product"). Omit to return all types.

Response

FieldTypeDescription
entitiesarrayEntities recognized across the project's calls.
entities[].categorystring | null
entities[].competitor_tierstring | null
entities[].created_atstring | nullISO 8601 timestamp of when the entity was first recognized in this project.
entities[].descriptionstring | null
entities[].domainstring | nullThe entity's web domain, where one has been resolved.
entities[].idstringEntity UUID.
entities[].is_competitorboolean | null
entities[].namestring | nullEntity name as recognized across the project's calls.
entities[].overviewstring | null
entities[].typestring | nullEntity type, e.g. 'company' or 'product'. Pass as type to filter.
next_cursorstring | nullPass as cursor to fetch the next page. null when this is the last page.

list_projects

List projects · read-only · requires projects:read

List projects in your organization (most recent first). Defaults to projects you actively run as creator or lead (scope="mine"). Pass scope="all" to include projects you were auto-added to as a member. Each project includes its segments — the segment names calls in that project are tagged with. Read these first when a user asks to filter calls by segment, then pass the exact value to list_calls' segment_contains.

Parameters

ParameterTypeDescription
cursorstringOpaque pagination cursor from a previous response
include_archivedboolean · default falseInclude archived projects in the result
limitinteger (1–100) · default 25Max rows to return (1–100, default 25)
scope"mine" | "all" · default "mine"Which projects to list. "mine" (default) = projects you created or are a lead of. "all" = every project you have any membership in.

Response

FieldTypeDescription
next_cursorstring | nullPass as cursor to fetch the next page. null when this is the last page.
projectsarrayYour projects, most recently created first.
projects[].created_atstring | nullISO 8601 timestamp of when the project was created.
projects[].idstringProject UUID. Pass as project_id elsewhere.
projects[].is_archivedboolean | nullArchived projects are hidden by default; pass include_archived to list them.
projects[].namestring | nullProject name.
projects[].rolestring | nullYour role on this project — 'lead' or 'member'. null on a project you created but were never explicitly added to.
projects[].sectorstring | nullReserved. Currently returns null.
projects[].segmentsarray of stringThe segment names calls in this project are tagged with, e.g. 'Buyer', 'Competitor', 'Former Employee'. Segments are per-project — read these before filtering list_calls by segment_contains rather than guessing a value.
projects[].statusstring | null
projects[].summarystring | nullShort description of the project's research scope.