Integration

SurveyCTO integration

SurveyCTO is a mobile data collection platform for surveys and field research. Through its Server API v2 you can list forms, page through or search a form's submissions on their metadata and download the media attached to a submission; create, update, purge and delete server datasets and read, add, update, upsert, search, delete or bulk-upload (CSV, append mode) their records; queue AI transcription and translation work and follow it; and list the server's groups, roles, teams and users. Managing users and workflow profiles, encrypted-form exports (they need the form's private key file) and the wide-format and CSV exports are not exposed. Authentication is HTTP Basic with a SurveyCTO username and password, against your own server name (the servername in https://servername.surveycto.com). The server API does not serve parallel requests: a request that arrives while another is in flight is refused with 409.

Ask it in chat

Say what should happen.
The workflow builds itself.

When this happens, do that in SurveyCTO.Built from the 27 SurveyCTO tools below, on the connection you add once.

What you can do with SurveyCTO

Each of these is one operation on one endpoint, available both as a workflow step and as a tool an AI agent can call on its own. Nothing bundles several operations into one action, so what a run did stays readable afterwards.

Most endpoints run on the free plan. A few, mainly the ones that publish on your behalf, need a paid plan.

Record, 8 operations

  • add_dataset_recordAdd dataset recordPOSTAdds a record to a dataset. The record is an object whose keys are the dataset's field names.
  • delete_dataset_recordDelete dataset recordDELETEDeletes one record of a dataset by its record id.
  • get_dataset_recordGet dataset recordGETReturns one record of a dataset by its record id, as an object keyed by the dataset's field names.
  • list_dataset_recordsList dataset recordsGETLists the records of a dataset one cursor page at a time (up to 1000), optionally only those modified after or before a timestamp, sorted by a column. Each record is an object keyed by the dataset's field names.
  • search_dataset_recordsSearch dataset recordsPOSTSearches the records of a dataset: filter on dataset columns (eq, contains) and on modifiedAt (gt, gte, lt, lte), choose the fields returned, one cursor page at a time.
  • update_dataset_recordUpdate dataset recordPUTUpdates an existing record of a dataset; fails if no record has this id. Use upsert_dataset_record to create it when missing.
  • upload_dataset_recordsUpload dataset recordsPOSTUploads a CSV file of records into a dataset. This tool always appends the rows to the existing records: the merge and clear modes need a metadata part it does not send.
  • upsert_dataset_recordUpsert dataset recordPATCHUpdates a record of a dataset, or creates it when no record has this id.

Dataset, 6 operations

  • create_datasetCreate datasetPOSTCreates a server dataset. discriminator sets its type: CASES (case management), ENUMERATORS or DATA. Optional: id, title, uniqueRecordField, allowOfflineUpdates, and the cases management, enumerator id format and group location options.
  • delete_datasetDelete datasetDELETEPermanently deletes a dataset and all its records from the server.
  • get_datasetGet datasetGETReturns one dataset's metadata: title, type (discriminator), field names, number of records, owning group, status (READY or DIRTY), version and dates.
  • list_datasetsList datasetsGETLists the server datasets the user can access, one cursor page at a time (up to 1000 per page), optionally only those of a team, sorted by orderBy. Pass nextCursor back as cursor to continue.
  • purge_datasetPurge datasetPOSTDeletes every record of a dataset but keeps the dataset, its field definitions and metadata.
  • update_datasetUpdate datasetPUTUpdates a dataset's metadata and configuration. The dataset type (discriminator) cannot be changed after creation, but must be sent.

Ai batch, 3 operations

  • cancel_ai_batchCancel ai batchDELETEStops adding AI work to the queue for this run. Already queued work may still process and use credits. Continue checking status until done is true if you need the final outcome.
  • create_ai_batchCreate ai batchPOSTQueues AI transcription and translation work (audio transcription, text and transcript translation) for one or more forms and returns a runId; poll get_ai_batch until done is true. Needs Can use AI features on every form named; uses AI credits.
  • get_ai_batchGet ai batchGETReturns preparation and execution progress. Preparation selects submissions and queues AI work; execution processes that work.

Submission, 2 operations

  • list_form_submissionsList form submissionsGETReturns an unencrypted form's submissions one page at a time, by completionDate ascending unless orderBy and orderByDirection say otherwise. Pass the previous page's cursor to continue. To filter on metadata or pick fields: search_form_submissions.
  • search_form_submissionsSearch form submissionsPOSTSearches an unencrypted form's submissions, one cursor page at a time: filter on metadata (submissionId, reviewStatus, formDefinitionVersion, submissionDate, completionDate) and pick fields to return. Answers with data, total, limit and nextCursor.

User, 2 operations

  • get_userGet userGETReturns one user of the server by username.
  • list_usersList usersGETLists the users of the server, one cursor page at a time, optionally only those holding one role.

Form, 1 operation

  • list_form_idsList form idsGETReturns the ids of the forms the user can access, as a plain JSON array of strings, optionally only those of one team.

Group, 1 operation

  • list_groupsList groupsGETLists the groups the user has access to, one cursor page at a time, optionally only the children of one parent group. Groups of paused teams are left out until the team is resumed.

Role, 1 operation

  • list_rolesList rolesGETLists the roles defined on the server, one cursor page at a time.

Role permission, 1 operation

  • get_role_permissionsGet role permissionsGETReturns the permission structure of one role, optionally scoped to a group.

Submission attachment, 1 operation

  • download_submission_attachmentDownload submission attachmentGETDownloads one file attached to a submission of an unencrypted form (a photo, audio recording, signature or other media captured with the form) as raw bytes. A missing attachment is answered with 400, not 404.

Team, 1 operation

  • list_team_idsList team idsGETReturns the ids of the server's teams as a plain JSON array of strings, optionally only the paused or only the active ones.

Use SurveyCTO from Claude Code, Cursor or Codex

Connect SurveyCTO in LiveContext, create an API key in Settings, then add the LiveContext MCP server to your client. Its SurveyCTO operations become tools the client can call, next to every other integration you connected.

Claude Code
claude mcp add --transport http livecontext https://livecontext.ai/mcp --header "X-API-Key: YOUR_API_KEY"
Codex (~/.codex/config.toml)
[mcp_servers.livecontext]
url = "https://livecontext.ai/mcp"

[mcp_servers.livecontext.http_headers]
"X-API-Key" = "YOUR_API_KEY"
Cursor, Claude Desktop and other JSON configs
{
  "mcpServers": {
    "livecontext": {
      "type": "http",
      "url": "https://livecontext.ai/mcp",
      "headers": {
        "X-API-Key": "YOUR_API_KEY"
      }
    }
  }
}

Set up the MCP server step by step

How to connect SurveyCTO

  1. Create your workspace

    Sign up free. Nothing to install.

  2. Connect SurveyCTO once

    Add your SurveyCTO connection in Settings. Every tool from this integration reuses it, and secrets are encrypted at rest and visible only to you.

  3. Describe the job in chat

    The workflow builds itself in front of you and picks the endpoints it needs. Drag the steps yourself on the canvas whenever you would rather be explicit.

SurveyCTO integration FAQ

What can you do with the SurveyCTO integration?

LiveContext exposes 27 operations on SurveyCTO, covering record, dataset, ai batch and submission.

Popular integrations

Browse the whole catalog