Dayalogs MCP tools reference
All currently exposed MCP tools, grouped by area. Parameters are generated from the same input schema used by the MCP server, so this page should stay close to the real contract.
For survey creation, start with survey_authoring_help. Call it empty for the generated index, then fetch focused paths such as quick-start, questions/scale or logic/visible-if. The older compact authoring pack remains an API endpoint, but it is no longer advertised as an MCP tool.
Start
4 toolsget_started
Explain what Dayalogs Surveys is and the recommended MCP workflow for creating and previewing schema-first surveys.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_capabilities
Return Dayalogs API capabilities, granted scopes, reserved contexts and endpoint map.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_mcp_changes
Return Dayalogs MCP release notes and tool/API changes by version.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_mcp_backlog
Return MCP-facing planned backlog items and target versions.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}Authoring
7 toolssurvey_authoring_help
Return focused Dayalogs survey authoring help. Call with no arguments for the generated index, with path for a folder or file, or with keywords to find relevant help.
View input JSON schema
{
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Optional help path. Empty input returns the generated index. Examples: quick-start, questions/scale, questions/scale/help.md."
},
"keyword": {
"type": "string",
"description": "Optional single keyword search. Examples: smiley, csat, contact, endings."
},
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional keyword list. When present, matching files must contain all terms."
}
},
"required": []
}get_survey_schema
Return the live Dayalogs survey JSON schema contract. This is large; for drafting surveys, call survey_authoring_help first and use the full schema only for exact field-level constraints.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_survey_interface_texts
Return supported respondent UI locales and the public survey.renderer.* keys that can be overridden with interface_literals.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}validate_survey
Validate a Dayalogs survey definition without importing it.
View input JSON schema
{
"type": "object",
"properties": {
"survey": {
"type": "object",
"description": "Dayalogs survey definition object."
},
"definition": {
"type": "object",
"description": "Alias for survey."
},
"survey_json": {
"type": "string",
"description": "Dayalogs survey definition encoded as a JSON string."
}
},
"required": []
}get_theme_schema
Return the live Dayalogs survey theme/style JSON schema contract.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_theme_authoring_pack
Return theme/style authoring guidance, schema and examples as structured JSON.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}validate_theme
Validate a Dayalogs survey theme/style config without persisting it.
View input JSON schema
{
"type": "object",
"properties": {
"config": {
"type": "object",
"description": "Dayalogs survey theme/style config object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Dayalogs survey theme/style config encoded as a JSON string."
}
},
"required": []
}Survey read
9 toolslist_surveys
List current surveys in the authenticated account.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}get_survey
Return one current survey definition by slug.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_definition
Return the canonical JSON definition for one current survey, with validation/import contract endpoints.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}list_survey_versions
List all persisted versions for a survey slug.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_version
Return a specific persisted survey version and its definition.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"description": "Survey version number.",
"minimum": 1
}
},
"required": [
"slug",
"version"
]
}get_survey_stats
Return response, version and link stats for a survey.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_quality
Return quality data for all survey versions or optionally for one concrete version.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"description": "Optional concrete survey version. Omit to aggregate all versions.",
"minimum": 1
}
},
"required": [
"slug"
]
}get_survey_cost_estimate
Return response unit price and maximum known cost estimate for a survey. If no hard cap exists, returns unbounded=true plus scenario costs.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_flow
Return a rendered flow summary for one current survey by slug.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}Survey edit
6 toolsimport_survey
Validate and import a Dayalogs survey definition with explicit intent. Use mode=create only for a new logical survey. Use mode=update only after reading the existing survey, and pass its stable survey_id plus current version_id as expected_version_id. Omitting intent returns guidance without mutating data. Importing edits the definition only; use get_preview_url during authoring and do not start collection unless the user explicitly asks.
create, updateView input JSON schema
{
"type": "object",
"properties": {
"survey": {
"type": "object",
"description": "Dayalogs survey definition object."
},
"definition": {
"type": "object",
"description": "Alias for survey."
},
"survey_json": {
"type": "string",
"description": "Dayalogs survey definition encoded as a JSON string."
},
"mode": {
"type": "string",
"enum": [
"create",
"update"
],
"description": "Explicit import intent. Use create for a new logical survey or update for a new version of an existing survey. Omit only to request non-mutating intent guidance."
},
"survey_id": {
"type": "integer",
"minimum": 1,
"description": "Stable logical survey id. Required when mode=update; obtain it from get_survey or list_surveys."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed before editing. Required when mode=update and used as an optimistic concurrency guard."
},
"validate": {
"type": "boolean",
"description": "Whether to validate before importing. Defaults to true."
}
},
"required": []
}update_survey_settings
Update safe top-level survey settings and create a validated new version. expected_version_id is mandatory. On version_conflict, explain the intervening actor and changes to the user before reconciling; never retry by only replacing the expected id.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"title": {
"type": "string",
"description": "Optional new internal/source title. Use literals if the source-locale survey.title literal should differ."
},
"source_locale": {
"type": "string",
"description": "Optional two-letter source locale."
},
"supported_locales": {
"type": "array",
"description": "Optional full supported locale list. Must include source_locale after validation.",
"items": {
"type": "string"
}
},
"interface_locales": {
"type": "object",
"description": "Optional mapping from content locale to respondent UI locale, for example {\"ru\":\"en\"}. Values: en, fr, de, nl, it, es, ca, pt, eu, gl.",
"additionalProperties": {
"type": "string"
}
},
"interface_literals": {
"type": [
"object",
"null"
],
"description": "Optional per-survey overrides for public respondent UI text, keyed by content locale and public survey.renderer.* translation key.",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
},
"settings": {
"type": [
"object",
"null"
],
"description": "Optional respondent runtime settings. Use {\"navigation\":{\"allow_back\":false}} to disable respondent back navigation, or {\"quality\":{\"enabled_challenges\":{\"honeypot\":true}}} to control quality scoring inputs.",
"additionalProperties": false,
"properties": {
"navigation": {
"type": "object",
"additionalProperties": false,
"properties": {
"allow_back": {
"type": "boolean",
"description": "Whether respondents can navigate back to previous pages. Defaults to true."
}
}
},
"quality": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled_challenges": {
"type": "object",
"description": "Optional per-survey quality challenge toggles. Disable individual checks without removing the quality layer entirely.",
"additionalProperties": false,
"properties": {
"time": {
"type": "boolean"
},
"paste_open_answers": {
"type": "boolean"
},
"focus_away": {
"type": "boolean"
},
"honeypot": {
"type": "boolean"
},
"client_signal": {
"type": "boolean"
},
"answer_patterns": {
"type": "boolean"
},
"repeated_ip": {
"type": "boolean"
},
"repeated_environment": {
"type": "boolean"
}
}
}
}
}
}
},
"intro": {
"type": "object",
"description": "Optional complete intro object. Partial intro patches are not merged; pass the complete intro shape."
},
"privacy_notice": {
"type": [
"object",
"null"
],
"description": "Optional complete privacy notice object, or null to remove it."
},
"literals": {
"type": [
"object",
"null"
],
"description": "Optional locale-keyed literal map, or null to remove literals."
},
"partial_response_ttl_minutes": {
"type": [
"integer",
"null"
],
"description": "Optional inactivity timeout in minutes for resumable partial attempts, or null to reset to default.",
"minimum": 15
}
},
"required": [
"slug",
"expected_version_id"
]
}recalculate_survey_quality
Force a quality recalculation across all versions or optionally for one concrete version.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"description": "Optional concrete survey version. Omit to aggregate all versions.",
"minimum": 1
}
},
"required": [
"slug"
]
}patch_survey_fragment
Replace a survey fragment using the mandatory expected_version_id concurrency guard. On version_conflict, explain the intervening actor and changes to the user before reconciling; never retry by only replacing the expected id.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"kind": {
"type": "string",
"description": "Fragment kind accepted by the Dayalogs flow editor, for example header, block, question or ending."
},
"fragment_id": {
"type": "string"
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"fragment": {
"type": "object"
},
"json": {
"type": "string",
"description": "Alternative to fragment: JSON object string for the replacement fragment."
}
},
"required": [
"slug",
"kind",
"fragment_id",
"expected_version_id"
]
}append_to_survey
Append or insert a new top-level block using the mandatory expected_version_id concurrency guard. Conflicts must be explained and reconciled with the user.
start, endView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"block": {
"type": "object",
"description": "New top-level block object to insert at the survey root. The block may contain nested blocks and question references; pass new question definitions in questions."
},
"questions": {
"type": "array",
"description": "Optional new question definitions to add to the survey question catalog before inserting the block.",
"items": {
"type": "object"
}
},
"position": {
"type": "string",
"enum": [
"start",
"end"
],
"description": "Insert at the beginning or end of the top-level survey blocks. Defaults to end."
},
"after_block_id": {
"type": "string",
"description": "Optional existing top-level block id after which the new block should be inserted."
},
"before_block_id": {
"type": "string",
"description": "Optional existing top-level block id before which the new block should be inserted."
}
},
"required": [
"slug",
"expected_version_id",
"block"
]
}append_to_block
Append or insert a block item using the mandatory expected_version_id concurrency guard. Conflicts must be explained and reconciled with the user.
start, endView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"expected_version_id": {
"type": "integer",
"minimum": 1,
"description": "Concrete current version_id observed immediately before this mutation. Required as an optimistic concurrency guard."
},
"block_id": {
"type": "string",
"description": "Existing block id that will receive the new item."
},
"item": {
"type": "object",
"description": "Flow item to insert: a nested block object or {type:\"question\", question:\"q1\"}. Use block.presentation.mode=\"grouped\" when direct questions must share one screen."
},
"questions": {
"type": "array",
"description": "Optional new question definitions to add to the survey question catalog before inserting the item.",
"items": {
"type": "object"
}
},
"position": {
"type": "string",
"enum": [
"start",
"end"
],
"description": "Insert at the beginning or end of the target block items. Defaults to end."
},
"after_item_id": {
"type": "string",
"description": "Optional existing item id/question id after which the new item should be inserted."
},
"before_item_id": {
"type": "string",
"description": "Optional existing item id/question id before which the new item should be inserted."
}
},
"required": [
"slug",
"expected_version_id",
"block_id",
"item"
]
}Translations
4 toolsget_translation_source
Return source-locale literal keys and text for a survey, optionally with an existing target translation for one locale.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"target_locale": {
"type": "string",
"description": "Optional target locale to include existing target text in each returned entry."
},
"locale": {
"type": "string",
"description": "Alias for target_locale."
}
},
"required": [
"slug"
]
}list_survey_translations
Return translation status by locale, including missing counts and available target locales.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"include_entries": {
"type": "boolean",
"description": "Include source/target entries for each locale. Defaults to false."
},
"include_literals": {
"type": "boolean",
"description": "Alias for include_entries."
}
},
"required": [
"slug"
]
}validate_survey_translation
Validate a complete locale translation map without saving it.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"locale": {
"type": "string",
"description": "Two-letter target locale, for example es or en."
},
"target_locale": {
"type": "string",
"description": "Alias for locale."
},
"source_hash": {
"type": "string",
"description": "Optional source hash returned by get_translation_source. If present, Dayalogs rejects stale saves."
},
"translations": {
"type": "object",
"description": "Complete translation map keyed by literal key, for example {\"survey.title\":\"...\"}."
},
"literals": {
"type": "object",
"description": "Alias for translations."
},
"entries": {
"type": "array",
"description": "Alternative translation shape: array of {key,target} entries returned by get_translation_source.",
"items": {
"type": "object"
}
}
},
"required": [
"slug",
"locale"
]
}save_survey_translation
Save a complete locale translation map into the current survey without creating a new survey version.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"locale": {
"type": "string",
"description": "Two-letter target locale, for example es or en. This value is also used in the save URL."
},
"target_locale": {
"type": "string",
"description": "Alias for locale."
},
"source_hash": {
"type": "string",
"description": "Optional source hash returned by get_translation_source. If present, Dayalogs rejects stale saves."
},
"translations": {
"type": "object",
"description": "Complete translation map keyed by literal key, for example {\"survey.title\":\"...\"}."
},
"literals": {
"type": "object",
"description": "Alias for translations."
},
"entries": {
"type": "array",
"description": "Alternative translation shape: array of {key,target} entries returned by get_translation_source.",
"items": {
"type": "object"
}
}
},
"required": [
"slug",
"locale"
]
}Preview & design
5 toolsget_preview_url
Create and return admin and public preview URLs for a current survey. The public preview does not persist responses. During authoring, share public_preview_url with the user, not respondent access links.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"locale": {
"type": "string",
"description": "Optional locale, for example ca, es or en."
},
"ttl_minutes": {
"type": "integer",
"description": "Public preview lifetime between 15 and 10080 minutes.",
"minimum": 15,
"maximum": 10080
}
},
"required": [
"slug"
]
}get_survey_design
Return the respondent-facing design settings for a survey, including assigned style and logo metadata.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}update_survey_design
Assign a base style, ready custom style, or clear the explicit style for a survey.
left, center, rightleft, center, rightinherit, override, disabledinherit, override, disabledView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"style": {
"type": [
"string",
"object",
"null"
],
"description": "Style assignment: none/default, base:{key}, theme:{id}, or {type:\"base\", key:\"...\"} / {type:\"theme\", id:123}."
},
"style_selection": {
"type": [
"string",
"object",
"null"
],
"description": "Alias for style."
},
"base_key": {
"type": "string",
"description": "Assign a locked base style by key."
},
"style_base_key": {
"type": "string",
"description": "Alias for base_key."
},
"theme_id": {
"type": "integer",
"minimum": 1,
"description": "Assign a ready custom style by id."
},
"style_theme_id": {
"type": "integer",
"minimum": 1,
"description": "Alias for theme_id."
},
"clear_style": {
"type": "boolean",
"description": "Clear the explicit survey style and fall back to the default."
},
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Survey-level logo alignment override."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
},
"clear_logo_alignment": {
"type": "boolean",
"description": "Clear the survey-level logo alignment override and inherit the account default."
},
"logo_mode": {
"type": "string",
"enum": [
"inherit",
"override",
"disabled"
],
"description": "Survey logo behavior: inherit the account/default logo, use the uploaded survey logo, or hide the logo."
},
"header_logo_mode": {
"type": "string",
"enum": [
"inherit",
"override",
"disabled"
],
"description": "Alias for logo_mode."
},
"disable_logo": {
"type": "boolean",
"description": "Hide the header logo on this survey."
},
"hide_logo": {
"type": "boolean",
"description": "Alias for disable_logo."
},
"inherit_logo": {
"type": "boolean",
"description": "Return to the account/default header logo."
},
"clear_logo_override": {
"type": "boolean",
"description": "Alias for inherit_logo."
}
},
"required": [
"slug"
]
}upload_survey_logo
Upload a survey-specific header logo override from base64 content and optional alignment.
left, center, rightleft, center, rightView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"content_base64": {
"type": "string",
"description": "Base64 image content. Data URLs are accepted."
},
"filename": {
"type": "string",
"description": "Original filename for metadata."
},
"mime_type": {
"type": "string",
"description": "image/png, image/jpeg or image/webp. Optional when content_base64 is a data URL."
},
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Optional logo alignment to save with the upload."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
}
},
"required": [
"slug",
"content_base64"
]
}delete_survey_logo
Remove the survey-specific header logo override, falling back to account branding or Dayalogs default.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}Publishing
2 toolsgo_live_survey
Start response collection for the current survey version. This publishes real respondent access and requires confirm_publish=true after the user explicitly asks to start collection/go live. Without confirmation, the tool returns a preview URL and does not change collection state.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"confirm_publish": {
"type": "boolean",
"description": "Must be true to start real response collection. Set it only after the user explicitly asks to start collection, publish, or go live."
}
},
"required": [
"slug"
]
}stop_survey_collection
Stop response collection for the current survey version. Existing links remain configured, but respondent entry shows a friendly unavailable page.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}Quotas
5 toolslist_survey_quotas
List survey-level quotas plus read-only link and link set quota summaries and condition source metadata.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_quota
Create a survey-level quota with label, limit, optional count, active flag and Dayalogs condition JSON.
View input JSON schema
{
"type": "object",
"properties": {
"quota_id": {
"type": "string",
"description": "Optional stable quota id. Defaults to a slugified label."
},
"id": {
"type": "string",
"description": "Alias for quota_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Quota display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Quota threshold."
},
"count": {
"type": "integer",
"minimum": 0,
"description": "Current accepted count. Optional; defaults to 0 on create."
},
"active": {
"type": "boolean",
"description": "Whether the quota is active. Defaults to true on create."
},
"condition": {
"type": "object",
"description": "Dayalogs condition JSON. Use {question, op, value}, {var, op, value}, groups {all:[...]}, {any:[...]}, or {not:{...}}. Operators are normalized to canonical forms such as eq, not_eq, contains, gt, gte, lt, lte, answered and not_answered."
},
"if": {
"type": "object",
"description": "Alias for condition."
},
"condition_json": {
"type": "string",
"description": "Alternative to condition: JSON object string."
},
"clear_condition": {
"type": "boolean",
"description": "On update, remove the quota condition and turn it into a total survey quota."
}
},
"required": [
"slug",
"label",
"limit"
]
}update_survey_quota
Update a survey-level quota label, limit, count, active flag or condition.
View input JSON schema
{
"type": "object",
"properties": {
"quota_id": {
"type": "string",
"description": "Survey-level quota id."
},
"id": {
"type": "string",
"description": "Alias for quota_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Quota display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"limit": {
"type": "integer",
"minimum": 1,
"description": "Quota threshold."
},
"count": {
"type": "integer",
"minimum": 0,
"description": "Current accepted count. Optional; defaults to 0 on create."
},
"active": {
"type": "boolean",
"description": "Whether the quota is active. Defaults to true on create."
},
"condition": {
"type": "object",
"description": "Dayalogs condition JSON. Use {question, op, value}, {var, op, value}, groups {all:[...]}, {any:[...]}, or {not:{...}}. Operators are normalized to canonical forms such as eq, not_eq, contains, gt, gte, lt, lte, answered and not_answered."
},
"if": {
"type": "object",
"description": "Alias for condition."
},
"condition_json": {
"type": "string",
"description": "Alternative to condition: JSON object string."
},
"clear_condition": {
"type": "boolean",
"description": "On update, remove the quota condition and turn it into a total survey quota."
}
},
"required": [
"slug",
"quota_id"
]
}delete_survey_quota
Delete a survey-level quota. Link and link set quotas are managed through link and link set tools.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"quota_id": {
"type": "string",
"description": "Survey-level quota id."
},
"id": {
"type": "string",
"description": "Alias for quota_id."
}
},
"required": [
"slug",
"quota_id"
]
}set_survey_quota_version_inclusion
Include or exclude one survey version from effective quota progress without deleting responses or counters. Exclusion requires an explicit user confirmation and audit reason; without confirmation the tool returns a normal confirmation_required result and does not mutate quota state.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Concrete survey version number."
},
"included": {
"type": "boolean",
"description": "false excludes this version contribution; true restores it."
},
"quota_id": {
"type": "string",
"description": "Optional quota id. Omit to apply to every survey-level quota."
},
"reason": {
"type": "string",
"description": "Audit reason. Required when excluding a version."
},
"confirm_exclusion": {
"type": "boolean",
"description": "Must be true when included=false, after the user explicitly confirms excluding this version from quota progress."
}
},
"required": [
"slug",
"version",
"included"
]
}Responses
4 toolslist_survey_responses
List completed survey responses with pagination and optional version/date/link/ending filters.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"version": {
"type": [
"string",
"integer"
],
"description": "current, all or a specific version number. Defaults to current."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number. Defaults to 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Responses per page. Defaults to 25, maximum 100."
},
"submitted_from": {
"type": "string",
"description": "Optional ISO-8601 lower datetime bound."
},
"submitted_to": {
"type": "string",
"description": "Optional ISO-8601 upper datetime bound."
},
"ending_key": {
"type": "string",
"description": "Optional ending key filter."
},
"share_link_id": {
"type": "integer",
"description": "Optional share-link id filter."
}
},
"required": [
"slug"
]
}get_survey_response
Return one completed survey response, including variables, share-link metadata and individual answer rows.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"response_id": {
"type": "integer",
"minimum": 1,
"description": "Survey response id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for response_id."
}
},
"required": [
"slug",
"response_id"
]
}delete_survey_response
Delete one completed survey response from the current account. Use carefully; this mirrors the admin delete action.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"response_id": {
"type": "integer",
"minimum": 1,
"description": "Survey response id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for response_id."
}
},
"required": [
"slug",
"response_id"
]
}export_survey_responses
Export survey responses in json, ndjson, csv, xlsx or sav. Binary exports are returned as base64 content.
json, ndjson, csv, xlsx, savcompleted, all, partialscode, aliasView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"format": {
"type": "string",
"enum": [
"json",
"ndjson",
"csv",
"xlsx",
"sav"
],
"description": "Export format. Defaults to json."
},
"versions": {
"type": [
"string",
"integer",
"array"
],
"items": {
"type": "integer"
},
"description": "current, all, one version number, comma-separated version numbers, or an array of version numbers. Defaults to current."
},
"version": {
"type": [
"string",
"integer"
],
"description": "Alias for versions when selecting a single version/current/all."
},
"attempts": {
"type": "string",
"enum": [
"completed",
"all",
"partials"
],
"description": "Whether to export completed responses, partial attempts, or both. Defaults to completed."
},
"partial_min_completion_percent": {
"type": "number",
"minimum": 0,
"maximum": 100,
"description": "Optional minimum completion percent when partial attempts are included."
},
"partial_reached_target": {
"type": "string",
"description": "Optional question id/code/alias that a partial attempt must have reached."
},
"option_value_mode": {
"type": "string",
"enum": [
"code",
"alias"
],
"description": "Use option numeric codes or option aliases in tabular exports when aliases exist."
}
},
"required": [
"slug"
]
}Audiences
7 toolsget_audience_summary
Return account audience counts, top tags, saved segment summaries and recent imports.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}list_audience_contacts
Search and paginate contacts in the current account, optionally filtering by all provided tag slugs or names.
View input JSON schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Optional text search across name, email, phone, external id and UUID."
},
"query": {
"type": "string",
"description": "Alias for q."
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Optional tag slugs/names. Multiple tags are combined with AND. Accepts an array or comma-separated string."
},
"tag_slugs": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Alias for tags."
},
"page": {
"type": "integer",
"minimum": 1,
"description": "Page number. Defaults to 1."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Contacts per page. Defaults to 20, maximum 100."
}
},
"required": []
}get_audience_contact
Return one contact with tags, extra JSON, account-level data and survey-scoped data.
View input JSON schema
{
"type": "object",
"properties": {
"contact_id": {
"type": "integer",
"minimum": 1,
"description": "Audience contact id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for contact_id."
}
},
"required": [
"contact_id"
]
}create_audience_import
Create a JSON-first audience import session. The caller should transform Excel, CRM, Word or copied lists into normalized contact JSON before appending chunks.
View input JSON schema
{
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Human import name, for example \"Directors escoles juny 2026\"."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Optional import tags as array or comma-separated string. Dayalogs also adds an import-YYMMDD-HHMM tag automatically."
},
"tag_names": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
},
"description": "Alias for tags."
},
"data_survey_slug": {
"type": "string",
"description": "Optional survey slug. When set, each contact data object is stored as survey-scoped @contact.survey_data for that survey."
},
"survey_slug": {
"type": "string",
"description": "Alias for data_survey_slug."
},
"source_metadata": {
"type": "object",
"description": "Optional metadata about the upstream source, such as CRM name, file title or agent trace id."
},
"metadata": {
"type": "object",
"description": "Alias for source_metadata."
}
},
"required": [
"label"
]
}append_audience_import_contacts
Append a chunk of normalized contact JSON to an open audience import. Uses chunk_id for idempotency and persists contacts immediately.
View input JSON schema
{
"type": "object",
"properties": {
"import_id": {
"type": "integer",
"minimum": 1,
"description": "Audience import id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for import_id."
},
"chunk_id": {
"type": "string",
"description": "Optional idempotency key. Re-sending the same chunk_id is a no-op."
},
"contacts": {
"type": "array",
"description": "Chunk of already-normalized Dayalogs contact JSON objects. Do not send raw Excel/CSV rows here.",
"items": {
"type": "object",
"description": "Normalized contact object. Canonical fields: external_id, email, phone, first_name, last_name, full_name, age, gender, tags, extra, data, survey_data.",
"properties": {
"external_id": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"full_name": {
"type": "string"
},
"age": {
"type": [
"integer",
"string"
]
},
"gender": {
"type": "string"
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
}
},
"extra": {
"type": "object",
"description": "Unmapped flat or structured metadata. Exposed under @contact.extra and merged into contact payload."
},
"data": {
"type": "object",
"description": "Structured account-level contact data, or survey-scoped data when the import session has data_survey_slug."
},
"survey_data": {
"type": "object",
"description": "Optional object keyed by survey slug, each value a JSON object."
}
}
}
},
"items": {
"type": "array",
"description": "Alias for contacts.",
"items": {
"type": "object",
"description": "Normalized contact object. Canonical fields: external_id, email, phone, first_name, last_name, full_name, age, gender, tags, extra, data, survey_data.",
"properties": {
"external_id": {
"type": "string"
},
"email": {
"type": "string"
},
"phone": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"full_name": {
"type": "string"
},
"age": {
"type": [
"integer",
"string"
]
},
"gender": {
"type": "string"
},
"tags": {
"type": [
"array",
"string"
],
"items": {
"type": "string"
}
},
"extra": {
"type": "object",
"description": "Unmapped flat or structured metadata. Exposed under @contact.extra and merged into contact payload."
},
"data": {
"type": "object",
"description": "Structured account-level contact data, or survey-scoped data when the import session has data_survey_slug."
},
"survey_data": {
"type": "object",
"description": "Optional object keyed by survey slug, each value a JSON object."
}
}
}
},
"contacts_json": {
"type": "string",
"description": "Alternative to contacts: JSON string containing an array of normalized contact objects."
}
},
"required": [
"import_id"
]
}get_audience_import_status
Return import status, counters, processed chunks, warnings/errors and metadata for an audience import session.
View input JSON schema
{
"type": "object",
"properties": {
"import_id": {
"type": "integer",
"minimum": 1,
"description": "Audience import id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for import_id."
}
},
"required": [
"import_id"
]
}commit_audience_import
Finalize an open audience import session. Contacts are already persisted during chunk append; commit marks the import complete.
View input JSON schema
{
"type": "object",
"properties": {
"import_id": {
"type": "integer",
"minimum": 1,
"description": "Audience import id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for import_id."
}
},
"required": [
"import_id"
]
}Tags
5 toolslist_tags
List global account tags and current contact assignment counts.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}suggest_tags
Autocomplete existing global account tags by name or slug.
View input JSON schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Text to search in tag name or slug."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"description": "Maximum suggestions. Defaults to 8."
}
},
"required": [
"q"
]
}create_tag
Create a global account tag that can be used by audiences now and other resource types later.
View input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Tag display name."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
}
},
"required": [
"name"
]
}update_tag
Update a global account tag name or slug.
View input JSON schema
{
"type": "object",
"properties": {
"tag_id": {
"type": "integer",
"minimum": 1,
"description": "Tag id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for tag_id."
},
"name": {
"type": "string",
"description": "Tag display name."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
}
},
"required": [
"tag_id"
]
}delete_tag
Delete a global account tag. If assigned to contacts, pass detach=true to remove assignments.
View input JSON schema
{
"type": "object",
"properties": {
"tag_id": {
"type": "integer",
"minimum": 1,
"description": "Tag id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for tag_id."
},
"detach": {
"type": "boolean",
"description": "When true, delete even if assigned to contacts, detaching those contact assignments."
}
},
"required": [
"tag_id"
]
}Segments
7 toolslist_audience_segments
List saved audience segments with normalized query criteria.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}count_audience_segment
Normalize an audience segment criteria JSON object and return the matching contact count plus a small sample.
View input JSON schema
{
"type": "object",
"properties": {
"criteria": {
"type": "object",
"description": "Segment query object using combinator and rules. Rule sources: tag, field, extra, data, survey_data. Canonical operators: exists, not_exists, eq, not_eq, contains, not_contains, starts_with, ends_with, gt, gte, lt, lte, count_eq, count_gt, count_gte, count_lt, count_lte."
},
"criteria_json": {
"type": "string",
"description": "Alternative to criteria: JSON string containing the segment query object."
},
"sample_limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"description": "Maximum sample contacts to return. Defaults to 5."
}
},
"required": []
}create_audience_segment
Create a saved audience segment from a normalized criteria JSON object and return the calculated contact count.
View input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Segment display name. Required on create."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
},
"description": {
"type": "string",
"description": "Optional internal description."
},
"criteria": {
"type": "object",
"description": "Segment query object using combinator and rules. Rule sources: tag, field, extra, data, survey_data. Canonical operators: exists, not_exists, eq, not_eq, contains, not_contains, starts_with, ends_with, gt, gte, lt, lte, count_eq, count_gt, count_gte, count_lt, count_lte."
},
"criteria_json": {
"type": "string",
"description": "Alternative to criteria: JSON string containing the segment query object."
},
"refresh_count": {
"type": "boolean",
"description": "On update, recalculate last_count even when criteria is unchanged."
}
},
"required": [
"name"
]
}update_audience_segment
Update a saved audience segment name, description, slug or criteria. When criteria changes, Dayalogs recalculates the count.
View input JSON schema
{
"type": "object",
"properties": {
"segment_id": {
"type": "integer",
"minimum": 1,
"description": "Audience segment id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for segment_id."
},
"name": {
"type": "string",
"description": "Segment display name. Required on create."
},
"slug": {
"type": "string",
"description": "Optional stable slug. Defaults to a slugified name on create."
},
"description": {
"type": "string",
"description": "Optional internal description."
},
"criteria": {
"type": "object",
"description": "Segment query object using combinator and rules. Rule sources: tag, field, extra, data, survey_data. Canonical operators: exists, not_exists, eq, not_eq, contains, not_contains, starts_with, ends_with, gt, gte, lt, lte, count_eq, count_gt, count_gte, count_lt, count_lte."
},
"criteria_json": {
"type": "string",
"description": "Alternative to criteria: JSON string containing the segment query object."
},
"refresh_count": {
"type": "boolean",
"description": "On update, recalculate last_count even when criteria is unchanged."
}
},
"required": [
"segment_id"
]
}delete_audience_segment
Delete a saved audience segment. Contacts are not deleted.
View input JSON schema
{
"type": "object",
"properties": {
"segment_id": {
"type": "integer",
"minimum": 1,
"description": "Audience segment id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for segment_id."
}
},
"required": [
"segment_id"
]
}get_audience_segment_json_paths
List detected JSON paths for contact extra, contact data, or survey-scoped contact data to help build segment rules.
extra, data, survey_dataView input JSON schema
{
"type": "object",
"properties": {
"source": {
"type": "string",
"enum": [
"extra",
"data",
"survey_data"
],
"description": "JSON source to inspect."
},
"survey_slug": {
"type": "string",
"description": "Required when source is survey_data."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"description": "Maximum paths to return. Defaults to 250."
}
},
"required": [
"source"
]
}suggest_audience_segment_values
Suggest existing values for a segment rule field or JSON path. Returns requires_query=true instead of a huge list when too many values exist.
field, extra, data, survey_dataView input JSON schema
{
"type": "object",
"properties": {
"source": {
"type": "string",
"enum": [
"field",
"extra",
"data",
"survey_data"
],
"description": "Source to inspect for existing values."
},
"field": {
"type": "string",
"description": "Required when source is field. Example: email, full_name, age, gender."
},
"path": {
"type": "string",
"description": "Required for extra, data and survey_data sources."
},
"survey_slug": {
"type": "string",
"description": "Required when source is survey_data."
},
"q": {
"type": "string",
"description": "Optional autocomplete query."
},
"query": {
"type": "string",
"description": "Alias for q."
}
},
"required": [
"source"
]
}Links
13 toolslist_survey_links
List respondent access links for a survey, including URLs, status, progress state, quotas, variables, contact and link set metadata.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_link
Create a real respondent access link for a survey. This is not a preview link; use get_preview_url for user review. Requires confirm_real_link=true after the user explicitly asks for a respondent link.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Display label. Optional on create; defaults to the contact display name or \"Single link\"."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"contact_id": {
"type": "integer",
"description": "Optional contact id. If present, Dayalogs creates a personalized link."
},
"email": {
"type": "string",
"description": "Optional email metadata for anonymous single links."
},
"tag_id": {
"type": "integer",
"description": "Optional source tag id for personalized single links."
},
"tag_slug": {
"type": "string",
"description": "Optional source tag slug for personalized single links."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
},
"confirm_real_link": {
"type": "boolean",
"description": "Must be true to create a real respondent access link. Use get_preview_url instead for user review links."
}
},
"required": [
"slug"
]
}update_survey_link
Update a single link label, active date window, or link-level quota when the quota is editable.
View input JSON schema
{
"type": "object",
"properties": {
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Display label. Optional on create; defaults to the contact display name or \"Single link\"."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"contact_id": {
"type": "integer",
"description": "Optional contact id. If present, Dayalogs creates a personalized link."
},
"email": {
"type": "string",
"description": "Optional email metadata for anonymous single links."
},
"tag_id": {
"type": "integer",
"description": "Optional source tag id for personalized single links."
},
"tag_slug": {
"type": "string",
"description": "Optional source tag slug for personalized single links."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
}
},
"required": [
"slug",
"link_id"
]
}delete_survey_link
Delete a link. Dayalogs hard-deletes unused links and soft-deletes links that already have responses, sessions or progress.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
}
},
"required": [
"slug",
"link_id"
]
}activate_survey_link
Manually activate a respondent access link.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
}
},
"required": [
"slug",
"link_id"
]
}deactivate_survey_link
Manually deactivate a respondent access link.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_id": {
"type": "integer",
"description": "Survey link id."
},
"id": {
"type": "integer",
"description": "Alias for link_id."
}
},
"required": [
"slug",
"link_id"
]
}list_survey_link_sets
List survey link sets with quota mode, source tag/segment and link counts.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_link_set
Create a fresh multi-link link set from a tag, saved segment, or explicit contact_ids. Existing links are never reused.
tag, segment, contactsper_link, globalView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Link set display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"source_type": {
"type": "string",
"enum": [
"tag",
"segment",
"contacts"
],
"description": "Create source. On create, Dayalogs can infer this from tag_id/tag_slug, segment_id/segment_slug or contact_ids."
},
"source": {
"type": "string",
"description": "Alias for source_type."
},
"tag_id": {
"type": "integer",
"description": "Source tag id."
},
"tag_slug": {
"type": "string",
"description": "Source tag slug."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"segment_id": {
"type": "integer",
"description": "Source audience segment id."
},
"segment_slug": {
"type": "string",
"description": "Source audience segment slug."
},
"source_segment_id": {
"type": "integer",
"description": "Alias for segment_id."
},
"source_segment_slug": {
"type": "string",
"description": "Alias for segment_slug."
},
"contact_ids": {
"type": "array",
"description": "Explicit contact ids for source_type contacts.",
"items": {
"type": "integer"
}
},
"contacts": {
"type": "array",
"description": "Alias for contact_ids. Can be integers or objects with id/contact_id.",
"items": {
"type": [
"integer",
"object"
]
}
},
"quota_scope": {
"type": "string",
"enum": [
"per_link",
"global"
],
"description": "Quota mode for multi-link link sets. Defaults to per_link."
},
"quota_mode": {
"type": "string",
"description": "Alias for quota_scope."
},
"overwrite_calendar_overrides": {
"type": "boolean",
"description": "On update, apply date changes to links with custom date overrides too."
},
"overwrite_quota_overrides": {
"type": "boolean",
"description": "On update, apply per-link quota changes to links with custom quota overrides too."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
}
},
"required": [
"slug",
"label"
]
}update_survey_link_set
Update a link set label, link date window, quota mode and bulk quota/calendar overrides where applicable.
tag, segment, contactsper_link, globalView input JSON schema
{
"type": "object",
"properties": {
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"label": {
"type": "string",
"description": "Link set display name. Required on create."
},
"name": {
"type": "string",
"description": "Alias for label."
},
"source_type": {
"type": "string",
"enum": [
"tag",
"segment",
"contacts"
],
"description": "Create source. On create, Dayalogs can infer this from tag_id/tag_slug, segment_id/segment_slug or contact_ids."
},
"source": {
"type": "string",
"description": "Alias for source_type."
},
"tag_id": {
"type": "integer",
"description": "Source tag id."
},
"tag_slug": {
"type": "string",
"description": "Source tag slug."
},
"source_tag_id": {
"type": "integer",
"description": "Alias for tag_id."
},
"source_tag_slug": {
"type": "string",
"description": "Alias for tag_slug."
},
"segment_id": {
"type": "integer",
"description": "Source audience segment id."
},
"segment_slug": {
"type": "string",
"description": "Source audience segment slug."
},
"source_segment_id": {
"type": "integer",
"description": "Alias for segment_id."
},
"source_segment_slug": {
"type": "string",
"description": "Alias for segment_slug."
},
"contact_ids": {
"type": "array",
"description": "Explicit contact ids for source_type contacts.",
"items": {
"type": "integer"
}
},
"contacts": {
"type": "array",
"description": "Alias for contact_ids. Can be integers or objects with id/contact_id.",
"items": {
"type": [
"integer",
"object"
]
}
},
"quota_scope": {
"type": "string",
"enum": [
"per_link",
"global"
],
"description": "Quota mode for multi-link link sets. Defaults to per_link."
},
"quota_mode": {
"type": "string",
"description": "Alias for quota_scope."
},
"overwrite_calendar_overrides": {
"type": "boolean",
"description": "On update, apply date changes to links with custom date overrides too."
},
"overwrite_quota_overrides": {
"type": "boolean",
"description": "On update, apply per-link quota changes to links with custom quota overrides too."
},
"single_response": {
"type": "boolean",
"description": "For personalized links, one response per link with server-side resume. Defaults to true for multi-link link sets and false for single-link link sets."
},
"cookie_protection": {
"type": "boolean",
"description": "Anonymous single-link soft duplicate guard. Ignored for personalized multi-link link sets."
},
"inactivity_timeout_seconds": {
"type": [
"integer",
"null"
],
"minimum": 30,
"description": "Kiosk/shared-device mode: seconds of inactivity before the current attempt is saved as a partial and the survey restarts for the next respondent, with a visible countdown warning first. Use for tablets at counters or event kiosks. Minimum 30. Only applies to anonymous multi-response links without cookie_protection; ignored elsewhere. Null disables it."
},
"embedded_variables": {
"type": "object",
"description": "Server-side variables stored with response metadata and never exposed in the URL."
},
"variables": {
"type": "object",
"description": "Alias for embedded_variables."
},
"url_variables": {
"type": "object",
"description": "Static query parameters appended to generated URLs; visible and modifiable by respondents."
},
"url_params": {
"type": "object",
"description": "Alias for url_variables."
},
"quota": {
"type": [
"integer",
"null"
],
"description": "Quota threshold. For multi-link link sets, only applies when single_response is false."
},
"limit": {
"type": [
"integer",
"null"
],
"description": "Alias for quota."
},
"quota_count": {
"type": "integer",
"description": "Current accepted count. Usually edited after fieldwork starts."
},
"count": {
"type": "integer",
"description": "Alias for quota_count."
},
"clear_quota": {
"type": "boolean",
"description": "Remove the quota threshold where quotas are editable."
},
"open_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 activation datetime."
},
"open_date": {
"type": [
"string",
"null"
],
"description": "Alias for open_at."
},
"close_at": {
"type": [
"string",
"null"
],
"description": "Optional ISO-8601 deactivation datetime."
},
"close_date": {
"type": [
"string",
"null"
],
"description": "Alias for close_at."
}
},
"required": [
"slug",
"link_set_id"
]
}delete_survey_link_set
Delete a link set. Dayalogs hard-deletes unused link sets and soft-deletes link sets with retained activity.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
}
},
"required": [
"slug",
"link_set_id"
]
}activate_survey_link_set
Manually activate a link set.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
}
},
"required": [
"slug",
"link_set_id"
]
}deactivate_survey_link_set
Manually deactivate a link set.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
}
},
"required": [
"slug",
"link_set_id"
]
}export_survey_link_set
Export links from a link set as structured JSON, CSV or XLSX content.
json, csv, xlsxView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"link_set_id": {
"type": "integer",
"description": "Survey link set id."
},
"id": {
"type": "integer",
"description": "Alias for link_set_id."
},
"format": {
"type": "string",
"enum": [
"json",
"csv",
"xlsx"
],
"description": "Export format. Defaults to json."
}
},
"required": [
"slug",
"link_set_id"
]
}Embeds
5 toolslist_survey_embeds
List website embed placements for a survey, including generated one-tag loader snippets, allowed origins, lifecycle settings and compatibility warnings.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}get_survey_embed_compatibility
Check whether the current survey version is suitable for responsive embedded viewports. Warnings are advisory and do not block creating an embed.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_survey_embed
Create a website embed placement. Optionally bind it to an anonymous reusable single-link link set so its fixed metadata and runtime availability rules are used; otherwise the survey default link is resolved or created transparently. Draft embeds can be prepared without confirmation. Activating a real public embed requires exact or wildcard-subdomain allowed origins and confirm_public_embed=true after explicit user approval. Returns a one-tag script snippet.
draft, active, revokedView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable placement name."
},
"share_link_id": {
"type": [
"integer",
"null"
],
"description": "Optional anonymous reusable single-link link set id for this survey. Fixed metadata, dates, quota and cookie protection remain effective at runtime. Null resolves or creates the survey default link."
},
"allowed_origins": {
"type": "array",
"description": "Exact HTTP(S) origins or wildcard subdomain origins such as https://*.example.com. Never use *.",
"items": {
"type": "string"
}
},
"origins": {
"type": "array",
"description": "Alias for allowed_origins.",
"items": {
"type": "string"
}
},
"settings": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"modal"
]
},
"trigger": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"immediate",
"delay",
"scroll",
"launcher",
"programmatic",
"custom_event"
]
},
"delay_ms": {
"type": "integer",
"minimum": 0,
"maximum": 3600000
},
"scroll_percent": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"event_name": {
"type": "string",
"maxLength": 120
},
"launcher_label": {
"type": "string",
"maxLength": 120
}
},
"required": [],
"additionalProperties": false
},
"frequency": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"always",
"session",
"once",
"cooldown"
]
},
"cooldown_days": {
"type": "integer",
"minimum": 1,
"maximum": 3650
}
},
"required": [],
"additionalProperties": false
},
"layout": {
"type": "object",
"properties": {
"desktop_width": {
"type": "integer",
"minimum": 320,
"maximum": 1200
},
"mobile_width": {
"type": "integer",
"minimum": 280,
"maximum": 600
},
"max_height": {
"type": "integer",
"minimum": 320,
"maximum": 1600
},
"drawer_side": {
"type": "string",
"enum": [
"left",
"right"
]
}
},
"required": [],
"additionalProperties": false
},
"appearance": {
"type": "object",
"properties": {
"border_width": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"border_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border_radius": {
"type": "integer",
"minimum": 0,
"maximum": 40
},
"shadow": {
"type": "string",
"enum": [
"none",
"soft",
"strong"
]
},
"backdrop_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"backdrop_opacity": {
"type": "integer",
"minimum": 0,
"maximum": 90
}
},
"required": [],
"additionalProperties": false
},
"target_selector": {
"type": [
"string",
"null"
],
"maxLength": 240
},
"locale": {
"type": [
"string",
"null"
]
}
},
"required": [],
"additionalProperties": false
},
"active": {
"type": "boolean",
"description": "Create the placement active. At least one allowed origin is required."
},
"confirm_public_embed": {
"type": "boolean",
"description": "Set true only after the user explicitly approves activating this real public website embed."
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"revoked"
],
"description": "Update lifecycle status. Activating requires at least one allowed origin."
}
},
"required": [
"slug",
"name"
],
"additionalProperties": false
}update_survey_embed
Update an embed placement name, compatible share link, allowed origins, trigger, frequency, responsive layout, locale or status. A null share_link_id restores the compatible default link. Transitioning a draft embed to active requires allowed origins and confirm_public_embed=true after explicit user approval.
draft, active, revokedView input JSON schema
{
"type": "object",
"properties": {
"embed_id": {
"type": "integer",
"description": "Website embed placement id."
},
"id": {
"type": "integer",
"description": "Alias for embed_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"maxLength": 160,
"description": "Human-readable placement name."
},
"share_link_id": {
"type": [
"integer",
"null"
],
"description": "Optional anonymous reusable single-link link set id for this survey. Fixed metadata, dates, quota and cookie protection remain effective at runtime. Null resolves or creates the survey default link."
},
"allowed_origins": {
"type": "array",
"description": "Exact HTTP(S) origins or wildcard subdomain origins such as https://*.example.com. Never use *.",
"items": {
"type": "string"
}
},
"origins": {
"type": "array",
"description": "Alias for allowed_origins.",
"items": {
"type": "string"
}
},
"settings": {
"type": "object",
"properties": {
"mode": {
"type": "string",
"enum": [
"modal"
]
},
"trigger": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"immediate",
"delay",
"scroll",
"launcher",
"programmatic",
"custom_event"
]
},
"delay_ms": {
"type": "integer",
"minimum": 0,
"maximum": 3600000
},
"scroll_percent": {
"type": "integer",
"minimum": 1,
"maximum": 100
},
"event_name": {
"type": "string",
"maxLength": 120
},
"launcher_label": {
"type": "string",
"maxLength": 120
}
},
"required": [],
"additionalProperties": false
},
"frequency": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"always",
"session",
"once",
"cooldown"
]
},
"cooldown_days": {
"type": "integer",
"minimum": 1,
"maximum": 3650
}
},
"required": [],
"additionalProperties": false
},
"layout": {
"type": "object",
"properties": {
"desktop_width": {
"type": "integer",
"minimum": 320,
"maximum": 1200
},
"mobile_width": {
"type": "integer",
"minimum": 280,
"maximum": 600
},
"max_height": {
"type": "integer",
"minimum": 320,
"maximum": 1600
},
"drawer_side": {
"type": "string",
"enum": [
"left",
"right"
]
}
},
"required": [],
"additionalProperties": false
},
"appearance": {
"type": "object",
"properties": {
"border_width": {
"type": "integer",
"minimum": 0,
"maximum": 8
},
"border_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"border_radius": {
"type": "integer",
"minimum": 0,
"maximum": 40
},
"shadow": {
"type": "string",
"enum": [
"none",
"soft",
"strong"
]
},
"backdrop_color": {
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
"backdrop_opacity": {
"type": "integer",
"minimum": 0,
"maximum": 90
}
},
"required": [],
"additionalProperties": false
},
"target_selector": {
"type": [
"string",
"null"
],
"maxLength": 240
},
"locale": {
"type": [
"string",
"null"
]
}
},
"required": [],
"additionalProperties": false
},
"active": {
"type": "boolean",
"description": "Create the placement active. At least one allowed origin is required."
},
"confirm_public_embed": {
"type": "boolean",
"description": "Set true only after the user explicitly approves activating this real public website embed."
},
"status": {
"type": "string",
"enum": [
"draft",
"active",
"revoked"
],
"description": "Update lifecycle status. Activating requires at least one allowed origin."
}
},
"required": [
"slug",
"embed_id"
],
"additionalProperties": false
}delete_survey_embed
Revoke a website embed placement. Existing survey responses are retained, but the public embed identifier can no longer launch the survey.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"embed_id": {
"type": "integer",
"description": "Website embed placement id."
},
"id": {
"type": "integer",
"description": "Alias for embed_id."
}
},
"required": [
"slug",
"embed_id"
],
"additionalProperties": false
}Campaigns
12 toolslist_survey_campaigns
List email campaigns for a survey, optionally including archived campaigns.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"include_archived": {
"type": "boolean",
"description": "Include archived campaigns in the list."
},
"archived": {
"type": "boolean",
"description": "Return only archived campaigns."
}
},
"required": [
"slug"
]
}get_survey_campaign
Return one survey email campaign, optionally including recipients and their link status.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"include_recipients": {
"type": "boolean",
"description": "Include recipients. Defaults to true."
}
},
"required": [
"slug",
"campaign_id"
]
}list_survey_campaign_events
List recent provider delivery events for one survey campaign, including delivery, bounce, complaint, reject and delay events.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"description": "Maximum recent events to return. Defaults to 100."
}
},
"required": [
"slug",
"campaign_id"
]
}create_survey_campaign
Create an email campaign for an existing multi-link link set. Campaigns consume link sets; they do not create links.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Campaign display name."
},
"link_set_id": {
"type": "integer",
"description": "Existing multi-link link set id. Required on create."
},
"subject": {
"type": "string",
"description": "Email subject. Required on create. Supports campaign/contact/link placeholders."
},
"sender_name": {
"type": "string",
"description": "From display name. Defaults to organization name."
},
"sender_local_part": {
"type": "string",
"description": "From local part before @. Defaults to surveys."
},
"sender_domain": {
"type": "string",
"description": "Allowed sender domain. Currently dayalogs.com."
},
"from": {
"type": "string",
"description": "Alias for full from email, for example surveys@dayalogs.com."
},
"from_email": {
"type": "string",
"description": "Alias for full from email."
},
"from_name": {
"type": "string",
"description": "Alias for sender_name."
},
"email_template": {
"type": "string",
"description": "Template selector: base:dayalogs-basic, base:dayalogs-plain or custom:<id>."
},
"template": {
"type": "string",
"description": "Alias for email_template."
},
"email_template_id": {
"type": "integer",
"description": "Ready custom email template id. Alias for custom:<id>."
},
"template_id": {
"type": "integer",
"description": "Alias for email_template_id."
},
"email_template_base_key": {
"type": "string",
"description": "Base template key. Alias for base:<key>."
},
"template_base_key": {
"type": "string",
"description": "Alias for email_template_base_key."
},
"body_html": {
"type": "string",
"description": "Campaign email body HTML. Required on create. Use {{ @link.url }} or Dayalogs will append a link."
},
"html": {
"type": "string",
"description": "Alias for body_html."
},
"body": {
"type": "string",
"description": "Alias for body_html."
},
"body_text": {
"type": "string",
"description": "Optional plain-text body override."
},
"text": {
"type": "string",
"description": "Alias for body_text."
},
"disclaimer_html": {
"type": "string",
"description": "Optional legal/disclaimer HTML. Falls back to account default."
},
"disclaimer": {
"type": "string",
"description": "Alias for disclaimer_html."
},
"disclaimer_text": {
"type": "string",
"description": "Optional plain-text disclaimer override."
},
"include_branding": {
"type": "boolean",
"description": "Whether the campaign includes account/survey branding."
},
"save_account_disclaimer": {
"type": "boolean",
"description": "Also save this disclaimer as the account default."
}
},
"required": [
"slug",
"link_set_id",
"subject",
"body_html"
]
}update_survey_campaign
Update a draft email campaign. After send activity, only the campaign name can be changed.
View input JSON schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Campaign display name."
},
"link_set_id": {
"type": "integer",
"description": "Existing multi-link link set id. Required on create."
},
"subject": {
"type": "string",
"description": "Email subject. Required on create. Supports campaign/contact/link placeholders."
},
"sender_name": {
"type": "string",
"description": "From display name. Defaults to organization name."
},
"sender_local_part": {
"type": "string",
"description": "From local part before @. Defaults to surveys."
},
"sender_domain": {
"type": "string",
"description": "Allowed sender domain. Currently dayalogs.com."
},
"from": {
"type": "string",
"description": "Alias for full from email, for example surveys@dayalogs.com."
},
"from_email": {
"type": "string",
"description": "Alias for full from email."
},
"from_name": {
"type": "string",
"description": "Alias for sender_name."
},
"email_template": {
"type": "string",
"description": "Template selector: base:dayalogs-basic, base:dayalogs-plain or custom:<id>."
},
"template": {
"type": "string",
"description": "Alias for email_template."
},
"email_template_id": {
"type": "integer",
"description": "Ready custom email template id. Alias for custom:<id>."
},
"template_id": {
"type": "integer",
"description": "Alias for email_template_id."
},
"email_template_base_key": {
"type": "string",
"description": "Base template key. Alias for base:<key>."
},
"template_base_key": {
"type": "string",
"description": "Alias for email_template_base_key."
},
"body_html": {
"type": "string",
"description": "Campaign email body HTML. Required on create. Use {{ @link.url }} or Dayalogs will append a link."
},
"html": {
"type": "string",
"description": "Alias for body_html."
},
"body": {
"type": "string",
"description": "Alias for body_html."
},
"body_text": {
"type": "string",
"description": "Optional plain-text body override."
},
"text": {
"type": "string",
"description": "Alias for body_text."
},
"disclaimer_html": {
"type": "string",
"description": "Optional legal/disclaimer HTML. Falls back to account default."
},
"disclaimer": {
"type": "string",
"description": "Alias for disclaimer_html."
},
"disclaimer_text": {
"type": "string",
"description": "Optional plain-text disclaimer override."
},
"include_branding": {
"type": "boolean",
"description": "Whether the campaign includes account/survey branding."
},
"save_account_disclaimer": {
"type": "boolean",
"description": "Also save this disclaimer as the account default."
}
},
"required": [
"slug",
"campaign_id"
]
}clone_survey_campaign
Clone a survey email campaign as a new draft campaign.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Source campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"name": {
"type": "string",
"description": "Optional clone name. If omitted, Dayalogs creates a copy name."
}
},
"required": [
"slug",
"campaign_id"
]
}delete_survey_campaign
Delete an unsent campaign or archive it when it already has send activity.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
}
},
"required": [
"slug",
"campaign_id"
]
}archive_survey_campaign
Archive a survey email campaign so it no longer appears in the active campaign list.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
}
},
"required": [
"slug",
"campaign_id"
]
}restore_survey_campaign
Restore an archived survey email campaign.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
}
},
"required": [
"slug",
"campaign_id"
]
}preview_survey_campaign
Render a campaign preview. Pass campaign_id for a saved campaign, or draft fields plus link_set_id for a transient preview.
View input JSON schema
{
"type": "object",
"properties": {
"campaign_id": {
"type": "integer",
"description": "Optional saved campaign id. If present, draft fields are ignored."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Campaign display name."
},
"link_set_id": {
"type": "integer",
"description": "Existing multi-link link set id. Required on create."
},
"subject": {
"type": "string",
"description": "Email subject. Required on create. Supports campaign/contact/link placeholders."
},
"sender_name": {
"type": "string",
"description": "From display name. Defaults to organization name."
},
"sender_local_part": {
"type": "string",
"description": "From local part before @. Defaults to surveys."
},
"sender_domain": {
"type": "string",
"description": "Allowed sender domain. Currently dayalogs.com."
},
"from": {
"type": "string",
"description": "Alias for full from email, for example surveys@dayalogs.com."
},
"from_email": {
"type": "string",
"description": "Alias for full from email."
},
"from_name": {
"type": "string",
"description": "Alias for sender_name."
},
"email_template": {
"type": "string",
"description": "Template selector: base:dayalogs-basic, base:dayalogs-plain or custom:<id>."
},
"template": {
"type": "string",
"description": "Alias for email_template."
},
"email_template_id": {
"type": "integer",
"description": "Ready custom email template id. Alias for custom:<id>."
},
"template_id": {
"type": "integer",
"description": "Alias for email_template_id."
},
"email_template_base_key": {
"type": "string",
"description": "Base template key. Alias for base:<key>."
},
"template_base_key": {
"type": "string",
"description": "Alias for email_template_base_key."
},
"body_html": {
"type": "string",
"description": "Campaign email body HTML. Required on create. Use {{ @link.url }} or Dayalogs will append a link."
},
"html": {
"type": "string",
"description": "Alias for body_html."
},
"body": {
"type": "string",
"description": "Alias for body_html."
},
"body_text": {
"type": "string",
"description": "Optional plain-text body override."
},
"text": {
"type": "string",
"description": "Alias for body_text."
},
"disclaimer_html": {
"type": "string",
"description": "Optional legal/disclaimer HTML. Falls back to account default."
},
"disclaimer": {
"type": "string",
"description": "Alias for disclaimer_html."
},
"disclaimer_text": {
"type": "string",
"description": "Optional plain-text disclaimer override."
},
"include_branding": {
"type": "boolean",
"description": "Whether the campaign includes account/survey branding."
},
"save_account_disclaimer": {
"type": "boolean",
"description": "Also save this disclaimer as the account default."
}
},
"required": [
"slug"
]
}send_survey_campaign_test
Send one saved campaign to test email addresses before queueing the real recipients.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"test_emails": {
"type": [
"array",
"string"
],
"description": "Test recipient emails as an array or comma/newline-separated string.",
"items": {
"type": "string"
}
},
"emails": {
"type": [
"array",
"string"
],
"description": "Alias for test_emails."
},
"test_email": {
"type": "string",
"description": "Single test email alias."
},
"email": {
"type": "string",
"description": "Single test email alias."
}
},
"required": [
"slug",
"campaign_id"
]
}send_survey_campaign
Queue a campaign send. scope=auto enforces the Dayalogs warmup-first workflow.
auto, warmup, remaining, failedView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"campaign_id": {
"type": "integer",
"description": "Survey campaign id."
},
"id": {
"type": "integer",
"description": "Alias for campaign_id."
},
"scope": {
"type": "string",
"enum": [
"auto",
"warmup",
"remaining",
"failed"
],
"description": "Queue scope. Defaults to auto, which sends warmup first and remaining after warmup is complete."
}
},
"required": [
"slug",
"campaign_id"
]
}Reviews
12 toolslist_my_review_links
List active survey preview-review rounds where the authorized MCP user is a reviewer, including each personal review URL.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}list_review_rounds
List preview-review rounds for one survey.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
}
},
"required": [
"slug"
]
}create_review_round
Create a preview-review round with participants. This returns personal review URLs but does not send emails.
collaborative, privateca, es, enmanual, all_reviewed, date, date_or_allView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"name": {
"type": "string",
"description": "Review round name."
},
"description": {
"type": "string",
"description": "Optional reviewer-facing/internal description."
},
"visibility": {
"type": "string",
"enum": [
"collaborative",
"private"
],
"description": "collaborative lets reviewers see each other comments; private limits visibility."
},
"review_locale": {
"type": "string",
"enum": [
"ca",
"es",
"en"
],
"description": "Reviewer UI language for this round."
},
"close_mode": {
"type": "string",
"enum": [
"manual",
"all_reviewed",
"date",
"date_or_all"
],
"description": "How the round should close."
},
"closes_at": {
"type": "string",
"description": "ISO-8601 date/time required when close_mode is date or date_or_all."
},
"participants": {
"type": "array",
"description": "Review participants. Invitations are not emailed by this tool; returned review_url values can be sent later through campaigns.",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "Reviewer role. Defaults to comment."
}
},
"required": [
"email"
]
}
}
},
"required": [
"slug",
"name",
"participants"
]
}get_review_round
Get one preview-review round, including participants and comments.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}update_review_round
Update editable preview-review round metadata such as name, description, visibility, review language and close rules.
collaborative, privateca, es, enmanual, all_reviewed, date, date_or_allView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
},
"name": {
"type": "string",
"description": "Optional new review round name."
},
"description": {
"type": [
"string",
"null"
],
"description": "Optional reviewer-facing/internal description."
},
"visibility": {
"type": "string",
"enum": [
"collaborative",
"private"
],
"description": "collaborative lets reviewers see each other comments; private limits visibility."
},
"review_locale": {
"type": "string",
"enum": [
"ca",
"es",
"en"
],
"description": "Reviewer UI language for this round."
},
"close_mode": {
"type": "string",
"enum": [
"manual",
"all_reviewed",
"date",
"date_or_all"
],
"description": "How the round should close."
},
"closes_at": {
"type": [
"string",
"null"
],
"description": "ISO-8601 date/time required when close_mode is date or date_or_all."
}
},
"required": [
"slug",
"round_id"
]
}list_review_comments
List structured comments and replies for one preview-review round.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}add_review_participant
Add a participant to an open preview-review round. This returns the personal review URL but does not send an email.
comment, decisionView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
},
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "comment can comment/reply; decision can also decide comments in supported review UIs."
}
},
"required": [
"slug",
"round_id",
"email"
]
}create_review_comment
Create a comment or reply in a preview-review round. User-authorized OAuth tokens infer the author from the logged-in user; organization API keys must pass an author object.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
},
"body": {
"type": "string",
"description": "Comment body text."
},
"text": {
"type": "string",
"description": "Alias for body."
},
"kind": {
"type": "string",
"description": "Target kind such as survey, block, question, option or ending."
},
"target_kind": {
"type": "string",
"description": "Alias for kind."
},
"target_id": {
"type": "string",
"description": "Target fragment/question/item id."
},
"element_id": {
"type": "string",
"description": "Alias for target_id."
},
"label": {
"type": "string",
"description": "Human-readable target label."
},
"target_label": {
"type": "string",
"description": "Alias for label."
},
"parent_id": {
"type": "integer",
"minimum": 1,
"description": "Optional parent comment id to create a reply."
},
"author": {
"type": "object",
"description": "Optional author object for organization API keys without user context. Ignored for user-authorized OAuth tokens.",
"properties": {
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "Reviewer role. Defaults to comment."
}
},
"required": [
"email"
]
},
"participant": {
"type": "object",
"description": "Alias for author.",
"properties": {
"name": {
"type": "string",
"description": "Full reviewer name. Alternative to first_name/last_name."
},
"first_name": {
"type": "string",
"description": "Reviewer first name."
},
"last_name": {
"type": "string",
"description": "Reviewer last name."
},
"email": {
"type": "string",
"description": "Reviewer email."
},
"role": {
"type": "string",
"enum": [
"comment",
"decision"
],
"description": "Reviewer role. Defaults to comment."
}
},
"required": [
"email"
]
}
},
"required": [
"slug",
"round_id"
]
}decide_review_comment
Accept, reject, resolve or mark a review comment as applied. Do not decide comments unless the user has explicitly approved each individual decision; requires confirm_decision=true after that approval. This is MCP-only and requires a user-bound token with reviews:decide; organization API keys cannot decide.
approved, rejected, resolved, appliedapproved, rejected, resolved, appliedView input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"comment_id": {
"type": "integer",
"minimum": 1,
"description": "Review comment id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for comment_id."
},
"status": {
"type": "string",
"enum": [
"approved",
"rejected",
"resolved",
"applied"
],
"description": "Decision status to set on the comment."
},
"decision": {
"type": "string",
"enum": [
"approved",
"rejected",
"resolved",
"applied"
],
"description": "Alias for status."
},
"decision_note": {
"type": "string",
"description": "Optional decision note."
},
"note": {
"type": "string",
"description": "Alias for decision_note."
},
"confirm_decision": {
"type": "boolean",
"description": "Must be true only after the user explicitly approves this specific review comment decision. Without it, the tool returns confirmation guidance and does not mutate the comment."
}
},
"required": [
"slug",
"comment_id",
"status"
]
}send_review_invitation
Send the review invitation email for one existing review participant.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"participant_id": {
"type": "integer",
"minimum": 1,
"description": "Review participant id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for participant_id."
}
},
"required": [
"slug",
"participant_id"
]
}close_review_round
Close a preview-review round.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}export_review_comments
Export one preview-review round as structured JSON with participants, comments and target positions.
View input JSON schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Survey slug."
},
"round_id": {
"type": "integer",
"minimum": 1,
"description": "Review round id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for round_id."
}
},
"required": [
"slug",
"round_id"
]
}Branding & styles
11 toolsget_account_branding
Return account-level default respondent-facing branding, including logo and alignment.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}update_account_branding
Update account-level default branding settings such as logo alignment.
left, center, rightleft, center, rightView input JSON schema
{
"type": "object",
"properties": {
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Account default logo alignment."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
}
},
"required": []
}upload_account_logo
Upload the account default header logo from base64 content and optional alignment.
left, center, rightleft, center, rightView input JSON schema
{
"type": "object",
"properties": {
"content_base64": {
"type": "string",
"description": "Base64 image content. Data URLs are accepted."
},
"filename": {
"type": "string",
"description": "Original filename for metadata."
},
"mime_type": {
"type": "string",
"description": "image/png, image/jpeg or image/webp. Optional when content_base64 is a data URL."
},
"logo_alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Optional logo alignment to save with the upload."
},
"alignment": {
"type": "string",
"enum": [
"left",
"center",
"right"
],
"description": "Alias for logo_alignment."
}
},
"required": [
"content_base64"
]
}delete_account_logo
Remove the account default header logo.
View input JSON schema
{
"type": "object",
"properties": {},
"required": []
}list_styles
List base and custom styles available in the authenticated account.
View input JSON schema
{
"type": "object",
"properties": {
"include_css": {
"type": "boolean",
"description": "Include full CSS in the response. Defaults to false."
}
},
"required": []
}get_style
Return one custom style by id, optionally including generated CSS.
View input JSON schema
{
"type": "object",
"properties": {
"style_id": {
"type": "integer",
"minimum": 1,
"description": "Custom style id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for style_id."
},
"include_css": {
"type": "boolean",
"description": "Include full CSS. Defaults to true for get_style."
}
},
"required": [
"style_id"
]
}create_style
Create a custom respondent-facing style from a style config, CSS or generator answers.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": []
}import_style
Import and persist a validated style config or scoped CSS as a custom draft style.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": []
}clone_base_style
Clone a locked base style into an editable custom style.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"base_key": {
"type": "string",
"description": "Locked base style key to clone."
},
"name": {
"type": "string",
"description": "Optional new custom style name."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Optional initial status. Defaults to draft."
}
},
"required": [
"base_key"
]
}update_style
Update custom style metadata, status, config or scoped CSS.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"style_id": {
"type": "integer",
"minimum": 1,
"description": "Custom style id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for style_id."
},
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": [
"style_id"
]
}save_style_as
Duplicate an existing custom style under a new name and optional updated config, CSS or status.
draft, readyView input JSON schema
{
"type": "object",
"properties": {
"style_id": {
"type": "integer",
"minimum": 1,
"description": "Custom style id."
},
"id": {
"type": "integer",
"minimum": 1,
"description": "Alias for style_id."
},
"name": {
"type": "string",
"description": "Style name."
},
"slug": {
"type": "string",
"description": "Optional style slug for update."
},
"status": {
"type": "string",
"enum": [
"draft",
"ready"
],
"description": "Style status. Ready styles can be assigned to surveys."
},
"base_key": {
"type": "string",
"description": "Base style key used by generated configs."
},
"css": {
"type": "string",
"description": "Scoped CSS using only allowed Dayalogs survey selectors."
},
"config": {
"type": "object",
"description": "Dayalogs style-config JSON object."
},
"theme": {
"type": "object",
"description": "Alias for config."
},
"definition": {
"type": "object",
"description": "Alias for config."
},
"config_json": {
"type": "string",
"description": "Style config encoded as JSON."
},
"answers": {
"type": "object",
"description": "Generator answer object for quick style generation."
}
},
"required": [
"style_id"
]
}