Duplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request.
Which fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once — ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option’s value. Never invent a value for a field that came with options, and never pick one on the user’s behalf.
summary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm — the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it.
identifier is the new event’s URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix.
status: NEEDS_INPUT (mandatory fields missing — see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal — do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message).
Report the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects — only announce, from automationNotices, that they are being created.
MCP-only: this tool has no equivalent Public API endpoint.
The Zuddl event ID (UUID) to duplicate. Always supplied by the user -- never inferred from a linked Slack/Teams channel. Source it from a prior search_event call when the user names an event instead of giving an ID.
The new event's settings. title, startDateTime, endDateTime and tz are always required; description is additionally required when the source event is a FIELD or WEBINAR event; externalSession.externalAccountId is required when the source is a Zoom-hosted webinar. Set addressDetails only from a place the user explicitly picked, never from raw prompt text.
Omit or false to preview. Pass true ONLY after the user has seen the summary from a previous call and explicitly agreed.
Response
200
A JSON-RPC tools/call result. The tool's output is in content.
Was this page helpful?
⌘I
{"docsConfig":{"theme":"linden","$schema":"https://mintlify.com/docs.json","name":"Zuddl guides","colors":{"primary":"#843DF5","light":"#843DF5","dark":"#843DF5"},"logo":{"light":"https://mintcdn.com/zuddl-2f3d3563/t-oKtTCoPeeFOd0s/logo/ZuddlLogo.svg?fit=max\u0026auto=format\u0026n=t-oKtTCoPeeFOd0s\u0026q=85\u0026s=c7c00bcb1a029f560a632baf30c667c2","dark":"https://mintcdn.com/zuddl-2f3d3563/t-oKtTCoPeeFOd0s/logo/ZuddlLogo.svg?fit=max\u0026auto=format\u0026n=t-oKtTCoPeeFOd0s\u0026q=85\u0026s=c7c00bcb1a029f560a632baf30c667c2"},"favicon":"https://mintcdn.com/zuddl-2f3d3563/1Pl9TGqjTCvT_S3j/zuddl-favicon.png?fit=max\u0026auto=format\u0026n=1Pl9TGqjTCvT_S3j\u0026q=85\u0026s=4c00d397a8c532b2104e72db097fc68a","appearance":{"default":"light","strict":true},"footer":{"socials":{"x":"https://x.com/WeareZuddl","linkedin":"https://www.linkedin.com/company/zuddl"}},"fonts":{"family":"Inter","weight":400},"styling":{"latex":false},"background":{"color":{"light":"#fbf9ff","dark":"#0d0b12"}},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"zuddl-2f3d3563","hasAudioNarration":false,"actualSubdomain":"zuddl-2f3d3563","customDomains":["docs.zuddl.com"],"gitSource":{"type":"github","owner":"zuddl","repo":"mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adb610d83455fcb7aaddf8e","collectionId":"92120957-4899-4069-8d4c-b8bf3e75ddb3","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb610d83455fcb7aaddf8e"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae048af91659a327f7b5db0","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Docs","count":76},{"language":"default","tag":"Core modules","count":65},{"language":"default","tag":"Webhook Reference","count":43},{"language":"default","tag":"API Reference","count":40},{"language":"default","tag":"APIs","count":38},{"language":"default","tag":"AttendeeEngagementWebhooks","count":14},{"language":"default","tag":"Ticketing \u0026 Payments","count":11},{"language":"default","tag":"RegistrationStatusesWebhooks","count":10},{"language":"default","tag":"Sessions","count":10},{"language":"default","tag":"Studio","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"#page-title,sidebar{color:#320972!important}#navbar-transition{background-color:#320972!important;background:#320972!important}body:not(.dark) .NavBarLink,body:not(.dark) .nav-tabs-item{color:#fff!important}body:not(.dark) .NavBarLink:hover,body:not(.dark) .nav-tabs-item:hover{color:#98a2b3!important}#navigation-items>div:nth-of-type(2){margin-top:0!important}#assistant-entry-mobile svg,#search-bar-entry-mobile svg{color:#fff!important;transition:color .2s ease}#assistant-entry-mobile svg:hover{color:#9ca3af!important}#search-bar-entry-mobile svg{border-color:#fff!important;background-color:#fff!important}#search-bar-entry-mobile svg:hover{background-color:#9ca3af!important}#sidebar-title{font-weight:700}.sidebar-group-header{margin-bottom:0!important;position:sticky;top:0;background:0 0;z-index:10}#sidebar-group{margin-bottom:16px!important}"}],"page":{"pagePath":"mcp-reference/events/duplicate-event","slug":"/mcp-reference/events/duplicate-event","pageMetadata":{"title":"Duplicate Event","description":"**Tool name:** `v1_duplicate_event` · **Behaviour:** ✏️ Write\n\nDuplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request.\nWhich fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option's value. Never invent a value for a field that came with options, and never pick one on the user's behalf.\nsummary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it.\nidentifier is the new event's URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix.\nstatus: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message).\nReport the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created.\n\n**MCP-only:** this tool has no equivalent Public API endpoint.","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_duplicate_event","href":"/mcp-reference/events/duplicate-event","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Tool name:\"\n }), \" \", _jsx(_components.code, {\n children: \"v1_duplicate_event\"\n }), \" · \", _jsx(_components.strong, {\n children: \"Behaviour:\"\n }), \" ✏️ Write\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Duplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request.\\nWhich fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once — ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option’s value. Never invent a value for a field that came with options, and never pick one on the user’s behalf.\\nsummary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm — the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it.\\nidentifier is the new event’s URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix.\\nstatus: NEEDS_INPUT (mandatory fields missing — see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal — do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message).\\nReport the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects — only announce, from automationNotices, that they are being created.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"MCP-only:\"\n }), \" this tool has no equivalent Public API endpoint.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Duplicate Event","description":"**Tool name:** `v1_duplicate_event` · **Behaviour:** ✏️ Write\n\nDuplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request.\nWhich fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option's value. Never invent a value for a field that came with options, and never pick one on the user's behalf.\nsummary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it.\nidentifier is the new event's URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix.\nstatus: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message).\nReport the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created.\n\n**MCP-only:** this tool has no equivalent Public API endpoint.","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_duplicate_event","href":"/mcp-reference/events/duplicate-event","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/zuddl-2f3d3563/e3b0c44298fc1c14/index.js","/_mintlify/custom/zuddl-2f3d3563/7688de4aa4708809/mcp-links.js"],"openApiReferenceData":{"operation":{"tags":["Events"],"summary":"Duplicate Event","description":"**Tool name:** `v1_duplicate_event` · **Behaviour:** ✏️ Write\n\nDuplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request.\nWhich fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option's value. Never invent a value for a field that came with options, and never pick one on the user's behalf.\nsummary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it.\nidentifier is the new event's URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix.\nstatus: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message).\nReport the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created.\n\n**MCP-only:** this tool has no equivalent Public API endpoint.","operationId":"v1_duplicate_event","requestBody":"94fdd051-2040-48f8-b487-5e9969bea18f","responses":{"200":"510f7f72-b53d-4b34-ba05-27920492bab4"},"x-mcp-annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"x-mint":{"metadata":{"playground":"none"}},"method":"post","type":"path","servers":["1d18b86c-7788-4642-b7dd-e742dff72e19"],"security":["03703fe3-7f18-4872-b9e9-d9cd2fe6d1fc"],"path":"/tools/v1_duplicate_event","baseUrlOptions":["https://setup.zuddl.com/api/mcp"],"title":"Duplicate Event","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"description":"The tool's `arguments`, as sent in a JSON-RPC `tools/call` request.","content":{"application/json":{"schema":{"type":"object","properties":{"eventId":{"type":"string","description":"The Zuddl event ID (UUID) to duplicate. Always supplied by the user -- never inferred from a linked Slack/Teams channel. Source it from a prior search_event call when the user names an event instead of giving an ID.","isRequired":true,"uniqueKey":"eventId","typeLabel":"string"},"request":{"type":"object","description":"The new event's settings. title, startDateTime, endDateTime and tz are always required; description is additionally required when the source event is a FIELD or WEBINAR event; externalSession.externalAccountId is required when the source is a Zoom-hosted webinar. Set addressDetails only from a place the user explicitly picked, never from raw prompt text.","properties":{"startDateTime":{"type":"string","format":"date-time","description":"Start of the new event, ISO-8601 with offset, e.g. 2026-09-05T10:00:00+05:30.","isRequired":true,"uniqueKey":"request.startDateTime","typeLabel":"string\u003cdate-time>"},"tz":{"type":"string","description":"IANA timezone for the new event, e.g. Asia/Kolkata. Ask the user — there is no default. The only value the server could fall back to is its own zone, which is not theirs.","isRequired":true,"uniqueKey":"request.tz","typeLabel":"string"},"addressDetails":{"type":"object","description":"Venue for the new event. Set ONLY from a place suggestion the user explicitly picked -- never from raw prompt text. Omit to create the event with no venue.","properties":{"name":{"type":"string","description":"Complete address of the venue, as returned by the place lookup.","isRequired":true,"uniqueKey":"request.addressDetails.name","typeLabel":"string"},"city":{"type":"string","description":"City.","uniqueKey":"request.addressDetails.city","typeLabel":"string"},"country":{"type":"string","description":"Country.","uniqueKey":"request.addressDetails.country","typeLabel":"string"},"latitude":{"type":"string","description":"Latitude of the picked place.","uniqueKey":"request.addressDetails.latitude","typeLabel":"string"},"locality":{"type":"string","description":"Street / locality line.","uniqueKey":"request.addressDetails.locality","typeLabel":"string"},"longitude":{"type":"string","description":"Longitude of the picked place.","uniqueKey":"request.addressDetails.longitude","typeLabel":"string"},"mapLink":{"type":"string","description":"Map link for the picked place.","uniqueKey":"request.addressDetails.mapLink","typeLabel":"string"},"placeId":{"type":"string","description":"Google Places place_id for the picked suggestion.","uniqueKey":"request.addressDetails.placeId","typeLabel":"string"},"placeTitle":{"type":"string","description":"Venue or property name, e.g. the hotel name.","uniqueKey":"request.addressDetails.placeTitle","typeLabel":"string"},"postalCode":{"type":"string","description":"Postal or ZIP code.","uniqueKey":"request.addressDetails.postalCode","typeLabel":"string"},"state":{"type":"string","description":"State or province.","uniqueKey":"request.addressDetails.state","typeLabel":"string"}},"required":["name"],"uniqueKey":"request.addressDetails","typeLabel":"object"},"communicationToggleValues":{"type":"boolean","description":"Carry each communication's enabled/disabled toggle state to the new event. Defaults to false: content and settings are duplicated but every toggle starts off. Only honoured for FIELD and WEBINAR sources.","uniqueKey":"request.communicationToggleValues","typeLabel":"boolean"},"components":{"type":"object","description":"Which parts of the source event to duplicate. Omit to duplicate everything applicable to this event type.","properties":{"accessGroups":{"type":"boolean","description":"Duplicate access groups. Defaults to true. Standard events only.","uniqueKey":"request.components.accessGroups","typeLabel":"boolean"},"communication":{"type":"boolean","description":"Duplicate communications. Defaults to true. Standard events only.","uniqueKey":"request.components.communication","typeLabel":"boolean"},"eventSetup":{"type":"boolean","description":"Duplicate event setup. Defaults to true. Standard events only.","uniqueKey":"request.components.eventSetup","typeLabel":"boolean"},"registration":{"type":"boolean","description":"Duplicate the registration form and settings. Defaults to true.","uniqueKey":"request.components.registration","typeLabel":"boolean"},"venueSetup":{"type":"boolean","description":"Duplicate venue setup. Defaults to true.","uniqueKey":"request.components.venueSetup","typeLabel":"boolean"}},"uniqueKey":"request.components","typeLabel":"object"},"description":{"type":"string","description":"Description for the new event. REQUIRED when the source event is a FIELD or WEBINAR event; optional otherwise.","uniqueKey":"request.description","typeLabel":"string"},"endDateTime":{"type":"string","format":"date-time","description":"End of the new event, ISO-8601 with offset. Must be after startDateTime. Omit to keep the source event's duration.","uniqueKey":"request.endDateTime","typeLabel":"string\u003cdate-time>"},"externalSession":{"type":"object","description":"External (Zoom) session setup. REQUIRED when the source event is a Zoom-hosted webinar; omit otherwise.","properties":{"externalAccountId":{"type":"string","description":"The connected Zoom account (Zoom user id) the duplicated webinar binds to. Permanently bound at creation.","isRequired":true,"uniqueKey":"request.externalSession.externalAccountId","typeLabel":"string"},"externalId":{"type":"string","description":"The external platform's session id. Required when setupMode is LINK_EXISTING.","uniqueKey":"request.externalSession.externalId","typeLabel":"string"},"passcode":{"type":"string","description":"Session passcode, if one is set on the external platform.","uniqueKey":"request.externalSession.passcode","typeLabel":"string"},"sessionType":{"type":"string","description":"MEETING or WEBINAR. Required when setupMode is LINK_EXISTING.","uniqueKey":"request.externalSession.sessionType","typeLabel":"string"},"setupMode":{"type":"string","description":"CREATE_NEW to provision a new external session, LINK_EXISTING to attach an existing one. Defaults to CREATE_NEW.","uniqueKey":"request.externalSession.setupMode","typeLabel":"string"}},"required":["externalAccountId"],"uniqueKey":"request.externalSession","typeLabel":"object"},"identifier":{"type":"string","description":"URL identifier (slug) for the new event, e.g. autumn-roadshow-2026. The setup UI prefills this from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. 3-128 characters, letters, numbers and hyphens only, unique within the organization. Omit it only if the user does not care — the server then generates one from the title with a random suffix, which is uglier.","uniqueKey":"request.identifier","typeLabel":"string"},"marketoProgram":{"type":"object","description":"Marketo program setup. REQUIRED when Marketo is active on the source event -- the choice is irreversible, so it is never defaulted. Call duplicate_event without it first: the NEEDS_INPUT violation lists the valid programs to choose from. Not applicable when Marketo is inactive.","properties":{"baseEventIntegrationId":{"type":"string","description":"The chosen option's value, taken VERBATIM from an option returned in the NEEDS_INPUT violation for this field -- either the literal SOURCE_EVENT_PROGRAM or an org base program id. Never pass a program id from anywhere else. Cannot be changed after duplication.","uniqueKey":"request.marketoProgram.baseEventIntegrationId","typeLabel":"string"}},"uniqueKey":"request.marketoProgram","typeLabel":"object"},"salesforceCampaignId":{"type":"string","description":"Salesforce campaign ID for the new event. Not copied from the source. Mandatory for some organizations: when it is, a NEEDS_INPUT violation names it -- ask the user for it, never invent or reuse the source event's.","uniqueKey":"request.salesforceCampaignId","typeLabel":"string"},"title":{"type":"string","description":"Name for the new event. Omit to reuse the source event's title.","uniqueKey":"request.title","typeLabel":"string"}},"required":["startDateTime","tz"],"isRequired":true,"uniqueKey":"request","typeLabel":"object"},"confirm":{"type":"boolean","description":"Omit or false to preview. Pass true ONLY after the user has seen the summary from a previous call and explicitly agreed.","uniqueKey":"confirm","typeLabel":"boolean"}},"required":["eventId","request"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"eventId":"\u003cstring>","request":{"startDateTime":"2023-11-07T05:31:56Z","tz":"\u003cstring>","communicationToggleValues":true,"components":{"accessGroups":true,"communication":true,"eventSetup":true,"registration":true,"venueSetup":true},"description":"\u003cstring>","endDateTime":"2023-11-07T05:31:56Z","identifier":"\u003cstring>","marketoProgram":{"baseEventIntegrationId":"\u003cstring>"},"salesforceCampaignId":"\u003cstring>","title":"\u003cstring>"},"confirm":true}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"510f7f72-b53d-4b34-ba05-27920492bab4":{"description":"A JSON-RPC `tools/call` result. The tool's output is in `content`.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"03703fe3-7f18-4872-b9e9-d9cd2fe6d1fc":{"oauth":{"type":"http","description":"OAuth 2.1 access token. MCP clients obtain it themselves (dynamic client registration + PKCE) when you connect them to the server URL above.","scheme":"bearer","scopes":[],"schemeName":"oauth"}}},"servers":{"1d18b86c-7788-4642-b7dd-e742dff72e19":{"url":"https://setup.zuddl.com/api/mcp","description":"Zuddl MCP server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","description":"OAuth 2.1 access token. MCP clients obtain it themselves (dynamic client registration + PKCE) when you connect them to the server URL above.","scheme":"bearer","scopes":[],"schemeName":"oauth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"OAuth 2.1 access token. MCP clients obtain it themselves (dynamic client registration + PKCE) when you connect them to the server URL above.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"oauth","name":"Authorization"}],"title":"oauth"}]},"originalFileLocation":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools"},"subdomain":"zuddl-2f3d3563","siteName":"Zuddl guides","title":"Duplicate Event - Zuddl guides","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T06:46:20.007Z","originalFileLocation":"mcp-reference/events/duplicate-event.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Tool name: v1_duplicate_event · Behaviour: ✏️ Write Duplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request. Which fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option\u0026#x27;s value. Never invent a value for a field that came with options, and never pick one on the user\u0026#x27;s behalf. summary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it. identifier is the new event\u0026#x27;s URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix. status: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message). Report the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created. MCP-only: this tool has no equivalent Public API endpoint.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Zuddl guides\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Duplicate Event - Zuddl guides\">\u003cmeta data-mint-head property=\"og:description\" content=\"Tool name: v1_duplicate_event · Behaviour: ✏️ Write Duplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request. Which fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option\u0026#x27;s value. Never invent a value for a field that came with options, and never pick one on the user\u0026#x27;s behalf. summary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it. identifier is the new event\u0026#x27;s URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix. status: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message). Report the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created. MCP-only: this tool has no equivalent Public API endpoint.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Zuddl guides\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.zuddl.com/mcp-reference/events/duplicate-event\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://zuddl-2f3d3563.mintlify.app/_mintlify/api/og/v2?division=Events\u0026amp;title=Duplicate+Event\u0026amp;description=**Tool+name%3A**+%60v1_duplicate_event%60+%C2%B7+**Behaviour%3A**+%E2%9C%8F%EF%B8%8F+Write%0A%0ADuplicate+an+existing+Zuddl+event+into+a+new+one.+PREVIEW-FIRST+and+two-step%3A+call+it+WITHOUT+con\u0026amp;theme=b9dd646c8cdd23fa741fcf41\u0026amp;signature=bb55a160e8ab1ee7fda8a271d75b0fdbf50703cdb5eff45e8831247588a4299c\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Duplicate Event - Zuddl guides\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Tool name: v1_duplicate_event · Behaviour: ✏️ Write Duplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request. Which fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option\u0026#x27;s value. Never invent a value for a field that came with options, and never pick one on the user\u0026#x27;s behalf. summary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it. identifier is the new event\u0026#x27;s URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix. status: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message). Report the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created. MCP-only: this tool has no equivalent Public API endpoint.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://zuddl-2f3d3563.mintlify.app/_mintlify/api/og/v2?division=Events\u0026amp;title=Duplicate+Event\u0026amp;description=**Tool+name%3A**+%60v1_duplicate_event%60+%C2%B7+**Behaviour%3A**+%E2%9C%8F%EF%B8%8F+Write%0A%0ADuplicate+an+existing+Zuddl+event+into+a+new+one.+PREVIEW-FIRST+and+two-step%3A+call+it+WITHOUT+con\u0026amp;theme=b9dd646c8cdd23fa741fcf41\u0026amp;signature=bb55a160e8ab1ee7fda8a271d75b0fdbf50703cdb5eff45e8831247588a4299c\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/zuddl-2f3d3563/-eTLRHyA-a5Vwfxt/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Zuddl guides\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#843DF5\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.zuddl.com/mcp-reference/events/duplicate-event\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/mcp-reference/events/duplicate-event.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.zuddl.com/#organization\",\"name\":\"Zuddl guides\",\"url\":\"https://docs.zuddl.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/zuddl-2f3d3563/t-oKtTCoPeeFOd0s/logo/ZuddlLogo.svg?fit=max\u0026auto=format\u0026n=t-oKtTCoPeeFOd0s\u0026q=85\u0026s=c7c00bcb1a029f560a632baf30c667c2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.zuddl.com#website\",\"name\":\"Zuddl guides\",\"url\":\"https://docs.zuddl.com\",\"publisher\":{\"@id\":\"https://docs.zuddl.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event#webpage\",\"url\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event\",\"name\":\"Duplicate Event\",\"description\":\"Tool name: v1_duplicate_event · Behaviour: ✏️ Write Duplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request. Which fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option's value. Never invent a value for a field that came with options, and never pick one on the user's behalf. summary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it. identifier is the new event's URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix. status: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message). Report the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created. MCP-only: this tool has no equivalent Public API endpoint.\",\"dateModified\":\"2026-10-27T06:46:20.007Z\",\"isPartOf\":{\"@id\":\"https://docs.zuddl.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"MCP Tools\",\"item\":\"https://docs.zuddl.com/mcp-reference/analytics/ask-zuddl-analytics\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Events\",\"item\":\"https://docs.zuddl.com/mcp-reference/events/search-events\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Duplicate Event\",\"item\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event#apireference\",\"headline\":\"Duplicate Event\",\"name\":\"Duplicate Event\",\"description\":\"Tool name: v1_duplicate_event · Behaviour: ✏️ Write Duplicate an existing Zuddl event into a new one. PREVIEW-FIRST and two-step: call it WITHOUT confirm to validate and get the summary, show that summary to the user, and only call again with confirm=true after they reply with an explicit yes. Never pass confirm=true on the first call, and never infer consent from the original request. Which fields are mandatory depends on the SOURCE event, so do not assume: a NEEDS_INPUT response lists every missing field at once -- ask the user for all of them in a single turn, then call again. When a violation carries options, those are the ONLY valid values: present them to the user as a numbered choice and pass back the chosen option's value. Never invent a value for a field that came with options, and never pick one on the user's behalf. summary.values tags each value SUPPLIED, PREFILLED_FROM_SOURCE or DEFAULT. Read back every PREFILLED_FROM_SOURCE and DEFAULT value explicitly, say where it came from, and invite the user to change it before they confirm -- the timezone and the end time in particular were chosen by the system, not by them. Never present a system-chosen value as though the user asked for it. identifier is the new event's URL slug. The setup UI prefills it from the title and lets the user edit it, so do the same: derive a slug from the new title, show it, and send what they agree to. Leave it out only if they do not care, in which case the server appends a random suffix. status: NEEDS_INPUT (mandatory fields missing -- see violations), NEEDS_CONFIRMATION (complete; show summary and automationNotices, then get an explicit yes), STARTED (queued; the new event exists but duplication is still running. Wait pollAfterSeconds (10s), then call get_event_duplication_status with newEventId, re-checking every nextPollInSeconds (10s) until terminal is true. Keep polling until it is terminal -- do NOT stop after one PENDING and leave the user without an outcome. Never report success before duplicationStatus is SUCCESS, and always give the user newEventUrl in the final message). Report the values used and the defaults applied. Do not report the Salesforce campaign, HubSpot marketing event, or Marketo program objects -- only announce, from automationNotices, that they are being created. MCP-only: this tool has no equivalent Public API endpoint.\",\"url\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event\",\"mainEntityOfPage\":{\"@id\":\"https://docs.zuddl.com/mcp-reference/events/duplicate-event#webpage\"},\"dateModified\":\"2026-10-27T06:46:20.007Z\",\"publisher\":{\"@id\":\"https://docs.zuddl.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.zuddl.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Zuddl guides\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Zuddl guides","nav":{"global":{},"tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":""}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"tab":"MCP Tools Reference","groups":[{"group":"MCP Tools Reference","pages":[{"title":"Introduction to the Zuddl MCP server","href":"/mcp-reference/introduction"}]},{"group":"MCP Tools","pages":[{"group":"Analytics","pages":[{"title":"Ask Zuddl Analytics","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/ask_zuddl_analytics","href":"/mcp-reference/analytics/ask-zuddl-analytics"}]},{"group":"Attendees","pages":[{"title":"Count Attendees","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/search_attendee_count","href":"/mcp-reference/attendees/count-attendees"},{"title":"Search Attendees","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/search_attendees","href":"/mcp-reference/attendees/search-attendees"},{"title":"Update Registration Status","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/update_registration_status","href":"/mcp-reference/attendees/update-registration-status"},{"title":"Check In Attendee to Event","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_checkin_event_attendee","href":"/mcp-reference/attendees/check-in-attendee-to-event"},{"title":"Check Out Attendee from Event","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_checkout_event_attendee","href":"/mcp-reference/attendees/check-out-attendee-from-event"},{"title":"Get Attendee Details","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_get_attendee","href":"/mcp-reference/attendees/get-attendee-details"},{"title":"List Attendees","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_attendees","href":"/mcp-reference/attendees/list-attendees"},{"title":"Register Attendee","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_register_attendee","href":"/mcp-reference/attendees/register-attendee"}]},{"group":"Events","pages":[{"title":"Search Events","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/search_event","href":"/mcp-reference/events/search-events"},{"title":"Create Event","description":"**Tool name:** `v1_create_event` · **Behaviour:** ✏️ Write\n\nCreate an event in the user's Zuddl organization. Handles conferences, virtual events, webinars, field events and third-party events — set eventType, and for a conference or virtual event also set eventFormat. CONFIRM WITH THE USER BEFORE CALLING THIS. Creating an event is not reversible from here. Restate what you are about to create — title, type and format, start and end with the timezone, and the team — name anything you chose rather than were told, and get an explicit yes. Do not call this in the same turn the user first mentions the event, and never to \"see what happens\". title and description must come from the user: ask for them and use their words rather than inventing something plausible. The timezone you may suggest when the conversation gives you a real basis, but say so and let them correct it. Call v1_list_teams first, every time, and take teamId from what it returns — never from memory or an earlier session. brandKitId comes from v1_list_brand_kits the same way. Tags and languages are given by name and resolved for you, and an unknown or ambiguous name comes back with the available options rather than a guess — nothing is created in that case. A NEEDS_INPUT response lists EVERY missing or inapplicable field for that event type at once, and nothing has been created — ask the user for all of them in one message, then call again. Read any DEFAULT values in resolvedPlan back to the user afterwards, and mention any warnings: a brand kit can fail to link without failing the create.\n\n**Same as Public API:** [Create an event](/api-reference/events/create-an-event) (`POST /v1/events`)","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_create_event","href":"/mcp-reference/events/create-event"},{"title":"Duplicate Event","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_duplicate_event","href":"/mcp-reference/events/duplicate-event"},{"title":"Get Event Details","description":"**Tool name:** `v1_get_event` · **Behaviour:** 🔒 Read-only\n\nRetrieve the details of a specific event, webinar, or field event created in your Zuddl organization.\n\n**Same as Public API:** [Get event details](/api-reference/events/get-event-details) (`GET /v1/events/{eventId}`)","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_get_event","href":"/mcp-reference/events/get-event-details"},{"title":"Get Event Duplication Status","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_get_event_duplication_status","href":"/mcp-reference/events/get-event-duplication-status"},{"title":"List Events","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_events","href":"/mcp-reference/events/list-events"},{"title":"List Languages","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_languages","href":"/mcp-reference/events/list-languages"},{"title":"List Tags","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_tags","href":"/mcp-reference/events/list-tags"}]},{"group":"Registration flows \u0026 tickets","pages":[{"title":"Search Registration Flows","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/search_flow","href":"/mcp-reference/registration-flows-\u0026-tickets/search-registration-flows"},{"title":"Search Ticket Types","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/search_ticket_type","href":"/mcp-reference/registration-flows-\u0026-tickets/search-ticket-types"}]},{"group":"Sessions","pages":[{"title":"Add Session Files","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_add_session_files","href":"/mcp-reference/sessions/add-session-files"},{"title":"Add Session Speakers","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_add_session_speakers","href":"/mcp-reference/sessions/add-session-speakers"},{"title":"Check In Attendee to Session","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_checkin_session_attendee","href":"/mcp-reference/sessions/check-in-attendee-to-session"},{"title":"Check Out Attendee from Session","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_checkout_session_attendee","href":"/mcp-reference/sessions/check-out-attendee-from-session"},{"title":"Create Session","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_create_session","href":"/mcp-reference/sessions/create-session"},{"title":"Get Session Details","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_get_session","href":"/mcp-reference/sessions/get-session-details"},{"title":"List Sessions","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_sessions","href":"/mcp-reference/sessions/list-sessions"},{"title":"Remove Session Files","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_remove_session_files","href":"/mcp-reference/sessions/remove-session-files"},{"title":"Remove Session Speakers","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_remove_session_speakers","href":"/mcp-reference/sessions/remove-session-speakers"},{"title":"Update Session","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_update_session","href":"/mcp-reference/sessions/update-session"}]},{"group":"Locations","pages":[{"title":"Create Location","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_create_location","href":"/mcp-reference/locations/create-location"},{"title":"Delete Location","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_delete_location","href":"/mcp-reference/locations/delete-location"},{"title":"Get Location Details","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_get_location","href":"/mcp-reference/locations/get-location-details"},{"title":"List Locations","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_locations","href":"/mcp-reference/locations/list-locations"},{"title":"Update Location","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_update_location","href":"/mcp-reference/locations/update-location"}]},{"group":"Speakers","pages":[{"title":"Create Speaker","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_create_speaker","href":"/mcp-reference/speakers/create-speaker"},{"title":"Get Speaker Details","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_get_speaker","href":"/mcp-reference/speakers/get-speaker-details"},{"title":"List Speakers","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_speakers","href":"/mcp-reference/speakers/list-speakers"},{"title":"Update Speaker","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_update_speaker","href":"/mcp-reference/speakers/update-speaker"},{"title":"Upload Speaker Picture","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_upload_speaker_pic","href":"/mcp-reference/speakers/upload-speaker-picture"}]},{"group":"Sponsors","pages":[{"title":"Create Sponsor","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_create_sponsor","href":"/mcp-reference/sponsors/create-sponsor"},{"title":"Get Sponsor Details","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_get_sponsor","href":"/mcp-reference/sponsors/get-sponsor-details"},{"title":"List Sponsors","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_sponsors","href":"/mcp-reference/sponsors/list-sponsors"},{"title":"Update Sponsor","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_update_sponsor","href":"/mcp-reference/sponsors/update-sponsor"},{"title":"Upload Sponsor Image","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_upload_sponsor_image","href":"/mcp-reference/sponsors/upload-sponsor-image"}]},{"group":"Brand Kits","pages":[{"title":"List Brand Kits","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_brand_kits","href":"/mcp-reference/brand-kits/list-brand-kits"}]},{"group":"Teams","pages":[{"title":"List Teams","deprecated":null,"version":null,"playground":"none","openapi":"https://api.prod.zuddl.com/api/v3/api-docs/mcp-tools post /tools/v1_list_teams","href":"/mcp-reference/teams/list-teams"}]}]}]},{"tab":"Webhook Reference","pages":[{"title":"Webhook Reference","href":"/api-reference/ticketingwebhooks/add-on-modified-activity"}]},{"tab":"Help Center","href":"https://support.zuddl.com/"}]},"title":"Duplicate Event - Zuddl guides","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","clsx-rL8ZCCw4.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-aeztFa9U.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BywkCr5C.js"]}