Your writing, connected.

Work on your Dialogue projects with Claude or ChatGPT.

Copy the complete URL, including /mcp. Sign in to Dialogue when your assistant prompts you. Your projects stay in Firebase.

Opening this site does not connect an account or run a writing request. Connector availability depends on your assistant account and workspace permissions.

  1. Add a custom connectorIn Claude, open Customize → Connectors → + Add → Add custom connector.
  2. Paste the URL and choose OAuthUse Register automatically for the OAuth client.
  3. Sign in and start writingApprove Dialogue access, then enable the connector in your conversation.

Documentation

Write with your connected assistant

Ask Claude or ChatGPT to work on your existing Dialogue projects in plain language. The assistant reads the project through tools, develops your changes, and saves them back to Firebase. Your signed-in web and mobile apps receive the saved updates.

Start with a project

  1. Complete the connection steps above, then enable the Dialogue connector in the assistant conversation you want to use.
  2. Ask it to find your project by name and read it. If names repeat, identify the exact project before asking for edits.
  3. Describe the scene, outline section, card, or character you want to work on. The assistant looks up the saved IDs for you.
  4. Ask it to save the change. A successful write returns saved: true; the project then updates in Dialogue.

For a review first, ask the assistant to show a proposed revision in the conversation and wait for your instruction to save. You can also use the connector only to read, summarize, or discuss a project.

Create projects and outline sections in Dialogue first. The connector currently edits existing projects; it has no project-creation or section-creation tool.

Example prompts

Replace the example project, scene, and character names with your own. Say “use Dialogue” so your assistant uses the project tools.

Explore without editing

Use Dialogue to find my project “Northbound.” Read its cast and outline, then summarize the story and list its scenes. Do not save any changes.

Continue a scene

Use Dialogue to read the train-platform scene in “Northbound.” Append a short action beat and two lines of dialogue between its existing characters. Keep the tone restrained and save the additions.

Revise existing writing

Use Dialogue to read the train-platform scene in “Northbound.” Show me a tighter version of Mara’s last line. Wait for me to approve the wording before saving it.

Develop an outline

Use Dialogue to read the “Northbound” outline. Add three new beat cards to its existing “Act II” section, building toward the midpoint. Keep the existing cards and attachments.

Develop the cast

Use Dialogue to read “Northbound.” Analyze each character’s role and objective, then update those two fields for the existing cast. Preserve the screenplay and outline.

Add a character

Use Dialogue to add a character named Ellis to “Northbound,” with the role “Station attendant” and the objective “Keep the platform clear before the last train.”

Attach an image you already have

Use Dialogue to find the “Last train” outline card in “Northbound.” Set its image to the HTTP or HTTPS image URL I provide. Keep its title and description.

All six tools

Your assistant supplies these arguments. You can normally describe your task in words; this reference is useful when directing a precise workflow or building another MCP client.

ToolArgumentsResult
list_projects{}Your owned screenplays, stories, and outlines with their IDs and names. Unsupported records are marked unavailable.
get_projectprojectIdThe full project, cast, writing blocks, outline cards, sections, scene IDs, and current version.
get_sceneprojectId, sceneIdThe selected scene’s blocks, the project cast, and current version.
list_requests{}Pending AI-mode requests from your account, with their instructions and targets.
get_requestrequestIdA request’s instruction, project and optional scene/character/section/card context, kind, and status.
apply_project_changesprojectId, expectedVersion, changeId, changes; optional requestIdA saved receipt. Applies the entire batch atomically, or rejects it without a partial save.

The first five tools read data. apply_project_changes is the only tool that changes a project.

All seven edit operations

A single changes batch contains 1–30 operations on one project. Expand an operation to see every supported field. Fields not listed in its schema are rejected.

append_blocks · Add scene writing

Inserts 1–30 new blocks at the end of an existing scene, before the next scene heading. New block IDs are assigned automatically. This operation is for screenplays and stories.

operation
"append_blocks"
sceneId
A scene ID returned by a read, such as scene:heading-block-id. Use opening for writing before the first scene heading.
blocks
An array of objects containing type, text, and characterId.

type is scene, action, dialogue, or transition. Each text is at most 50,000 characters. Dialogue needs an existing character ID; every other block type needs characterId: null.

update_block · Revise existing text
operation
"update_block"
blockId
An existing writing block’s ID from the current project or scene.
text
Replacement text, at most 50,000 characters.

Preserves the block ID, type, speaker, and attached image. This operation updates text only.

