Skip to main content
Glama
Survey Solutions MCP Server

Survey Solutions MCP Server

by lbruce-wq

Survey Solutions MCP Server

Codex-ready local MCP server for Survey Solutions Headquarters workflows.

This package runs as a local stdio MCP server. It lets Codex inspect Survey Solutions servers, manage local connection profiles, run safe read workflows, download and inspect exports, and perform guarded fieldwork/admin actions when the local profile permission level allows it.

Status

  • Version: 0.2.7

  • Runtime: Node.js 20+

  • MCP transport: local stdio

  • Default profile: mock Survey Solutions server for local testing

  • Implemented tools: 123

  • Prompts: 6

  • Resources: 2

  • Current target clients: Codex / OpenAI MCP clients and Claude Desktop local MCP

  • Developed and tested against Survey Solutions Headquarters server version 26.07

  • Current scope: curated public API surface for Headquarters discovery, fieldwork operations, exports/version workflows, setup helpers, administration, statistics, and modular QC planning.

  • License: MIT

Related MCP server: wrapmcp

What It Can Do

  • Manage local Survey Solutions connection profiles with suso-mcp.

  • Warn about duplicate live profiles and provide cleanup commands.

  • Explain permission modes and recommend the least-permissive mode for a task.

  • List workspaces, questionnaires, assignments, interviews, users, and export jobs.

  • Normalize MCP pagination metadata across Survey Solutions endpoints that mix zero-based and one-based offsets.

  • Start, inspect, download, and summarize export files.

  • Return race-aware export cancellation envelopes with refreshed job state.

  • Activate/deactivate web interview mode and create web-link assignments.

  • Read interview details/history/stats/PDFs.

  • Add interview comments and perform approval/rejection actions with explicit confirmations.

  • Run guarded workspace/user/settings admin actions.

  • Use GraphQL read queries and raw REST escape hatches when explicitly enabled.

  • Report runtime diagnostics including package version, build timestamp, config path, active profile, and commit SHA when available, with a non-null fallback for source archives.

  • Guide Codex or Claude Desktop through a named web-test workflow after manual questionnaire import: check/create test users, activate web mode, create a web assignment, and return the link.

Scope Notes

get_api_capabilities may report many REST operations from the active Headquarters Swagger/OpenAPI document. This is the standard server REST API description, not an OpenAI-specific spec, and it is useful for both Codex/OpenAI MCP clients and Claude Desktop. Version 0.2.7 keeps curated tools tied to endpoints confirmed in the tested Survey Solutions 26.07 public OpenAPI document, with raw discovery tools available for future documented endpoints.

get_tool_catalog includes requiredEndpoint, availability, verifiedOnCurrentServer, and unavailableReason fields for curated tools backed by a REST endpoint. Use it to distinguish a tool that is unsupported by the connected Headquarters build from a real missing assignment, questionnaire, or user.

Use curated tools first. Raw REST/GraphQL is deliberately gated and should stay disabled for ordinary AI-agent use. Raw API access is useful for advanced endpoint testing, but it does not provide the same guardrails, confirmations, permission explanations, or workflow guidance as curated tools.

Map and calendar wrappers were removed from the curated surface in v0.2.6 because no matching public REST/GraphQL guide or tested 26.07 OpenAPI endpoints were found. If a future Headquarters build documents those operations, use get_api_capabilities, openapi_operation, or guarded raw API testing before adding curated wrappers back.

Install

From a release zip or GitHub checkout:

npm install
npm run build
npm run smoke
npm link

On Windows, the easiest path is:

install-and-setup.bat

That installer checks Node/npm, installs dependencies, builds, runs smoke tests, links the commands, and optionally walks through live Survey Solutions profile setup.

Windows Helper Launchers

After running the installer once, these helper files provide a neat click-through way to change local runtime settings:

  • switch-profile.bat: lists profiles, sets the chosen profile as active/default, and tests it.

  • change-permission.bat: lists profiles, changes a profile permission level, and disables raw API flags when resetting to read_only.

  • uninstall-mcp.bat: unlinks the global commands, checks for currently running MCP node processes, and shows the Codex/Claude config cleanup steps. It preserves local profiles unless run with -RemoveProfiles.

