Before you connect
Your account must be on a Scale or Enterprise plan with MCP access enabled. An account admin will need to enable MCP access for your roles in your workspace settings. You can connect an MCP client only to an account where you are a member. If you belong to more than one eligible Doozy account, the consent screen lets you choose which account to connect.Configure account access
Workspace admins manage MCP access in Workspace Settings → API, MCP & Webhooks. Select the lowest role that can connect. Selecting Member also gives access to Managers and Admins. Selecting Manager also gives access to Admins. Clear every role to disable MCP for the account. MCP roles are configured separately from Public API roles.Connect an MCP client
Use the server URL and client-specific instructions in your Personal Settings. When the client opens Doozy:- Sign in to Doozy.
- Review the application details and requested access.
- Choose the account to connect, if prompted.
- Select Allow access, or select Deny to decline the request.
Access and permissions
MCP can only access information you are allowed to see in Doozy. Connecting an AI client does not give it additional access. To request a complete activity report:- Quizzes: You must be a quiz admin.
- Surveys and polls: You must be an admin of the survey or poll.
- Tracks: You must be a track admin or have cohort access that grants permission to manage the track.
Available tools
The server provides the following read-only tools. Reports are returned as Markdown by default. Quiz, survey, and Track reports tell the client when more results are available.doozy_search
Searches the members, Tracks, quizzes, surveys, groups, and cohorts you can access. Each result includes its Doozy link and the ID needed by other tools. Use the matching detail or report tool for more information. Set include_inactive: true to include archived or inactive items. Set include_slack_user_id: true to include connected Slack user IDs.
doozy_list_activities
Lists quizzes, surveys, and tracks you can report on. Use this first when you have an activity name and need its ID.
Inputs:
type:quiz,survey,track, orall(default).search: Case-insensitive substring search on the activity name, up to 200 characters.include_archived: Include archived quizzes, surveys, and Tracks. It defaults tofalse.
doozy_quiz_report
Returns quiz summary analytics and participant rows. Summary output includes participation status, completion rate, average and median scores, score percentiles, score distribution, pass threshold results, delivery instances, and optional per-question analytics.
Use detail: "full" for per-question analytics. Markdown participant pages support up to 100 rows per call. Use cursor from the response to continue. You can also filter by status, score range, group, and participant name or email, and restrict the report to a delivery instance. Sort by score, name, completion time, or duration.
from_date and to_date inclusively filter the participant’s quiz assignment time (assigned_at).
doozy_survey_report
Returns survey or poll response rates and per-question aggregates. Use detail: "full" to include comments and question-level answers. Use compare_instances: true for response-rate trends across sends. Trend comparison is available in Markdown only.
Named surveys support respondent pagination, response status, group, delivery instance, and sort filters. Anonymous surveys return aggregate results only. Individual responses cannot be attributed to people, so anonymous surveys cannot use group filters or export respondent rows.
from_date and to_date inclusively filter the participant’s delivery time (received_at). When instance_id is set, the exact delivery takes precedence and date bounds are ignored.
doozy_track_report
Returns track member counts and progress, with optional member rows ordered by most recent enrollment. Use detail: "full" for per-step survey and quiz results in Markdown when member rows are included. Filter by member status. Set include_enrollees: false for Markdown summary output; exports always include matching member rows.
from_date and to_date inclusively filter the enrollment start time (started_at).
doozy_track_details
Returns a Track’s admins, dates, duration, and day-by-day schedule. The schedule includes the content and settings for each step. Use doozy_track_report for dates tied to a member’s enrollment.
doozy_member_status
Finds one member’s status across the Tracks you can see for that person. Match by exact display name, email address, Doozy user ID, or Slack user ID. The result includes their email address and Doozy user ID. Set include_slack_user_id: true to include their connected Slack user ID. When more than one person has the same display name, use an email address or user ID.
doozy_find_member
Finds one active workspace member by exact display name, email address, Doozy user ID, or Slack user ID. It returns their name, email address, Doozy user ID, and Doozy link. Set include_slack_user_id: true to include their connected Slack user ID. If several people have the same display name, the tool returns possible matches so the client can retry with an email address or user ID.
doozy_list_members
Returns active workspace members with their names, email addresses, and Doozy user IDs. Set include_slack_user_id: true to include connected Slack user IDs. Use track_enrollment: "none" or "any" to find members based on whether they are enrolled in a Track you can access.
doozy_member_activity_summary
Returns one member’s email address, Doozy user ID, and the Tracks, quizzes, and surveys you can see for them. Match by exact display name, email address, Doozy user ID, or Slack user ID. Set include_slack_user_id: true to include their connected Slack user ID.
doozy_list_groups and doozy_group_details
Lists workspace groups and the IDs used by quiz and survey report filters. Set include_inactive: true to include inactive and hidden groups. The detail tool returns the active member count and member list with email addresses and Doozy user IDs. Set include_slack_user_id: true to include connected Slack user IDs.
doozy_list_cohorts and doozy_cohort_details
Lists cohorts you can access. Active and upcoming cohorts are returned by default. Set include_inactive: true to include completed, archived, and skipped cohorts. Results include cohort IDs, status, member counts, and Doozy links. The detail tool returns the cohort’s program and members with their email addresses and Doozy user IDs. Set include_slack_user_id: true to include connected Slack user IDs.
doozy_usage_summary
Returns the workspace name, connected user’s email address, and an account-level usage overview with total members, enabled members, members active in the last 30 days, active share, and integration status. Use a quiz, survey, or Track report for activity-specific results.
The result includes the workspace timezone.
doozy_quiz_details
Returns the quiz’s admins, dates, questions, answer choices, correct answers, and explanations.
doozy_quiz_participant_result
Returns one participant’s submitted and correct answers for a quiz delivery. Use the quiz, delivery, and participant IDs from doozy_quiz_report.
doozy_survey_details
Returns the survey’s admins, dates, response settings, and questions.
doozy_survey_participant_result
Returns one named participant’s submitted answers and delivery timestamps for one survey instance, with an exact person-result link. Use the survey, instance, and participant IDs returned by doozy_survey_report. Anonymous surveys remain aggregate-only and return no attributable result.
doozy_track_enrollee_result
Returns one member’s Track enrollment, including its status, dates, step progress, and available activity results. Use the Track and enrollment IDs from doozy_track_report.
Web app links
Results include links to the relevant screen in Doozy, so you can open an activity, report, or person directly. Export files do not include these links.Output formats and limits
Date bounds use ISO 8601 date-times withZ or a UTC offset. Both the start and end are included. Use doozy_usage_summary to check the workspace timezone when filtering by a local business day.
Report tools default to Markdown. Quiz, survey, and track reports also accept format: "csv", format: "tsv", or format: "json".
- Markdown responses are limited to 24,000 characters. If a response is shortened, use a smaller
limit, add filters, or setdetail: "summary". - Exports include all matching rows and ignore the Markdown
limit. Exports are limited to 10,000 rows and 1,000,000 characters. Add filters if an export exceeds either limit. - CSV and TSV exports include a header row. JSON exports return an array of row objects. CSV and TSV emit null or missing export fields as empty strings; JSON preserves null values.
- Quiz exports contain participant identity, groups, status, score, points, duration, attempts, question totals, completion time, and delivery instance ID.
- Survey exports contain named respondent and delivery fields. With
detail: "full", each respondent’s question-level answers become separate rows; a non-respondent gets one blank row per question. The expanded result still must stay within the 10,000-row limit. - Track exports contain member, enrollment, status, progress, step counts, groups, delivery timestamps, and completion time. Track detail data is available in Markdown; exports remain member-row exports.
REST API and MCP
The Doozy Public API is separate from MCP. Public API keys cannot be used to connect an MCP client. Download the OpenAPI specification for the REST API’s request and response formats.API authentication
Authenticate REST API requests with an API key.
API errors
Review REST API error responses.