Create an editable chat draft with assistant site tools

A compatible assistant can help turn your requested dialogue into a Textelling draft while visiting the site. The result is an editor project that you review and export yourself. This guide documents visited-page tools, without promising that an assistant elsewhere will discover or recommend Textelling.

Visit the page in a compatible browser client

Open the chat-story page as a top-level page in a client exposing the browser site-tool registration interface. Registration requires both registerTool and unregisterTool; an ordinary browser or an embedded frame may not expose these tools. Availability depends on the actual browser and assistant client. A general request in another app is not a discovery guarantee.

The page also has a manual creation form if tools are unavailable. This flow does not require installing a separate MCP server. A public server MCP endpoint, cloud delivery and account integration are unavailable here; account-related code in the repository is not evidence of a publicly qualified service.

Read capabilities, then request a local draft

textelling_get_capabilities is read-only and accepts an empty object. It reports the supported presets, message limits, storage caveats and a nextRequestId. textelling_create_chat_story creates one simulated text draft from your chosen messages. It does not send messages to people, charge money or create an exported PNG or MP4.

Use destination: local for this documented flow. The schema also defines account, but that destination is unavailable here and is not a promised account-saving workflow. The only preset values are telegram.iphone.direct and whatsapp.android.direct. The locale is en or fr. Supply a fresh requestId UUID, title (1–120 trimmed characters), contactName and selfName (1–48 trimmed characters each), and messages (1–40 entries). Each entry has speaker: contact or self and nonblank text of at most 1000 characters. Extra fields are rejected.

This example uses exactly the accepted fields. Its UUID illustrates the format: generate a fresh UUID for a new request, or use nextRequestId from capabilities rather than copying this identifier into repeated new stories.

{
  "requestId": "47e2aaca-7c81-48c9-83bd-2574c09d0435",
  "destination": "local",
  "preset": "telegram.iphone.direct",
  "locale": "en",
  "title": "The picnic plan",
  "contactName": "Maya",
  "selfName": "You",
  "messages": [
    {
      "speaker": "contact",
      "text": "Did you bring something for the picnic?"
    },
    {
      "speaker": "self",
      "text": "An excellent appetite."
    }
  ]
}

Retry without creating conflicting requests

For a retry, keep the same requestId and the exact same input. If you change any input, including a name, message, preset, locale or destination, use a new UUID. Reusing an identifier with changed input returns idempotency_conflict. A busy response means another creation is in progress; wait for that attempt before retrying the identical request.

invalid_input means the request does not satisfy the schema: check field names, lengths, speaker values and UUID format. session_unavailable means the request journal cannot be used; check site storage permissions rather than cycling through new identifiers. storage_unavailable also requires checking browser storage. creation_unconfirmed means a write may have happened: retry the identical input and identifier. project_missing means a recorded project is no longer available; do not treat its old URL as a downloadable file. session_request_limit means the session journal has reached its bound; repeated new IDs do not resolve it. Preserve any existing work before changing browser data or sessions.

Open the result and export separately

A successful local result includes ok: true, url, projectId, storage: browser-local and publicShare: false. Open the returned url in the same browser profile on the same site. It is an editor URL, not a public share URL or an exported file, and it does not transfer storage to another device. Review the names, text, order and timing before using the existing PNG or MP4 controls.

Export checks remain in force after draft creation. In Free, supported device exports retain a watermark and Guest/Free video cannot exceed 90 seconds. Creating a local draft does not activate paid features, AI image generation, voiceover, MultiChat or server video rendering. No claim is made that publishing this guide causes assistants to learn, rank or recommend the product.

All guides

Privacy in Free mode

Projects and media in the guest export flow are processed on your device. The server receives page and asset requests and export authorization requests; operational logs may include IP addresses and request paths. Instagram receives a request only if you choose its link.