append_outline_cards · Add outline beats
operation
"append_outline_cards"
sectionId
An existing section ID from get_project.
cards
1–20 objects, each with title, description, and optional color.

A title is 1–120 characters; a description is at most 8,000. Color defaults to cream. All color options are cream, sky, mint, pink, lavender, and peach. New card IDs are assigned automatically.

update_outline_card · Revise a beat
operation
"update_outline_card"
cardId
An existing outline card’s ID.
title
Replacement title, 1–120 characters.
description
Replacement description, at most 8,000 characters.

Both text fields are required. Preserves the card’s ID, section, color, and media.

set_outline_media · Attach an image URL
operation
"set_outline_media"
cardId
An existing outline card’s ID.
imageUrl
An HTTP or HTTPS image URL that your apps can load.

Sets the card’s media to this image, replacing any previous media. Keeps its title and description. The tool stores a URL; image generation, file upload, and image hosting must happen elsewhere.

add_character · Expand the cast
operation
"add_character"
name
1–120 characters.
role
Optional, at most 240 characters; defaults to an empty string.
objective
Optional, at most 2,000 characters; defaults to an empty string.

Assigns a new character ID and the default blue color. Read the project again to obtain the assigned ID before using the character in dialogue.

update_character · Develop role and objective
operation
"update_character"
characterId
An existing cast member’s ID.
role
Replacement role, at most 240 characters.
objective
Replacement objective, at most 2,000 characters.

Both fields are required. Preserves the character’s ID, name, and color.

Read, then write

Use the exact version from the latest project or scene read as expectedVersion. Give each new write a fresh UUID changeId. If another session saves first, read the project again and reapply your intended change to the current content.

Retry an uncertain write with the same changeId and identical arguments. A successful identical retry returns alreadyApplied: true, preventing duplicate additions. Different arguments need a new change ID.

Example: save one action beat

This is an example apply_project_changes call. Replace the project, scene, and version with returned values, and use a fresh UUID for a real new write.

{
  "projectId": "your-project-id",
  "expectedVersion": "the-version-returned-by-get_project",
  "changeId": "123e4567-e89b-42d3-a456-426614174000",
  "changes": [
    {
      "operation": "append_blocks",
      "sceneId": "scene:your-heading-block-id",
      "blocks": [
        {
          "type": "action",
          "text": "The last train disappears into the fog.",
          "characterId": null
        }
      ]
    }
  ]
}

When completing a Dialogue AI request, also include its requestId at the top level.

Use AI mode from Dialogue

  1. In the mobile or web writer, turn on AI mode and submit your instruction. Outline actions can also prepare assistant requests.
  2. Dialogue saves outstanding project changes, creates a pending request, and shows a handoff with a prompt to copy.
  3. Paste that prompt into your connected assistant. It reads get_request, reads the current project, and saves supported edits with the matching requestId.
  4. A successful save marks the request completed. Dialogue shows that status and receives the updated project through Firebase.

You can also ask: “Use Dialogue to list my pending requests. Show me the instructions, then complete the one I choose.” Requests run when you ask the assistant to act; the queue does not run automatically.

Request kindContext and supported completion
writingAppend or update writing. An optional scene target confines the completion to that scene; character context may also be included.
outlineAppend or update outline cards. An optional section target confines the completion to that section.
analysisUpdate existing characters’ roles and objectives. Optional character context can guide the analysis.
imageSet an image URL on the specified card. The assistant must have an actual image capability or an existing usable image URL.

Request statuses are pending, completed, and cancelled. Cancel a pending request in its Dialogue handoff. A cancelled or completed request cannot be completed again with a different write.

The model runs in Claude or ChatGPT. This connector does not embed a personal assistant subscription inside Dialogue, generate images itself, or automatically run a prompt when you open an assistant link.

Choose access and manage connections

projects.read
Required for project and request reads. A read-only connection can summarize, review, and propose changes in the assistant conversation.
projects.write
Optional editing access, requested alongside read access. Enables apply_project_changes.

Consent grants account-wide access to projects you own, rather than access to one selected project. Projects shared with you by someone else are not exposed as your source projects. Selecting an AI request supplies its task context; it does not change the connection’s account-wide scopes.

Use Dialogue Settings → Connected assistants to see actual connections and revoke access. On mobile, this is under Settings → Writing → Connected assistants. Revocation blocks subsequent project access immediately. Reconnect and approve the desired scopes when you want to restore access.

Current boundaries