Restart Codex after adding or changing the MCP config. Also restart Codex after changing the active profile or permission level if the MCP server was already loaded.

Codex MCP Setup

After installation, add this MCP server to Codex/OpenAI MCP configuration. In Codex (ChatGPT Desktop), go to Settings > Plugins > MCPs and enter:

{
  "mcpServers": {
    "survey-solutions": {
      "type": "stdio",
      "command": "survey-solutions-mcp",
      "args": []
    }
  }
}

If your client requires a direct Node path instead of the linked command:

{
  "mcpServers": {
    "survey-solutions": {
      "type": "stdio",
      "command": "node",
      "args": [
        "C:/path/to/survey-solutions-mcp/dist/index.js"
      ]
    }
  }
}

Do not put Survey Solutions URLs, usernames, passwords, or tokens in the MCP launch config. Store those through the local profile CLI.

Restart Codex after saving or changing the MCP config so it reloads the local server definition.

Claude Desktop MCP Setup

In Claude Desktop, go to Settings > Developer > Edit Config. This opens claude_desktop_config.json.

Add the Survey Solutions server under mcpServers using the direct Node path:

{
  "mcpServers": {
    "survey-solutions": {
      "command": "node",
      "args": [
        "C:\\path\\to\\survey-solutions-mcp\\dist\\index.js"
      ]
    }
  }
}

Replace the path with the folder where this package was extracted. If your config already has other keys such as preferences, keep them and only add the survey-solutions block inside the existing mcpServers object. Claude Desktop does not need the Codex/OpenAI "type": "stdio" field.

Restart Claude Desktop after saving or changing the config so it reloads the local server definition.

Cleanup / Uninstall

Old extracted copies are mostly harmless if Codex and Claude Desktop no longer reference them. They can become confusing if multiple MCP client config entries point at old package folders, because the client may launch stale server versions.

To clean up the global command link and get guided client-config cleanup steps, double-click:

uninstall-mcp.bat

The cleanup helper does not delete C:\Users\<you>\.suso-mcp\config.json by default, because that file may contain profiles you want to reuse with the next version. To remove local profile config as well, run:

powershell -ExecutionPolicy Bypass -File .\uninstall-mcp.ps1 -RemoveProfiles

Profile CLI

List profiles:

suso-mcp profile list

Test the built-in mock profile:

suso-mcp profile test mock

Add a live profile with basic auth:

suso-mcp profile add test-server `
  --server-url "https://YOUR-SERVER.mysurvey.solutions" `
  --workspace "primary" `
  --auth basic `
  --username "api_user" `
  --password "api_password" `
  --permission read_only

Add a live profile with bearer/token auth:

