> ## Documentation Index
> Fetch the complete documentation index at: https://help.doozy.live/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP reporting

> Reference for Doozy's read-only MCP reporting tools

Doozy's MCP server lets AI assistants search your workspace and answer questions about activities, people, and account usage. It is read-only and uses your Doozy permissions.

<Warning>
  MCP access is in beta. It is available on Scale and Enterprise plans. Contact
  [hello@doozy.live](mailto:hello@doozy.live) to request access.
</Warning>

## 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:

1. Sign in to Doozy.
2. Review the application details and requested access.
3. Choose the account to connect, if prompted.
4. Select **Allow access**, or select **Deny** to decline the request.

Only connect Doozy MCP to applications that you trust. The MCP client receives the read-only reporting access described below.

The connection uses your Doozy account and permissions.

Manage your active connections in **Personal Settings**. The list shows only your connections for the account currently selected in Doozy.

## 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.

When you ask about a person, MCP only returns activity results you have permission to view. Anonymous survey responses are never linked to an individual.

Search and activity lists only include activities whose results you can view. Finding a workspace member does not grant access to their activity results.

## 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`, or `all` (default).
* `search`: Case-insensitive substring search on the activity name, up to 200 characters.
* `include_archived`: Include archived quizzes, surveys, and Tracks. It defaults to `false`.

The tool returns up to 50 matches. On very large workspaces, choose one activity type or use a report tool with an activity ID to narrow the search.

### `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 with `Z` 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 set `detail: "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](/api/overview) is separate from MCP. Public API keys cannot be used to connect an MCP client.

Download the [OpenAPI specification](/openapi.json) for the REST API's request and response formats.

<CardGroup cols={2}>
  <Card title="API authentication" icon="key" href="/api/authentication">
    Authenticate REST API requests with an API key.
  </Card>

  <Card title="API errors" icon="triangle-exclamation" href="/api/errors">
    Review REST API error responses.
  </Card>
</CardGroup>
