woku_guide, which returns woku’s method and playbooks (from an intent to the sequence of tools), and design_voc_program, which proposes a listening program for your customer journey.
Tools by family
The server organizes tools by family. The live connection’stools/list response tells you which are available:
With this, an agent can design a listening program, summarize last week’s reviews, compare NPS across locations, approve an action plan, or create a tracker, all from the conversation.
Create a Woku or journey with media
upload_woku_media imports an image or MP4 video from a public HTTPS URL and returns a woku fileId. It also accepts a ChatGPT-authorized file through its file parameter when that capability is available on the connection. create_woku can use the fileId or import media in the same call. For a Woku moment within a journey, use set_journey_moment_media with the fileId; the journey creates its own instrument when that moment is evaluated.
When the file is on the computer running Codex or Claude Code, its terminal can upload it by multipart without putting the bytes in the conversation:
fileId, filename, and type. Supply the company key through the user’s environment or secret manager, never in prompt text. Images are converted to WebP with a 10 MB input limit; videos must be MP4 and at most 25 MB. The actual file format is checked, not just its name or Content-Type.
A remote MCP server cannot read ./product-photo.jpg on the user’s computer. ChatGPT can pass an authorized file to a tool that declares a file parameter, as described in its plugin documentation. Claude web connects to remote MCP servers from Anthropic’s cloud and does not document the same automatic attachment handoff; use an HTTPS URL that woku can reach there. Claude remote connectors.
To create a journey without authoring the full definition by hand, call woku_guide with topic=customer_journeys. propose_journey interprets three free-text answers: experience, ordered moments, and objectives. With approval, create_journey_from_brief saves a disabled journey. Then upload any needed images, connect each moment’s webhook, review recipients, and activate with update_journey. None of these creation tools sends evaluations on its own.
To preserve a reviewed proposal, pass the draft returned by propose_journey as proposal to create_journey_from_brief, together with the original answers and confirm: true. This saves it without another model call. Omitting proposal generates a fresh proposal. toolSpec.descriptionEn preserves the Woku’s English title; unsupported moment fields return an error instead of being silently discarded.
Toolsets
The catalog is large, so a connection can narrow it. Adding?toolsets=nps,clients (comma-separated) to the MCP endpoint URL exposes only those families; without the parameter, or with ?toolsets=all, everything is exposed. The guide, company, and search families are always available.
Universal search
Thesearch and fetch tools follow ChatGPT’s deep research contract: search searches across all company data and fetch brings the detail of a result.
Read and write
Connections handle two permissions:mcp:read to query data and mcp:write for the tools that create, edit, or delete. Read tools work with mcp:read alone; write tools also require mcp:write, and destructive ones (for example delete_woku) or sends (for example send_nps_invitations) additionally require confirm: true in the call, so nothing is deleted or sent without an explicit confirmation.
If the connection does not have the mcp:write permission, the write tools respond with an error indicating so and the rest keep working normally.
The list of tools the server advertises on a live connection (tools/list) is always the authoritative answer about what is available.
Per-moment webhook content
create_journey, update_journey, and an approved proposal accept the complete moment configuration. Content source (webhook.contentMode) is independent of the trigger. For dynamic content, use an object-root webhook.schema and toolScope: "per_enrollment".
webhook.payload.clientFields maps extra customer data with {key, path}. Under webhook.content, description, descriptionEn, localized subject and audience variables, and folder keys and names accept {mode: "literal" | "javascript", value}. JavaScript receives payload and returns a string; imports, network and filesystem access are unavailable. Woku can read its image from imageUrlPath and trackers from a list of {name, path}. A parent requires a child folder; omitted names use their keys and must fit folder-name limits.
MCP keeps cadence for sends and windows; HTTP uses sequence. Send the complete list when replacing moments. preview_journey_moment uses the saved moment without verifying signatures or sending. Reads never return secrets; configure them separately with per-moment credential tools. Unknown fields and secrets inside the definition return an error.