suso-mcp profile add test-server `
  --server-url "https://YOUR-SERVER.mysurvey.solutions" `
  --workspace "primary" `
  --auth token `
  --token "YOUR_TOKEN" `
  --permission read_only

Set the active/default profile:

suso-mcp profile set-default test-server
suso-mcp profile test test-server

Remove a duplicate local profile after choosing the canonical one:

suso-mcp profile delete old-profile-name --yes

First Codex Prompt

Use the Survey Solutions MCP. Call survey_solutions_orientation, get_tool_catalog, list_profiles, get_mcp_diagnostics, check_connection, and list_questionnaires.

The mock profile should work immediately. Switch to a live profile only after suso-mcp profile test <name> succeeds.

Permissions

Profiles start as read_only. Raise permissions only for the exact action you intend to run:

suso-mcp profile permission test-server fieldwork_write
suso-mcp profile permission test-server admin_write
suso-mcp profile permission test-server read_only

Raw API access is separately controlled:

suso-mcp profile raw-api test-server enable-get
suso-mcp profile raw-api test-server enable-writes
suso-mcp profile raw-api test-server enable-delete
suso-mcp profile raw-api test-server enable-graphql-mutations
suso-mcp profile raw-api test-server disable

Development

npm install
npm run check
npm run build
npm run audit:openapi
npm run smoke

Release packaging is a plain source package with dist, docs, installer scripts, and user-pack included. The generated zip should exclude node_modules, local .suso-* folders, temporary files, and user config/secrets.

License

MIT. See LICENSE.

Documentation

  • user-pack/README.md: end-user Codex setup and tool list.

  • user-pack/LOCAL_COMPUTER_SETUP.md: step-by-step Windows setup.

  • user-pack/TEST_CHECKLIST.md: mock/live/write testing checklist.

  • docs/WRITE_TOOL_GUARDRAILS.md: permission and write-action safety notes.

  • docs/MVP_BACKLOG.md: remaining product backlog.

  • docs/GITHUB_UPLOAD_CHECKLIST.md: first public GitHub upload checklist.

  • SECURITY.md: credential and raw-API safety notes.

Available Tools

123 tools
activate_web_interviewA

Activate questionnaire-level web interviews through the same HQ endpoint used by Web Interview Settings. Requires fieldwork_write or admin_write permission.

Inputs: questionnaire_identity (required), profile.

apply_hq_auto_approvalD

apply_hq_auto_approval: Build or run a guarded QC/support workflow.

Inputs: plan (required), confirm_plan_id (required), rules, profile, +4 more.

apply_qc_feedback_batchA

Apply a prepared feedback batch after explicit approval. Requires fieldwork_write/admin_write and exact batch confirmation.

Inputs: batch (required), confirm_batch_id (required), profile, max_actions.

approve_interviewA

Approve an interview as supervisor. Requires fieldwork_write or admin_write permission and exact interview ID confirmation. Live mutation; read current status first and expect the returned state/audit fields to vary by Headquarters build.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile.

archive_assignmentC

Archive an assignment. Requires fieldwork_write or admin_write permission.

Inputs: assignment_id (required), confirm_assignment_id (required), profile.

archive_userB

Archive a supervisor or interviewer user. Requires admin_write permission.

Inputs: user_id (required), confirm_user_id (required), profile.

assign_assignmentA

Reassign an assignment to another responsible user. Requires fieldwork_write/admin_write and exact assignment confirmation.

Inputs: responsible (required), assignment_id (required), confirm_assignment_id (required), profile.

assign_interviewB

Reassign an interview to another responsible user. Requires fieldwork_write/admin_write and exact interview confirmation.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile, +1 more.

assign_interview_supervisorB

Reassign an interview at supervisor level where supported by the active Headquarters build. Requires fieldwork_write/admin_write and exact interview confirmation.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile, +1 more.

cancel_export_jobB

Cancel an export job. Requires fieldwork_write or admin_write permission because it changes server job state.

Inputs: job_id (required), confirm_job_id (required), profile.

change_assignment_quantityB

Change assignment quantity. Requires fieldwork_write/admin_write and exact assignment confirmation.

Inputs: quantity (required), assignment_id (required), confirm_assignment_id (required), profile.

change_assignment_statusC

Change assignment status. Requires fieldwork_write/admin_write and exact assignment confirmation.

Inputs: status (required), assignment_id (required), confirm_assignment_id (required), comment, +1 more.

change_assignment_target_areaB

Change assignment target area. Requires fieldwork_write/admin_write and exact assignment confirmation.

Inputs: target_area (required), assignment_id (required), confirm_assignment_id (required), profile.

check_connectionA

Verify that the selected profile can reach and authenticate with Survey Solutions Headquarters. For the mock profile, returns a mock success result.

Inputs: profile.

clear_global_noticeA

Remove the Survey Solutions Headquarters global notice. Requires admin_write permission.

Inputs: profile.

combine_versioned_exportsA

Prepare a version-aware combine plan for already downloaded exports, treating later-added variables as structurally missing in earlier versions.

Inputs: export_paths (required), output_dir.

comment_on_interview_questionA

Post a question-level comment using the OpenAPI questionId format. For roster questions, include roster coordinates in question_id as documented by Survey Solutions. Requires fieldwork_write/admin_write.

Inputs: comment (required), question_id (required), interview_id (required), profile.

comment_on_interview_variableA

Post a question-level comment using a variable name and optional roster vector. Requires fieldwork_write or admin_write permission. This is a live mutation with no automatic idempotency key; read the interview first and use exact interview/variable/roster targeting.

Inputs: comment (required), interview_id (required), variable_name (required), profile, +1 more.

compare_questionnaire_versionsC

Compare known questionnaire version metadata from Headquarters and summarize version differences visible through the API.

Inputs: questionnaire_id_or_title (required), profile.

compare_questionnaire_version_schemasC

Compare schemas for downloaded version exports or available questionnaire metadata.

Inputs: profile, export_paths, questionnaire_id_or_title.

create_assignmentB

Create a Survey Solutions assignment. Can create open web interview links by setting web_mode true and quantity -1. Requires fieldwork_write or admin_write permission.

Inputs: responsible (required), questionnaire_identity (required), email, profile, +8 more.

create_userA

Create a supervisor or interviewer user. Requires admin_write permission. Passwords are accepted by the API but should be handled as temporary setup secrets.

Inputs: role (required), password (required), username (required), email, +4 more.

create_workspaceB

Create a new Survey Solutions workspace. Requires admin_write permission.

Inputs: display_name (required), workspace_name (required), profile.

deactivate_web_interviewA

Deactivate questionnaire-level web interviews. Requires fieldwork_write or admin_write permission and exact questionnaire identity confirmation.

Inputs: questionnaire_identity (required), confirm_questionnaire_identity (required), profile.

delete_interviewA

Delete an interview where supported by the active Headquarters build. Requires fieldwork_write/admin_write and exact interview confirmation. Use only on throwaway/test cases.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile.

delete_workspaceB

Delete a Survey Solutions workspace. Requires admin_write permission and should only be used for empty/test workspaces after checking workspace status.

Inputs: workspace_name (required), confirm_workspace_name (required), profile.

describe_permission_modesB

Return human-readable explanations of MCP permission modes, including what each allows/blocks and risk warnings.

Inputs: include_risks, include_examples.

disable_workspaceC

Disable a Survey Solutions workspace. Requires admin_write permission.

Inputs: workspace_name (required), profile.

download_export_fileA

Download a completed Survey Solutions export job to a local file path on the MCP host.

Inputs: job_id (required), profile, output_path.

download_interview_pdfB

Download the PDF transcript for one interview to a local file path on the MCP host.

Inputs: interview_id (required), profile, output_path.

downsize_assignmentC

Set assignment size to collected interviews where supported. Requires fieldwork_write/admin_write and exact assignment confirmation.

Inputs: assignment_id (required), confirm_assignment_id (required), profile.

enable_workspaceB

Enable a disabled Survey Solutions workspace. Requires admin_write permission.

Inputs: workspace_name (required), profile.

explain_blocked_toolA

Explain whether a tool is blocked by the current permission mode and suggest a CLI command or safer alternatives. For rest_request, distinguishes GET, write, and DELETE raw permissions.

Inputs: tool_name (required), method, profile.

export_all_formatsC

Start exports for one questionnaire in multiple formats.

Inputs: export_types (required), questionnaire_identity (required), profile, output_dir, +1 more.

export_all_questionnaire_versionsC

Start exports for all imported versions of a questionnaire title or ID.

Inputs: questionnaire_id_or_title (required), profile, output_dir, export_type, +1 more.

export_and_combine_all_versions_all_formatsB

Start exports for all questionnaire versions in one or more formats and return version-aware combine guidance.

Inputs: questionnaire_id_or_title (required), profile, output_dir, export_type, +2 more.

export_and_combine_questionnaire_versionsC

High-level workflow that starts exports for all versions and returns the combine plan and pending download steps.

Inputs: questionnaire_id_or_title (required), profile, output_dir, export_type, +1 more.

find_stale_interviewsB

Find interviews with no movement for at least min_days using available updated/history timestamps.

Inputs: status, now_utc, profile, min_days.

generate_fieldwork_briefB

Generate a compact fieldwork brief from current read-only fieldwork status.

Inputs: profile.

generate_permission_change_commandA

Generate the bash/PowerShell command a user can run to change a profile's permission mode. The MCP does not silently grant itself more permission.

Inputs: profile (required), target_permission_mode (required).

generate_tablet_setup_instructionsC

Generate practical tablet setup instructions from workspace/server/user details.

Inputs: workspace_name (required), profile, interviewer_usernames.

get_active_profileA

Return the currently active Survey Solutions profile and redacted connection details.

Inputs: no named parameters.

get_api_capabilitiesB

Inspect REST/GraphQL capabilities for the Survey Solutions server. Uses /swagger/v1/swagger.json when available.

Inputs: profile, refresh.

get_assignmentC

Get details for one Survey Solutions assignment, including web mode state where available.

Inputs: assignment_id (required), profile.

get_assignment_audio_recordingA

Read audio-recording setting for one assignment.

Inputs: assignment_id (required), profile.

get_assignment_historyC

Inspect assignment history/changes where the active Headquarters build exposes assignment history.

Inputs: assignment_id (required), profile.

get_assignment_quantity_settingsC

Read quantity/limit behavior for one assignment.

Inputs: assignment_id (required), profile.

get_export_jobC

Get status/details for a Survey Solutions export job.

Inputs: job_id (required), profile.

get_global_noticeC

Read the Survey Solutions Headquarters global notice setting.

Inputs: profile.

get_interview_detailsA

Get available answer/detail values for one interview by interview ID. Use get_interview_history and get_interview_stats for audit trail, status changes, comments, and operational counts.

Inputs: interview_id (required), profile.

get_interviewerC

Get interviewer details by exact user ID.

Inputs: user_id (required), profile.

get_interviewer_actions_logC

Read interviewer actions/audit log over an optional UTC date window where supported.

Inputs: interviewer_id (required), to_utc, profile, from_utc.

get_interview_historyA

Get audit/history records for one interview, including status changes, answers, comments, and assignment actions returned by the active Headquarters build.

Inputs: interview_id (required), profile.

get_interview_statsB

Get interview-level statistics such as answered/not answered, valid/invalid, comments count, duration, key, status, and web interview URL.

Inputs: interview_id (required), profile.

get_mcp_diagnosticsA

Return MCP package/runtime diagnostics including package version, process start time, config path, config load time, Node.js version, and active profile. Does not expose secrets.

Inputs: no named parameters.

get_profile_permissionsB

Show effective permission flags for the active or requested profile.

Inputs: profile.

get_questionnaireC

Get metadata for one imported questionnaire/version by GUID$Version identity.

Inputs: questionnaire_identity (required), profile.

get_questionnaire_audio_recordingA

Read questionnaire audio-recording settings where supported by the active Headquarters build.

Inputs: questionnaire_identity (required), profile.

get_questionnaire_criticality_levelA

Read questionnaire criticality settings where supported by the active Headquarters build.

Inputs: questionnaire_identity (required), profile.

get_questionnaire_documentC

Retrieve questionnaire document/design metadata where the active Headquarters build exposes it.

Inputs: questionnaire_identity (required), profile.

get_questionnaire_web_interview_statusA

Check whether questionnaire-level web interview mode is active. If inactive, web assignment links may show as expired.

Inputs: questionnaire_identity (required), profile.

get_server_infoB

Fetch basic Survey Solutions server information and capability summary for the active profile. The surveySolutionsHeader value, when present, is the server's x-survey-solutions response header and usually identifies the Headquarters application/build version.

Inputs: profile.

get_statistics_reportC

Read a built-in Survey Solutions statistics report using query parameters.

Inputs: query, profile.

get_supervisorC

Get supervisor details by exact user ID.

Inputs: user_id (required), profile.

get_tool_catalogB

Return an agent-facing catalog of all MCP tools with permission requirement, side effect class, confirmation requirement, mock support, required REST endpoint, and current-server availability when OpenAPI is available.

Inputs: profile, category, permission, side_effect, +3 more.

get_userC

Get details for a supervisor or interviewer user by ID.

Inputs: user_id (required), profile.

get_workspace_statusA

Check whether a workspace can be deleted and inspect blocking counts before deletion.

Inputs: workspace_name (required), profile.

graphql_queryB

Run a Survey Solutions GraphQL query. Read-only queries are allowed; mutations require raw_api permission and allowRawGraphqlMutations.

Inputs: query (required), profile, variables.

hq_approve_interviewA

Approve an interview as Headquarters. Requires fieldwork_write or admin_write permission and exact interview ID confirmation. Live mutation; read current status first and expect the returned state/audit fields to vary by Headquarters build.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile.

hq_reject_interviewA

Reject an interview as Headquarters. Requires fieldwork_write or admin_write permission and exact interview ID confirmation. Live mutation; include a clear comment and read current status first.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile, +1 more.

hq_unapprove_interviewA

Move an HQ-approved interview out of HQ approved state. Requires fieldwork_write or admin_write permission and exact interview ID confirmation. Live mutation; read current status first and use only on a known target case.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile.

inspect_export_fileA

Inspect a downloaded Survey Solutions export zip on the MCP host. Lists files, classifies data/comment/action/DDI/preview files, and samples lightweight text/tabular metadata without parsing binary Stata/SPSS data.

Inputs: export_path (required), extract, output_dir, sample_rows, +3 more.

investigate_interviewer_anomalyC

Gather read-only evidence around an interviewer anomaly using interviews, assignments, and available action logs.

Inputs: interviewer_id (required), issue_description (required), to_utc, profile, +1 more.

list_assignmentsC

List Survey Solutions assignments. Assignments define responsible users, identifying data, quantities, and rules used to create interviews.

Inputs: limit, query, offset, profile.

list_export_jobsA

List Survey Solutions export jobs for the active workspace. Exports are asynchronous: start a job, poll status, then download the file.

Inputs: profile.

list_interviewsB

List Survey Solutions interviews using the active workspace interview list endpoint. Interviews are collected or in-progress cases with ID/key/status/responsible user and history; available filters depend on the Headquarters build.

Inputs: limit, query, offset, status, +2 more.

list_interview_statusesA

Return canonical Survey Solutions interview status names used by export/status filters and fieldwork workflows.

Inputs: no named parameters.

list_profilesA

List configured Survey Solutions profiles. Secrets are never returned.

Inputs: no named parameters.

list_questionnairesA

List imported questionnaires and versions. Questionnaire versioning matters because fieldwork changes create new versions with different schemas.

Inputs: profile.

list_statistics_questionnairesC

List questionnaire options available to Survey Solutions statistics reporting.

Inputs: profile.

list_statistics_questionsA

List questions available to Survey Solutions statistics reporting for a questionnaire. Uses the 26.07 OpenAPI statistics questions endpoint with questionnaireId/version query parameters.

Inputs: questionnaire_identity (required), profile.

list_supervisor_interviewersC

List interviewers assigned to a supervisor.

Inputs: supervisor_id (required), limit, query, offset, +1 more.

list_supervisorsB

List active supervisors in the workspace.

Inputs: limit, query, offset, profile.

list_workspacesA

List Survey Solutions workspaces available to the configured API user. Workspaces are logical areas inside Headquarters, often one per project.

Inputs: profile.

openapi_operationA

Execute a REST operation by method/path after checking API capabilities. Curated escape hatch with the same raw API permission rules as rest_request for writes.

Inputs: path (required), method (required), body, query, +2 more.

plan_hq_auto_approvalC

plan_hq_auto_approval: Build or run a guarded QC/support workflow.

Inputs: plan, rules, profile, variables, +4 more.

prepare_designer_questionnaire_importA

Prepare human-in-the-loop instructions for importing a questionnaire from Designer into Headquarters when no public import API is available.

Inputs: workspace_name (required), profile, import_comment, questionnaire_name, +1 more.

prepare_latest_export_for_analysisD

High-level workflow: start an export for one questionnaire and return export job/download next steps.

Inputs: questionnaire_identity (required), profile, export_type, output_path, +1 more.

prepare_qc_feedback_batchA

Convert a structured issue list into a dry-run feedback batch. Does not write to Survey Solutions.

Inputs: issues (required), profile, default_action.

qc_comment_theme_summaryC

qc_comment_theme_summary: Summarize comment themes without exposing unnecessary free text.

Inputs: plan, rules, profile, variables, +4 more.

qc_duplicate_recordsB

qc_duplicate_records: Flag duplicate interview IDs or duplicate combinations of user-supplied identifying variables.

Inputs: plan, rules, profile, variables, +4 more.

qc_generate_check_planC

qc_generate_check_plan: Build or run a guarded QC/support workflow.

Inputs: plan, rules, profile, variables, +4 more.

qc_gps_accuracy_and_areaC

qc_gps_accuracy_and_area: Flag low GPS accuracy or coordinates outside expected areas.

Inputs: plan, rules, profile, variables, +4 more.

qc_gps_duplicates_and_clustersB

qc_gps_duplicates_and_clusters: Flag repeated or tightly clustered GPS points across interviews.

Inputs: plan, rules, profile, variables, +4 more.

qc_heaping_round_numbersC

qc_heaping_round_numbers: Flag numeric heaping such as excessive 0/5/10 endings.

Inputs: plan, rules, profile, variables, +4 more.

qc_intervention_followupB

qc_intervention_followup: Compare post-feedback outcomes for targeted interviewers, variables, or cases.

Inputs: plan, rules, profile, variables, +4 more.

qc_interview_durationB

qc_interview_duration: Flag unusually short or long interviews using duration fields from Tabular data or duration events from Paradata.

Inputs: plan, rules, profile, variables, +4 more.

qc_logical_consistencyB

qc_logical_consistency: Apply user-supplied logical rules across variables.

Inputs: plan, rules, profile, variables, +4 more.

qc_nonresponse_by_enumeratorC

qc_nonresponse_by_enumerator: Compare missing/nonresponse rates across interviewers.

Inputs: plan, rules, profile, variables, +4 more.

qc_response_distribution_shiftC

qc_response_distribution_shift: Compare response distributions across interviewers, dates, areas, or versions.

Inputs: plan, rules, profile, variables, +4 more.

qc_roster_consistencyB

qc_roster_consistency: Check roster counts and nested roster relationships for internal consistency.

Inputs: plan, rules, profile, variables, +4 more.

qc_straightliningC

qc_straightlining: Flag repeated identical answers across selected ordinal/categorical variables.

Inputs: plan, rules, profile, variables, +4 more.

qc_submission_timing_burstsC

qc_submission_timing_bursts: Flag suspicious bursts of submissions or very short gaps between submissions.

Inputs: plan, rules, profile, variables, +4 more.

qc_targeted_missingnessC

qc_targeted_missingness: Flag missingness in specific high-priority variables or sections.

Inputs: plan, rules, profile, variables, +4 more.

recommend_permission_modeB

Recommend the least-permissive permission mode for a described task, e.g. export data, reject interviews, create users, or call raw API endpoints.

Inputs: task_description (required), profile.

reject_interviewA

Reject an interview as supervisor. Requires fieldwork_write or admin_write permission and exact interview ID confirmation. Live mutation; include a clear comment and read current status first.

Inputs: interview_id (required), confirm_interview_id (required), comment, profile, +1 more.

rest_requestB

Advanced raw REST escape hatch. Read-only GET is allowed by default when raw API is enabled. Writes/deletes require explicit raw permission flags.

Inputs: path (required), method (required), body, query, +1 more.

set_active_profileA

Switch the active profile for this MCP server's local config. This writes local configuration but does not change credentials, permissions, or Survey Solutions server data.

Inputs: profile (required).

set_assignment_audio_recordingA

Set assignment audio-recording flag. Requires fieldwork_write/admin_write and exact assignment confirmation.

Inputs: enabled (required), assignment_id (required), confirm_assignment_id (required), profile.

set_global_noticeB

Set the Survey Solutions Headquarters global notice. Requires admin_write permission.

Inputs: message (required), profile.

set_questionnaire_audio_recordingA

Set questionnaire audio-recording settings. Requires admin_write permission and exact questionnaire identity confirmation.

Inputs: enabled (required), questionnaire_identity (required), confirm_questionnaire_identity (required), profile.

set_questionnaire_criticality_levelB

Set questionnaire criticality settings. Requires admin_write permission and exact questionnaire identity confirmation.

Inputs: criticality_level (required), questionnaire_identity (required), confirm_questionnaire_identity (required), profile.

setup_questionnaire_fieldwork_projectB

Plan or perform guarded setup for a fieldwork project: workspace, manual Designer import, users, and first web-test assignment.

Inputs: workspace_name (required), users, dry_run, profile, +2 more.

start_exportB

Start a Survey Solutions export job for a questionnaire identity such as GUID$Version. Export creation is allowed in read_only mode because it does not alter fieldwork data.

Inputs: questionnaire_identity (required), to_utc, profile, from_utc, +4 more.

summarize_export_qcA

Create a first structural QC summary from a downloaded Survey Solutions export zip: expected file roles, DDI sample variables, readable tabular row/column counts, fieldwork signals, support files, warnings, and next steps. Does not yet parse binary Stata/SPSS values.

Inputs: export_path (required), sample_rows, max_text_bytes.

summarize_fieldwork_statusB

High-level read-only fieldwork summary over questionnaires, assignments, interviews, and users.

Inputs: profile.

summarize_hq_review_queueC

summarize_hq_review_queue: Build or run a guarded QC/support workflow.

Inputs: plan, rules, profile, variables, +4 more.

summarize_interviewer_activityC

Summarize interview counts/statuses for one or more interviewers from available interview list data.

Inputs: to_utc, profile, from_utc, interviewer_ids.

survey_solutions_orientationA

Explain Survey Solutions concepts and safe MCP usage: workspaces, questionnaire versions, assignments, interviews, statuses, comments, roster vectors, exports, and permissions.

Inputs: detail_level, include_examples.

unarchive_assignmentB

Unarchive an assignment. Requires fieldwork_write or admin_write permission.

Inputs: assignment_id (required), profile.

unarchive_userA

Unarchive a supervisor or interviewer user. Requires admin_write permission.

Inputs: user_id (required), profile.

update_workspaceB

Update a workspace display name. Requires admin_write permission.

Inputs: display_name (required), workspace_name (required), profile.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.6/5.0

    Scored across 123 tools

    Disambiguation1/5

    Several tools are nearly indistinguishable: multiple export/combine workflow wrappers overlap heavily, and at least four tools (qc_generate_check_plan, plan_hq_auto_approval, apply_hq_auto_approval, summarize_hq_review_queue) share the identical description 'Build or run a guarded QC/support workflow.' An agent selecting between these will frequently pick the wrong one.

    Naming Consistency4/5

    The vast majority of tool names follow a consistent snake_case verb-first or domain-prefixed pattern (list_, create_, get_, set_, qc_, etc.). Minor deviations exist, such as noun-style names like survey_solutions_orientation, openapi_operation, and rest_request, but the overall pattern is readable and predictable.

    Tool Count1/5

    At 123 tools, this server vastly exceeds any reasonable tool surface for an agent to navigate reliably. Many tools are high-level workflow wrappers that overlap with more basic operations, making the count feel padded rather than curated.

    Completeness4/5

    The tool set covers an impressively broad lifecycle: workspaces, users, questionnaires, assignments, interviews, exports, QC checks, approvals, and raw API escape hatches. Minor gaps exist, such as no direct user update or questionnaire delete/import endpoint, but those can be worked around via instructions or raw API tools.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      A lightweight, local-first MCP server for executing HTTP requests and managing API collections and environments without cloud dependencies. It enables testing APIs, handling authentication, and importing OpenAPI specifications directly within MCP-compatible workflows.
      42
      103 npm
      13
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Universal MCP server that wraps any CLI tool, enabling AI assistants to run commands via natural language.
      1
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      MCP server for ChatLab that automates the chatlab-cli in headless HTTP mode, enabling session management, message retrieval, SQL queries, and API calls via natural language.
      12
      17 npm
      AGPL 3.0