add_logic_rule
ChatGPTAdd a conditional logic rule to a question. For single-select multipleChoice use operation 'equals' with the EXACT option text; for multi-select use 'contains'; for numeric questions (ratingScale/nps/starRating/number) use numeric comparisons with the number as a string; all other types only support 'always'. Use move_to_group to enter a question group at its first question. To screen participants out (screeners, disqualification) use screen_out, not end_interview: end_interview counts the interview as completed.
add_question_group
ChatGPTCreate a top-level question group or one subgroup. Nesting is capped at two levels. Use move_questions_to_group to place existing questions in it.
add_questions
ChatGPTAdd one or more questions to a study. Supports all Versive question types with sensible per-type defaults (see get_capabilities for the full catalog). In flat studies, questions are inserted at after_position; in grouped studies they are appended (set question_group_id to target a group) and after_position is ignored. The result reports the placement actually used.
add_randomizer
ChatGPTCreate a weighted split test from existing content: each arm shows one question or one existing group (several question_ids are grouped automatically), or is left empty as a placeholder. Weights are basis points and must total 10000. Use this for A/B or concept tests; use a randomized question group to shuffle order instead.
archive_study
ChatGPTArchive a study: it stops accepting responses and disappears from list_studies, but all its data is preserved and it can be restored from the Versive dashboard. This is the only removal MCP offers — studies are never hard-deleted here.
create_prolific_panel_project
ChatGPTCreate a DRAFT Prolific recruiting panel for a study: title, description, participant count (max 250), duration, reward per participant in USD (Prolific enforces at least $8 per hour of survey time; aim for $20-30 per hour), optional targeting filters (find ids with search_prolific_filters, check get_prolific_eligible_count) and naivety rate. Best for general-population and consumer samples, speed and low cost. Studies with screen-out logic must set screen_out_reward and screen_out_slots (Prolific pays screened-out participants; more slots can only be bought by the user in the dashboard after publishing); redirect logic rules are not supported. Requires full access to the study. Before creating: call get_study (mode and duration drive the reward and device needs), propose provider, participant count, duration, incentive, targeting and the estimate_panel_project_cost total, and get the user's go-ahead. Then create ONE draft and refine it with the update tool. Nothing here is published or charged: the user pays and publishes in the Versive dashboard at the edit_url the tools return.
create_respondent_panel_project
ChatGPTCreate a DRAFT Respondent recruiting panel for a study: title (3-50 chars), description, participant count (max 500), duration, whole-dollar incentive ($5-$1000; Respondent suggests $2/min b2c, $3/min b2b), market type (b2c targets 1-2 topics; b2b targets industries, job titles, skills), demographic targeting (values from get_respondent_lookups) and screener questions. Best for professionals, B2B roles and screener-gated recruiting. The market type cannot change later. Screeners (2+) and b2b job titles are only required to publish, so the draft can be created first and the screener proposed to the user and added with the update tool. Requires full access to the study and a user identity. Before creating: call get_study (mode and duration drive the reward and device needs), propose provider, participant count, duration, incentive, targeting and the estimate_panel_project_cost total, and get the user's go-ahead. Then create ONE draft and refine it with the update tool. Nothing here is published or charged: the user pays and publishes in the Versive dashboard at the edit_url the tools return.
create_study
ChatGPTCreate a new research study in your organization. Three INDEPENDENT axes, do not conflate them: (1) status — live from creation, no draft state, but a live study is inert until someone distributes its share_url, so do NOT apply protective settings (paused, quota, restricted access) unprompted; (2) access_policy — which ORG MEMBERS see the study in the dashboard, never who can participate; (3) share_url — the participant entry point; it stops accepting responses when the study is paused or archived. Creation requires an owner, admin, or creator organization role; for other users this returns guidance instead of creating. Existing studies can be edited by anyone with edit access.
delete_logic_rule
ChatGPTDelete (soft-delete) a logic rule from a question.
edit_interview_message
ChatGPTEdit one of the study's participant-facing messages: welcome (start), thank_you (completion), or screen_out. Only provided fields change.
edit_logic_rule
ChatGPTEdit an existing logic rule. Only provided fields change. Use get_logic_rules first.
edit_question
ChatGPTEdit any aspect of a question: content, type, options, labels, scale settings, or behavior flags. Only provided fields change; props merge with the existing configuration. Changing question_type preserves the id and position but rebuilds props for the new type. The result warns when an edit orphans logic rules that match on removed option text. Use get_question_details first.
edit_question_group
ChatGPTRename a question group or change whether it randomizes its direct children. Only provided fields change.
edit_randomizer
ChatGPTReplace a randomizer's final arm configuration: rename it, add/update/remove arms, change weights or targets, or move it. Pass every arm that should survive — arms left out are removed with their content.
edit_study_settings
ChatGPTEdit study-level settings: title, description, status (published/paused), conversation mode, completion quota, pause redirect URL, org-visibility access_policy, interviewer branding (display name, personality, brand color), or languages (default_language / supported_languages — setting supported_languages triggers background translation). The personality is freeform prompt text describing any persona or tone; the interviewer defaults are tuned to work well, so leave name/personality/color untouched unless the user asks for a specific change or you are fixing a specific problem — and read the current values (get_study) before changing them. Only provided fields change.
estimate_panel_project_cost
ChatGPTAdvisory cost estimate for recruiting a number of participants at a given incentive on Prolific or Respondent (rewards plus provider and platform fees), before creating a panel. For Prolific it reports screen_out_required when the study screens participants out, and then prices the required screen-out budget (defaults unless screen_out_reward / screen_out_slots are given); use those values in the plan and the create call. The charged amount is always computed at checkout in the dashboard.
export_study_data
ChatGPTExport interview responses as CSV: one row per interview, one column per question (answers come from what participants actually said). Paginated over interviews — check total_interviews in the result and page through for large studies. Useful for analysis in external tools or handing the raw data to the user.
get_capabilities
ChatGPTGround truth about what Versive studies support: the full question-type catalog with per-type props and their server-side defaults, logic-rule operations and actions per question type, question-group rules, known-unsupported features WITH their workarounds, and Versive's distinctive capabilities. Consult this before telling a user something is or is not possible, and before building questions of an unfamiliar type. Optional topic narrows the answer (e.g. "logic", "randomization", "question_types").
get_interview
ChatGPTFetch a single interview by id, including the question/answer conversation. Use this to quote or analyze what a participant actually said. Long conversations are windowed: total_messages reports the full length, and message_offset/message_limit page through it. Requires read access to the study the interview belongs to.
get_logic_rules
ChatGPTList conditional logic rules — for one question (question_id) or the whole study (study_id). Rules are returned in the same vocabulary the write tools accept (equals/contains/always, skip_to/move_to_group/end_interview/screen_out/redirect), so values can be passed back to add_logic_rule / edit_logic_rule as-is.
get_panel_project
ChatGPTFetch one recruiting panel with its provider-specific targeting: Prolific filters, naivety rate, device requirements, and readiness; or Respondent market type, demographic and professional targeting, and screener questions. Read before updating.
get_prolific_eligible_count
ChatGPTHow many Prolific participants match a set of filters (empty filters = the whole pool). Prolific reports 0 when fewer than masked_below (5) match. Use it to sanity-check targeting before creating a panel, and warn the user when the count is close to or below the participants they want.
get_question_details
ChatGPTFetch one question's full configuration (content, type, props, media assets, attached logic rules). Use assets[].download_url to view media; private links expire at download_url_expires_at. Fetch details again for a fresh link. assets[].url is the stable identifier, not a private-media download link. Use before editing a question to see its current state.
get_respondent_lookups
ChatGPTRespondent targeting vocabularies: country, companySize, householdIncome, gender, educationLevel, ethnicity, ageGroup, seniorityLevel, industries, jobFunction, topics. Job titles and skills are NOT lookups: search them with search_respondent_options. Pass the ids or values returned here to create_respondent_panel_project.
get_study
ChatGPTFetch a single Versive study by id: status, settings, quota, interviewer branding, participant-facing messages, languages, question/group/interview counts, and its share_url (participant link) and study_url (dashboard link). Always use these URLs when referring to the study — never construct one. Use before editing to see current values. Fails with an access error if you cannot read the study.
get_study_stats
ChatGPTOne-call answer to "how is my study doing?": totals and per-status counts of STARTED interviews (never-started invitation links are excluded), completion rate, median progress of incomplete interviews, approximate drop-off by question, and weekly started/completed trends. Real vs AI-simulated interviews are always split (completed_real vs completed_simulated) — report them separately, never as one number. active_interviews matches the default list_interviews total. Pass question_id to instead get answer aggregates for one quantitative question (the same numbers the dashboard charts show) — prefer that over reading every interview and tallying by hand.
list_interviews
ChatGPTList interviews for a Versive study (paginated, with the total count). By default returns the ACTIVE set (in_progress + closed + processing) — 'open' invitation links that were never started, screened_out, paused, and canceled interviews appear only when filtered for explicitly by status. The default total matches get_study_stats active_interviews. Filter by status or exclude AI-simulated interviews with include_simulations: false. Requires read access to the study.
list_panel_projects
ChatGPTList recruiting panels (Prolific or Respondent projects): provider, status (DRAFT = not paid or published yet, PAID = live, CLOSED), recruiting status, participant counts, and dashboard links (panel_url; edit_url for drafts). Omit study_id to list EVERY panel in your organization in one call (each row carries its study_title) — never walk list_studies and query study by study. Pass study_id for one study. Use get_panel_project for targeting details.
list_question_groups
ChatGPTList a study's question groups, hierarchy, display order, and randomization settings. Use with list_questions to understand the complete grouped interview structure.
list_questions
ChatGPTList a study's interview questions, including question type, group membership, per-parent display order, interviewer notes, and whether each question has logic rules attached (has_logic). For grouped studies, combine this with list_question_groups to reconstruct the interview tree.
list_randomizers
ChatGPTList a study's randomizers (weighted split tests) with their arms, weights, and each arm's target question or question group. A group whose routing_branch_id is set in list_question_groups is owned by one of these arms.
list_studies
ChatGPTList the research studies in your Versive organization that you have access to, newest first, paginated (returns items plus the total count). Optionally filter by status or a title/description query, and set include_activity for per-study response counts (which studies have interviews, completions, simulations). Use get_study for full details of one study.
move_questions_to_group
ChatGPTMove questions into a group, or pass null to move them to the study top level. Questions are appended to the target. Moves that would invalidate randomized-group skip logic are rejected.
read_doc
ChatGPTRead one help-center page as plain Markdown, optionally a single section. Use the slug from search_docs (e.g. "mcp/setup", "getting-started/concepts"); a docs.getversive.com URL is accepted too. Pass section to read just one heading (its text or anchor, e.g. "Troubleshooting") — the response lists every heading, so read a section first for long pages. Answer from the content and cite the page url. The pages describe the product in general; use get_study, list_interviews, etc. for anything about the user's own data.
remove_question_group
ChatGPTRemove a group. mode='ungroup' dissolves it and keeps its children; mode='delete' also removes descendant groups and questions. Prefer ungroup unless deletion is explicit.
remove_questions
ChatGPTRemove (soft-delete) one or more questions from a study. This cannot be undone via MCP. The result reports logic rules on other questions that targeted a removed question and now need fixing.
remove_randomizer
ChatGPTRemove a randomizer. mode='ungroup' dissolves it and keeps every question (arm content moves back into the study in arm order); mode='delete' also removes the questions and groups inside its arms. Prefer ungroup unless deletion is explicit.
reorder_questions
ChatGPTReorder a study's questions. Provide ALL question ids in the desired order (use list_questions first to get the current order). Grouped studies must use move_questions_to_group instead.
search_docs
ChatGPTSearch Versive's help center (docs.getversive.com) for product knowledge: how features work in the app, credits and billing, sharing and distribution, recruiting participants, results and insights, organizations, roles and permissions, MCP server setup, and API / SDK basics. Use it for "how do I…" and "how does … work" questions instead of guessing (get_capabilities stays the source of truth for what the study tools can literally do). Returns the best-matching pages with the matched section and a snippet; call read_doc with a result's slug for the full page or one section, then answer from it and link the page url.
search_prolific_filters
ChatGPTSearch the Prolific participant-filter catalog by text (titles, ids, choice labels) or category. Returns filter ids, their type (select or range), and choice ids with labels to use in create/update_prolific_panel_project filters. Small filters list every choice; when choices_truncated is true, or the choice you need is not shown, call again with filter_id to list that filter's choices (query then narrows them). Never guess an id.
search_respondent_options
ChatGPTSearch Respondent job titles or skills by text and get the ids to use for B2B targeting (target_job_titles, target_audience_skills).
set_question_quotas
ChatGPTCap completed interviews per option on a multiple choice question (replace-set: pass the FULL bucket list; an empty list clears the question's quotas). match 'equals' = that option is the only one selected (works on single- and multi-select), 'includes' = option among the selected values (multi-select only); limit 0 closes the option; options without a bucket are unlimited. When a bucket is full, new participants who choose that option are screened out when they answer; other options keep going. Independent of the study-level quota in edit_study_settings. Values must be the exact option text — use get_question_details first. Success returns {question_id, buckets} with the normalized saved buckets. Fails with a clear error for an unknown question, a non multipleChoice question, a value that is not one of the question options, or an 'includes' bucket on a single-select question.
add_logic_rule
Claudeadd_question_group
Claudeadd_questions
Claudearchive_study
Claudecreate_study
Claudedelete_logic_rule
Claudeedit_interview_message
Claudeedit_logic_rule
Claudeedit_question
Claudeedit_question_group
Claudeedit_study_settings
Claudeexport_study_data
Claudeget_capabilities
Claudeget_interview
Claudeget_logic_rules
Claudeget_question_details
Claudeget_study
Claudeget_study_stats
Claudelist_interviews
Claudelist_question_groups
Claudelist_questions
Claudelist_studies
Claudemove_questions_to_group
Clauderemove_question_group
Clauderemove_questions
Claudereorder_questions
Claude