These tools support the edits listed above. They do not create or delete projects, delete or reorder blocks/cards, create or reorder outline sections, rename existing characters, edit sharing permissions, manage billing or keys, select models, upload files, or export documents. Existing image/video attachments are preserved by text edits; setting an image explicitly replaces that card’s media.

Before-images are recorded server-side for saved edits, but the connector has no undo or restore tool. Use Dialogue’s own controls for actions outside the tool set.

Troubleshooting

The assistant replies, but nothing changes
Make sure Dialogue is enabled in that conversation and ask it to use the Dialogue tools to save. A proposed draft in the conversation is not a saved edit. For an AI-mode request, the save must include its requestId to mark it completed.
Sign in / reconnect / invalid token
Reconnect from the assistant and sign in to the intended Dialogue account. Expired access tokens can normally be refreshed by the client. Revoked connections or rejected refresh grants require a new connection.
Editing access is missing
The grant may be read-only. Reconnect with projects.read projects.write; the consent page shows the requested access.
Project or request not found
Check the account and use IDs returned by the tools. Only owned projects and your own requests are accessible. Requests are separate from project IDs.
The project changed / conflict
Read the current project again. Reconcile the intended change with the new content and use the new version and a new change ID. The rejected batch has not partially saved.
Wrong scene, section, card, or request target
Read the request and current project, then use their exact IDs. Scene names are not unique identifiers. A request-completion write must match its kind and target.
Invalid tool arguments
Use the operation’s listed fields, valid enum values, and current IDs. Dialogue blocks require an existing character ID; other block types require null. Respect field and batch limits.
A project is unavailable or has unsupported changes
Open it in Dialogue and resolve the format or external-edit issue before retrying. The connector rejects records it cannot safely interpret.
Request cancelled or already completed
Create a new request for new work. An identical retry of the original successful write can still return its existing receipt.
Too many requests
Pause and retry after the hourly limit renews. Repeated retries count toward usage.

Technical reference

For MCP client developers and precise tool-directed workflows.

Identifiers and response handling

Use IDs returned by list_projects, get_project, and request reads. Outlines stored as native timelines have a timeline: project-ID prefix; retain that prefix. Native outline section and card IDs may include section: and beat:.

Scene IDs are scene:<heading-block-id>, or opening for content before the first scene heading. IDs are at most 128 characters and accept letters, numbers, colons, underscores, and hyphens.

Read results are JSON inside MCP text content. Tool failures return isError: true with a message; HTTP 200 alone does not confirm a save. Successful writes return saved: true and their changeId. Identical retries also return alreadyApplied: true.

Limits and batch sizes
  • Project listing: up to 100 screenplay/story records and 100 native outline records per call; no pagination argument.
  • Pending requests: up to 50 per listing; request instructions are at most 8,000 characters.
  • Writes: 1–30 operations per batch; each append supports up to 30 writing blocks or 20 outline cards.
  • Project totals: up to 500 characters, 20,000 writing blocks, 1,000 outline cards, and 50 custom outline sections, subject to the project schema.
  • Account limits: 1,000 tool calls and 120 new AI requests per server hour, shared across that account’s connections.
  • OAuth limits per IP per server hour: 30 client registrations, 100 authorization starts, and 300 token exchanges.
  • HTTP JSON request body: up to 512 KB. Large edits may need smaller batches; re-read between saved batches.
Other MCP clients and authentication

Use the connector URL above as the resource. The transport is Streamable HTTP: JSON-RPC POST with Accept: application/json, text/event-stream. There is no separate GET/SSE stream. An HTML browser visit displays this guide.

Discovery is available at /.well-known/oauth-protected-resource and /.well-known/oauth-authorization-server on this host. OAuth endpoints are /oauth/register, /oauth/authorize, /oauth/token, and /oauth/revoke.

Choose automatic client registration (DCR), OAuth authorization code with PKCE S256, and public-client authentication (token_endpoint_auth_method: none). Client registration accepts a name of 1–100 characters and 1–8 redirect URIs. HTTPS redirects are required except for explicit HTTP loopback addresses. The resource must exactly match the connector URL.

Request projects.read, optionally with projects.write. The default is both scopes. Authorization requests last 10 minutes; single-use authorization codes last 60 seconds. Access tokens last one hour. Refresh tokens rotate on use and last 30 days; replaying a used refresh token revokes the connection.

No provider API key or OAuth client secret is required. The client should handle the OAuth challenge and refresh automatically. Signed-out initialize/tool discovery is supported, while project and request tools require an authenticated grant.

Back to connection steps