add_interview_moderator
ChatGPTAdd a new interview moderator. Add a user to an interview as a moderator, collaborator, or observer.
add_interview_participant
ChatGPTAdd a new interview participant. Add existing candidates to an interview as shortlisted participants. Skips candidates already in the study, inaccessible to the caller's teams, uncontactable, or ineligible.
add_interview_screener_question
ChatGPTAdd a new interview screener question. Does not replace existing questions on the screener.
add_study_participant
ChatGPTAdd a new study participant. Add existing candidates to any study as shortlisted participants. Works across interview, survey, and unmoderated test studies. Skips candidates already in the study, inaccessible to the caller's teams, uncontactable, or ineligible.
add_survey_participant
ChatGPTAdd a new survey participant. Add existing candidates to a survey as shortlisted participants. Skips candidates already in the study, inaccessible to the caller's teams, uncontactable, or ineligible.
add_survey_question
ChatGPTAdd a new survey question. Insert a question into a survey body without replacing its existing questions.
add_survey_screener_question
ChatGPTAdd a new survey screener question. Does not replace existing questions on the screener.
add_unmoderated_participant
ChatGPTAdd a new unmoderated participant. Add existing candidates to an unmoderated study as shortlisted participants. Skips candidates already in the study, inaccessible to the caller's teams, uncontactable, or ineligible.
add_unmoderated_screener_question
ChatGPTAdd a new unmoderated screener question. Does not replace existing questions on the screener.
apply_interview_screener_template
ChatGPTApply a new interview screener template. Copy a template's questions onto an interview study's screener. All existing questions are removed and replaced.
apply_repo_tag
ChatGPTAdd a tag to artifacts. Takes up to 20 highlights, reels or insights; each keeps the tags it already has. Applying a tag an artifact already has changes nothing. The tag must be global or belong to each artifact's study. Returns each artifact's tag_ids after the change under succeeded; an artifact that cannot be tagged is listed under failed with the reason, and does not stop the rest. Retrying a call is safe.
apply_survey_screener_template
ChatGPTApply a new survey screener template. Copy a template's questions onto a survey study's screener. All existing questions are removed and replaced.
apply_unmoderated_screener_template
ChatGPTApply a new unmoderated screener template. Copy a template's questions onto an unmoderated study's screener. All existing questions are removed and replaced.
compose_study_message
ChatGPTCompose a new study message. Set the email template on this study for a kind. Idempotent: creates it from the account default on the first call and updates it thereafter. This is the copy the study sends. A study holds one template per kind, so composing the same kind again replaces what is already there, including copy someone wrote in the app - it is not how you draft several different one-off emails.
create_candidate
ChatGPTCreate a new candidate. Create a research participant (candidate). Idempotent on the account's unique id attribute (email / phone_number / external_identifier) — a matching existing candidate is updated instead of duplicated. Additional per-account custom attribute keys may be passed alongside the core fields.
create_interview_screener
ChatGPTCreate a new interview screener. Replace the screener questions on an existing interview study. All existing questions are replaced by the provided set.
create_interview_study
ChatGPTCreate a new interview study. Create an interview study with optional screener questions in a single call.
create_repo_highlight
ChatGPTCreate a new repo highlight. Highlight words in a session transcript. Choose one selection: a verbatim quote from get_repo_session_transcript, or both start_ms and end_ms. Prefer a quote: the transcript shows only MM:SS times, so use a time range only when you know the exact milliseconds. Use a quote when any selected words lack recording times, as in AI-moderated sessions; a time range selects only timed words. Copy numbers as the transcript spells them, usually in words ("fifteen", not "15"). A quote must match exactly one uninterrupted passage by one speaker; add words if it matches more than one. A time range selects all fully enclosed words, across speakers. A fully timed selection creates a clip usable in reels when source media exists or is uploading. Without source media, or when selected words lack timings, it creates a text-only highlight that cannot be used in reels. Requires a ready transcript and words not already marked by another highlight. Tags must be global or belong to the session's study.
create_repo_insight
ChatGPTCreate a new repo insight. Create an insight. To place a highlight or reel in the body, add a block {"type":"references","attrs":{"items":[{"type":"highlight","id":"<uuid>"}]}}. highlight_uuids and reel_tokens embed after the body.
create_repo_reel
ChatGPTCreate a new repo reel. Compile highlights into a new reel, in the given order. Take highlight uuids from list_repo_highlights, search_repo_highlights or create_repo_highlight. Each highlight must have a clip: a highlight made on untimed transcript words cannot go in a reel. Each highlight may appear once. The reel's video is stitched in the background.
create_repo_tag
ChatGPTCreate a new repo tag. Apply it to a highlight, reel or insight with apply_repo_tag. Give study_id to scope it to that study; omit it for a global tag. A group must belong to the same study, or be global for a global tag. Names are unique within a study, ignoring case. Check search_repo_tags with q first and reuse an existing tag instead of recreating it. If the name is taken, the error names the existing tag and its id; apply that tag with apply_repo_tag instead.
create_survey_screener
ChatGPTCreate a new survey screener. Replace the screener questions on an existing survey study. All existing questions are replaced by the provided set.
create_survey_study
ChatGPTCreate a new survey study. Create a survey, optionally with its questions in a single call. Screener (qualification) questions are added separately via create_survey_study_screener.
create_unmoderated_block
ChatGPTCreate a new unmoderated block. Add a task or question block to an unmoderated study, in a single call. The block's type is set by kind; each kind accepts its own fields (see below). Structural blocks (welcome, thank you, permissions, AI-moderated interview) are created with the study and cannot be added here. Prototype-test blocks fetch their screen graph from the design tool asynchronously, so screens and paths are not present in the immediate response.
create_unmoderated_screener
ChatGPTCreate a new unmoderated screener. Replace the screener questions on an existing unmoderated study. All existing questions are replaced by the provided set.
create_unmoderated_study
ChatGPTCreate a new unmoderated study. Create an unmoderated study with optional screener questions in a single call.
delete_candidate
ChatGPTDelete a candidate. Permanently forget a candidate: destroys screener responses, detaches clips, and wipes PII (via Customer#forget!). This action is irreversible.
delete_interview_screener
ChatGPTDelete an interview screener. Remove all questions from an interview study's screener.
delete_interview_screener_question
ChatGPTDelete an interview screener question. Remove a single question from an interview's screener.
delete_interview_study
ChatGPTDelete an interview study. Soft-delete (discard) an interview.
delete_repo_highlight
ChatGPTDelete a repo highlight. Its words are unmarked in the transcript, its clip is removed from every reel that uses it, and insights that embed it stop showing it.
delete_repo_insight
ChatGPTDelete a repo insight. Its embedded highlights and reels stay.
delete_repo_reel
ChatGPTDelete a repo reel. Its highlights stay.
delete_survey_question
ChatGPTDelete a survey question. Remove one question from a survey body and clear branches that target it.
delete_survey_screener
ChatGPTDelete a survey screener. Remove all questions from a survey study's screener.
delete_survey_screener_question
ChatGPTDelete a survey screener question. Remove a single question from a survey's screener.
delete_survey_study
ChatGPTDelete a survey study. Soft-delete (discard) a survey.
delete_unmoderated_block
ChatGPTDelete an unmoderated block. Remove a block from an unmoderated study. Structural blocks (welcome, thank you, permissions, AI-moderated interview) are pinned and cannot be removed.
delete_unmoderated_screener
ChatGPTDelete an unmoderated screener. Remove all questions from an unmoderated study's screener.
delete_unmoderated_screener_question
ChatGPTDelete an unmoderated screener question. Remove a single question from an unmoderated study's screener.
delete_unmoderated_study
ChatGPTDelete an unmoderated study. Soft-delete (discard) an unmoderated study.
discard_study_message
ChatGPTDiscard a study message. Discard a one-off message written for a single send. A study's own email template cannot be discarded.
get_candidate
ChatGPTGet a single candidate by ID. Research participants (people who take part in studies). Returns full profile including name, email, and demographics. For a candidate's status in a study, use list_study_participants.
get_candidate_segment
ChatGPTGet a single candidate segment by ID. A saved candidate-filter definition ("segment") within the account. Returns id and name.
get_interview_calendar_settings
ChatGPTGet a single interview calendar settings by ID. Fetch calendar booking settings for an interview.
get_interview_response
ChatGPTGet a single interview response by ID. Fetch a single interview screener response by id with structured answers and qualification data.
get_interview_screener
ChatGPTGet a single interview screener by ID. Fetch the screener questions for an interview study.
get_interview_screener_response
ChatGPTGet a single interview screener response by ID. Fetch a single interview screener response by id with structured answers and qualification data.
get_interview_study
ChatGPTGet a single interview study by ID. Fetch a single interview by id with full details.
get_message_template
ChatGPTGet a single message template by ID. Fetch the account's default template for a given kind (one of: invite, screener, booked, thanks, welcome, reschedule_request, cancel_interview, cancel_task, booked_reminder, started_reminder, invited_reminder, ad_hoc, signed_consent_form). Falls back to the system default when no account template exists.
get_repo_highlight
ChatGPTGet a single repo highlight by ID. Repository highlights: annotated excerpts from research sessions. Returns description, content, tags and session reference. used_in lists the reels and insights that use the highlight as {type, id, title}; pass each id to get_repo_reel or get_repo_insight. Items the viewer cannot access are omitted. Free-text fields are masked when the account hides PII from MCP; the candidate name and document title are also masked outside the viewer's teams. No video URLs; use get_repo_session or get_repo_session_transcript.
get_repo_insight
ChatGPTGet a single repo insight by ID. An insight: title, text, cover image, tags and study. references lists each embed as {type, id, title}. body_doc is the body as TipTap JSON, with highlights and reels cited in place; edit it and send it to update_repo_insight. Embeds you can't see are left out and kept.
get_repo_reel
ChatGPTGet a single repo reel by ID. Repository reels (highlight compilations) representing curated collections of video clips. Returns full reel details including text, clips, tags, and study. Free-text fields are masked when the account hides PII from MCP; clip titles are additionally masked for candidates outside the viewer's teams. Streamable video URLs are intentionally not exposed; fetch recording content via get_repo_session / get_repo_session_transcript.
get_repo_session
ChatGPTGet a single repo session by ID. Repository sessions representing research interviews, calls, or observations. Returns session details including title, summary, tags, and associated study/candidate. A session with a recording or transcript does not mean the participant attended: recording starts when the moderator joins. For attendance (completed, no_show), use list_study_participants. When a recording exists, recording includes duration_seconds, recorded_at, and transcript_id. Transcript content is not included — fetch it via get_repo_session_transcript. When recording delivery is enabled for the account (admin opt-in, non-HIPAA), recording also includes a short-lived signed video_url.
get_repo_session_transcript
ChatGPTGet a single repo session transcript by ID. Transcript for a specific repository session. Returns full speaker-attributed transcript content. If the recording is still importing or transcribing, returns a payload with ready: false, retryable: true, and a retry_after_seconds hint (HTTP 202) rather than an error — poll again after that delay. If transcription failed, returns ready: false, retryable: false (HTTP 422) — do not retry. Retrieval does not require marking the participant complete.
get_repo_tag
ChatGPTGet a single repo tag by ID. Returns the tag's name, study and group. Use it to resolve tag_ids returned by highlights, reels and insights.
get_report_catalog
ChatGPTGet the report catalog. Lists this account's reports, with what each one measures, the params it accepts and the shapes it renders as. Call this before run_report: a report only accepts the params named in its allowed_params, and rejects any other rather than ignoring it. Only an entry whose trust is ok can be run — the rest are listed so you can say why they are not.
get_screener_response
ChatGPTGet a single screener response by ID. Fetch a qualification screener response by id. Returns the screener answers a candidate submitted to apply to a study — works for any study type (interview, survey, unmoderated test). Scoped to qualification screeners only; ids of survey main-form or in-test block responses return 404.
get_skill
ChatGPTGet a single skill by ID. A single enabled AI skill, addressed by slug. Returns the full instructions artifact plus discovery metadata.
get_study
ChatGPTGet a single study by ID. User research studies (interviews, surveys, unmoderated tests). Returns full study details including title, status, style, methodology, and configuration.
get_study_message
ChatGPTGet a single study message by ID. Fetch a single study message by id.
get_study_participant
ChatGPTGet a single study participant by ID. Fetch one study participant with their status. This is the source of truth for whether the participant attended; a recorded session does not mean they showed up.
get_study_participation_status_counts
ChatGPTGet a single study participation status counts by ID. Get recruiting progress without fetching participant pages. Returns every public participant status with its count, including zero counts. Counts only visible, non-discarded participants. Does not accept participant filters or expose restricted-candidate subtotals.
get_survey_response
ChatGPTGet a single survey response by ID. Fetch a single survey participant response by id with structured answers and qualification data.
get_survey_screener
ChatGPTGet a single survey screener by ID. Fetch the screener questions for a survey study.
get_survey_screener_response
ChatGPTGet a single survey screener response by ID. Fetch a single survey screener response by id with structured answers and qualification data.
get_survey_study
ChatGPTGet a single survey study by ID. Fetch a single survey by id with full details.
get_team
ChatGPTGet a single team by ID. A team within the account. Returns name, color, and icon.
get_template
ChatGPTGet a single template by ID. Fetch a single template with its full question set. A template with no questions returns an empty list.
get_transcript
ChatGPTGet a single transcript by ID. Text transcriptions of recorded research sessions. Returns full transcript including speaker-attributed content.
get_unmoderated_response
ChatGPTGet a single unmoderated response by ID. Fetch a single participant response by id with the full structured answer set, including task metrics, timings, and qualification data. For website-test answers, only the url the participant was shown is captured — there is no click, time-on-page, or path data; the session recording and follow-up question answers are the only behavioral signal. When the participation has an associated session (AI-moderated unmoderated studies), session includes the uuid and a url deep link to the GQ app. When a recording exists, recording includes duration_seconds, recorded_at, and transcript_id; fetch transcript content with get_transcript (passing recording.transcript_id) or get_repo_session_transcript (passing session.uuid). Streamable video URLs are intentionally not exposed.
get_unmoderated_screener
ChatGPTGet a single unmoderated screener by ID. Fetch the screener questions for an unmoderated study.
get_unmoderated_screener_response
ChatGPTGet a single unmoderated screener response by ID. Fetch a single unmoderated study screener response by id with structured answers and qualification data.
get_unmoderated_study
ChatGPTGet a single unmoderated study by ID. Fetch a single unmoderated study by id, including its ordered block configuration — the tasks and questions a participant works through. Prototype-test blocks carry the screens, success paths, screen-to-screen graph, and aggregate analytics (completion_rate, top response paths, drop_off_by_screen) rolled up across every submitted response — including abandoned ones, which power the drop-off breakdown. They also expose heatmap_view_url and funnel_view_url, deep-links to the block's analytics on the study summary page in the Great Question app.
list_candidate_segments
ChatGPTList all candidate segments with pagination. Saved candidate-filter definitions ("segments") within the account. Returns id and name. Use a segment id as the segment_id filter on search_candidates to retrieve candidates matching the segment.
list_candidates
ChatGPTList all candidates with pagination. Research participants (people who take part in studies). Returns name, email, and demographics. For a candidate's status in a study, use list_study_participants.
list_consent_forms
ChatGPTList all consent forms with pagination. List consent forms available for attaching to a study. Use this to discover valid IDs to pass as consent_form_id when creating or updating an interview, survey, or prototype test.
list_interview_moderators
ChatGPTList all interview moderators with pagination. List users assigned to an interview (moderators, collaborators, observers).
list_interview_responses
ChatGPTList all interview responses with pagination. List screener responses for an interview study. Each response includes structured answers with labels, values, qualification flags (qualified, qualifying, disqualified), and match score — useful for triaging candidates.
list_interview_screener_responses
ChatGPTList all interview screener responses with pagination. List screener responses for an interview study. Each response includes structured answers with labels, values, qualification flags (qualified, qualifying, disqualified), and match score — useful for triaging applicants.
list_interview_studies
ChatGPTList all interview studies with pagination. Interview (video call) studies. Returns title, status, and configuration for each interview.
list_message_templates
ChatGPTList all message templates with pagination. List the account's message templates. Templates are the per-account defaults used when composing a study message.
list_repo_highlights
ChatGPTList all repo highlights with pagination. Repository highlights representing annotated excerpts from research sessions. Returns highlight metadata including text, title, and color. Free-text fields are masked when the account hides PII from MCP.
list_repo_insights
ChatGPTList all repo insights with pagination. Repository insights representing research findings. Returns insight metadata including title, description, and content type.
list_repo_interview_highlights
ChatGPTList all repo interview highlights with pagination. Highlights of one interview, by the session_uuid from list_repo_sessions: any kind of session, including recordings and unmoderated tests. Includes highlights made on its transcript without a clip. Returns the same highlight metadata as search_repo_highlights; pass a highlight's uuid to get_repo_highlight for its content and tags. Free-text fields are masked when the account hides PII from MCP.
list_repo_reels
ChatGPTList all repo reels with pagination. Repository reels (highlight compilations) representing curated collections of video clips. Returns reel metadata including title and subtitle. Free-text fields are masked when the account hides PII from MCP.
list_repo_sessions
ChatGPTList all repo sessions with pagination. Repository sessions representing research interviews, calls, or observations. Returns session metadata including title, summary, and timestamps. A session with a recording or transcript does not mean the participant attended: recording starts when the moderator joins. For attendance (completed, no_show), use list_study_participants. When a recording exists, recording includes duration_seconds, recorded_at, and transcript_id. When recording delivery is enabled for the account (admin opt-in, non-HIPAA), recording also includes a short-lived signed video_url.
list_repo_tags
ChatGPTList all repo tags with pagination. Repository tags applied to highlights, reels and insights. Returns each tag's ID, name, study and group, so tag_ids on those records can be resolved to names. Lists global tags and tags of studies the caller can read.
list_skills
ChatGPTList all skills with pagination. Reusable AI skills enabled for the account. Returns slug, name, and description. Use a skill slug with get_skill to retrieve its full instructions.
list_studies
ChatGPTList all studies with pagination. User research studies (interviews, surveys, unmoderated tests). Returns title, status, style, and configuration.
list_study_messages
ChatGPTList all study messages with pagination. List a study's messages. A message with custom: true is a one-off written in the app for a single send and no automatic send reads it; every other message is the study's own email template for that kind, the copy the study sends. A kind that has never been opened or sent has no message yet - fetch the account default with get_message_template(kind) and write it with compose_study_message(kind).
list_study_participants
ChatGPTList all study participants with pagination. List a study's participants with their status. This is the source of truth for whether a participant attended: a session with a recording or transcript does not mean the participant showed up, because recording starts when the moderator joins. candidate_id links a participant to sessions and candidates.
list_survey_questions
ChatGPTList all survey questions with pagination. List the questions in a survey body in display order.
list_survey_responses
ChatGPTList all survey responses with pagination. List participant responses for a survey study. Each response includes structured answers with labels, values, qualification flags (qualified, qualifying, disqualified), and match score.
list_survey_screener_responses
ChatGPTList all survey screener responses with pagination. List screener responses for a survey study. Returns applicants' answers to the qualification screener with structured answers, qualification flags (qualified, qualifying, disqualified), and match score. Distinct from list_survey_responses, which returns the survey's own form answers.
list_survey_studies
ChatGPTList all survey studies with pagination. Survey studies. Returns title, status, and configuration for each survey.
list_teams
ChatGPTList all teams with pagination. Teams within the account. Returns name, color, and icon. Use a team id as the team_id when creating a moderated (interview) study.
list_templates
ChatGPTList all templates with pagination. List the account's reusable templates. Each reports how many questions it carries. Use get_template to read a template's questions.
list_transcripts
ChatGPTList all transcripts with pagination. Matching passages from recorded research sessions. Each entry carries the excerpt text, its relevance score, and a reference to the transcript it came from; load the full transcript with GET /v1/transcripts/:id.
list_unmoderated_responses
ChatGPTList all unmoderated responses with pagination. List participant responses for an unmoderated study. Each response includes structured answers (text, choice, prototype test, website test, card sort, tree test) with labels, values, question types, task timings, and qualification data. For website-test answers, only the url the participant was shown is captured — there is no click, time-on-page, or path data; the session recording and follow-up question answers are the only behavioral signal. When the participation has an associated session (AI-moderated unmoderated studies), session includes the uuid and a url deep link to the GQ app. When a recording exists, recording includes duration_seconds, recorded_at, and transcript_id; fetch transcript content with get_transcript (passing recording.transcript_id) or get_repo_session_transcript (passing session.uuid). Streamable video URLs are intentionally not exposed.
list_unmoderated_screener_responses
ChatGPTList all unmoderated screener responses with pagination. List screener responses for an unmoderated study. Returns applicants' answers to the qualification screener with structured answers, qualification flags (qualified, qualifying, disqualified), and match score. Distinct from list_unmoderated_responses, which returns in-test block answers.
list_unmoderated_studies
ChatGPTList all unmoderated studies with pagination. List unmoderated studies — participants complete tasks independently (prototype walkthroughs, card sorts, tree tests, website tests, AI-moderated interviews). Returns title and status for each study; call get_unmoderated_study for a study's block configuration.
remove_interview_moderator
ChatGPTRemove an interview moderator. Remove a user from an interview. Cannot remove the owner.
remove_repo_tag
ChatGPTRemove a tag from artifacts. Takes up to 20 highlights, reels or insights; each keeps its other tags. Removing a tag an artifact does not have changes nothing. Returns each artifact's tag_ids after the change under succeeded; an artifact that cannot be untagged is listed under failed with the reason, and does not stop the rest. Retrying a call is safe.
reorder_survey_question
ChatGPTUpdate an existing survey question. Move a survey question to a new 1-based position and shift the surrounding questions.
reorder_unmoderated_block
ChatGPTUpdate an existing unmoderated block. Move a block to a new 1-based position within its unmoderated study. Structural blocks pin the order — a move that would place a block before the permissions block or after the thank-you block is rejected.
revise_study_message
ChatGPTUpdate an existing study message. Revise a study message in place, by id. A message with custom: true is a one-off written for a single send, so revising it changes nothing the study sends automatically - reach for compose_study_message(kind) to change the copy the study sends.
run_report
ChatGPTRun a single report by ID. Returns the same typed columns and rows the Reporting tab renders, capped at the same row limit. The key is a report key from get_report_catalog, which also names the params each report accepts — a param a report does not accept is rejected rather than ignored, so read its allowed_params before passing any.
search_candidate_segments
ChatGPTSearch candidate segments using filters. Saved candidate-filter definitions ("segments") within the account. Returns id and name. Use a segment id as the segment_id filter on search_candidates to retrieve candidates matching the segment.
search_candidates
ChatGPTSearch candidates using filters. Research participants (people who take part in studies). Returns name, email, and demographics. For a candidate's status in a study, use list_study_participants.
search_consent_forms
ChatGPTSearch consent forms using filters. List consent forms available for attaching to a study. Use this to discover valid IDs to pass as consent_form_id when creating or updating an interview, survey, or prototype test.
search_interview_responses
ChatGPTSearch interview responses using filters. List screener responses for an interview study. Each response includes structured answers with labels, values, qualification flags (qualified, qualifying, disqualified), and match score — useful for triaging candidates.
search_interview_screener_responses
ChatGPTSearch interview screener responses using filters. List screener responses for an interview study. Each response includes structured answers with labels, values, qualification flags (qualified, qualifying, disqualified), and match score — useful for triaging applicants.
search_interview_studies
ChatGPTSearch interview studies using filters. Interview (video call) studies. Returns title, status, and configuration for each interview.
search_repo
ChatGPTSearch the repo. Searches the research repository the way its search page does: highlights, reels, insights (files included), interview sessions and survey results ranked together by relevance, then in sort order. Each result's reference is {type, id, title}; fetch it with the matching tool: insight with get_repo_insight, highlight with get_repo_highlight, reel with get_repo_reel, session with get_repo_session, screener_response with get_screener_response, survey_response with get_survey_response (pass the result's study_id as survey_id) and unmoderated_response with get_unmoderated_response (pass it as unmoderated_study_id). meta.has_more says whether another page follows.
search_repo_highlights
ChatGPTSearch repo highlights using filters. Repository highlights representing annotated excerpts from research sessions. Returns highlight metadata including text, title, and color. Free-text fields are masked when the account hides PII from MCP.
search_repo_insights
ChatGPTSearch repo insights using filters. Repository insights representing research findings. Returns insight metadata including title, description, and content type.
search_repo_reels
ChatGPTSearch repo reels using filters. Repository reels (highlight compilations) representing curated collections of video clips. Returns reel metadata including title and subtitle. Free-text fields are masked when the account hides PII from MCP.
search_repo_sessions
ChatGPTSearch repo sessions using filters. Repository sessions representing research interviews, calls, or observations. Returns session metadata including title, summary, and timestamps. A session with a recording or transcript does not mean the participant attended: recording starts when the moderator joins. For attendance (completed, no_show), use list_study_participants. When a recording exists, recording includes duration_seconds, recorded_at, and transcript_id. When recording delivery is enabled for the account (admin opt-in, non-HIPAA), recording also includes a short-lived signed video_url.
search_repo_tags
ChatGPTSearch repo tags using filters. Repository tags applied to highlights, reels and insights. Returns each tag's ID, name, study and group, so tag_ids on those records can be resolved to names. Lists global tags and tags of studies the caller can read.
search_studies
ChatGPTSearch studies using filters. User research studies (interviews, surveys, unmoderated tests). Returns title, status, style, and configuration.
search_study_participants
ChatGPTSearch study participants using filters. List a study's participants with their status. This is the source of truth for whether a participant attended: a session with a recording or transcript does not mean the participant showed up, because recording starts when the moderator joins. candidate_id links a participant to sessions and candidates.
search_survey_responses
ChatGPTSearch survey responses using filters. List participant responses for a survey study. Each response includes structured answers with labels, values, qualification flags (qualified, qualifying, disqualified), and match score.
search_survey_screener_responses
ChatGPTSearch survey screener responses using filters. List screener responses for a survey study. Returns applicants' answers to the qualification screener with structured answers, qualification flags (qualified, qualifying, disqualified), and match score. Distinct from list_survey_responses, which returns the survey's own form answers.
search_survey_studies
ChatGPTSearch survey studies using filters. Survey studies. Returns title, status, and configuration for each survey.
search_teams
ChatGPTSearch teams using filters. Teams within the account. Returns name, color, and icon. Use a team id as the team_id when creating a moderated (interview) study.
search_templates
ChatGPTSearch templates using filters. List the account's reusable templates. Each reports how many questions it carries. Use get_template to read a template's questions.
search_transcripts
ChatGPTSearch transcripts using filters. Matching passages from recorded research sessions. Each entry carries the excerpt text, its relevance score, and a reference to the transcript it came from; load the full transcript with GET /v1/transcripts/:id.
search_unmoderated_responses
ChatGPTSearch unmoderated responses using filters. List participant responses for an unmoderated study. Each response includes structured answers (text, choice, prototype test, website test, card sort, tree test) with labels, values, question types, task timings, and qualification data. For website-test answers, only the url the participant was shown is captured — there is no click, time-on-page, or path data; the session recording and follow-up question answers are the only behavioral signal. When the participation has an associated session (AI-moderated unmoderated studies), session includes the uuid and a url deep link to the GQ app. When a recording exists, recording includes duration_seconds, recorded_at, and transcript_id; fetch transcript content with get_transcript (passing recording.transcript_id) or get_repo_session_transcript (passing session.uuid). Streamable video URLs are intentionally not exposed.
search_unmoderated_screener_responses
ChatGPTSearch unmoderated screener responses using filters. List screener responses for an unmoderated study. Returns applicants' answers to the qualification screener with structured answers, qualification flags (qualified, qualifying, disqualified), and match score. Distinct from list_unmoderated_responses, which returns in-test block answers.
search_unmoderated_studies
ChatGPTSearch unmoderated studies using filters. List unmoderated studies — participants complete tasks independently (prototype walkthroughs, card sorts, tree tests, website tests, AI-moderated interviews). Returns title and status for each study; call get_unmoderated_study for a study's block configuration.
send_interview_screener_invitation
ChatGPTSend a new interview screener invitation. Invite candidates to an interview's screener. Creates invited participations and sends the screener invitation message to each contactable candidate.
send_survey_screener_invitation
ChatGPTSend a new survey screener invitation. Invite candidates to a survey's screener. Creates invited participations and sends the screener invitation message to each contactable candidate.
send_unmoderated_screener_invitation
ChatGPTSend a new unmoderated screener invitation. Invite candidates to an unmoderated study's screener. Creates invited participations and sends the screener invitation message to each contactable candidate.
update_candidate
ChatGPTUpdate an existing candidate. Update a candidate's core attributes. Additional per-account custom attribute keys may be passed alongside the core fields.
update_interview_calendar_settings
ChatGPTUpdate an existing interview calendar settings. Update calendar booking settings for an interview.
update_interview_moderator
ChatGPTUpdate an existing interview moderator. Update an interview moderator's role or calendar.
update_interview_screener_question
ChatGPTUpdate an existing interview screener question. Update attributes of a single screener question.
update_interview_study
ChatGPTUpdate an existing interview study. Update an interview's attributes.
update_repo_highlight
ChatGPTUpdate an existing repo highlight. Change a highlight's title, description, tags, or selected transcript words. Omitted fields stay unchanged. To move it, provide a verbatim quote from get_repo_session_transcript or both start_ms and end_ms, never both. A quote must match exactly one uninterrupted passage by one speaker; add words if it matches more than one. A time range selects all fully enclosed timed words, across speakers, and snaps the clip to their boundaries. A highlight with a clip can move only to fully timed words; one without a clip can also move to timed words when its session has no source media. The new words must not be marked by another highlight. tag_ids replaces all tags; an empty list removes them. Tags must be global or belong to the session's study.
update_repo_insight
ChatGPTUpdate an existing repo insight. Update an insight. Omitted fields stay. body_doc replaces the body; embeds it doesn't cite move after it. highlight_uuids and reel_tokens replace that kind's embeds, except ones the body cites. A file-backed insight has no body or embeds.
update_repo_reel
ChatGPTUpdate an existing repo reel. Change a reel's title, subtitle, or highlights. Omitted fields stay unchanged. highlight_uuids replaces the reel's highlights and sets their order: include a highlight to add it, leave one out to remove it. Each highlight must have a clip and may appear once. A reel in a study only holds highlights from that study. The reel's video is restitched in the background when its highlights change.
update_study_participant
ChatGPTUpdate an existing study participant. Change a participant's status the way a researcher does in the app. Use removed to remove them from the study; it only applies before they are scheduled (new_to_study, sent_screener, applied, shortlisted, invited), and shortlisting them again undoes it. Use canceled for a participant who is already scheduled. Marking a participant completed does not pay or send an incentive. Incentives cannot be issued through MCP. Completing fails if the study lacks funds. Marking no_show or canceled cancels an unredeemed incentive.
update_survey_question
ChatGPTUpdate an existing survey question. Update one question in a survey body. Use reorder_survey_question to change its position.
update_survey_screener_question
ChatGPTUpdate an existing survey screener question. Update attributes of a single screener question.
update_survey_study
ChatGPTUpdate an existing survey study. Update a survey's title, research goal, team, or owner.
update_unmoderated_block
ChatGPTUpdate an existing unmoderated block. Update a block's shared attributes and its kind-specific fields. The block's kind cannot change. Updating a prototype-test url re-fetches its screen graph asynchronously.
update_unmoderated_screener_question
ChatGPTUpdate an existing unmoderated screener question. Update attributes of a single screener question.
update_unmoderated_study
ChatGPTUpdate an existing unmoderated study. Update an unmoderated study's title, research goal, team, or owner.