DEVELOPERS

Build on the
creative workflow.

Connect an agent to the free, no-account MCP handoff. It prepares editable copy for your app; you finish a real creative with your own media in the browser.

What works in the free beta: The free browser studio makes a clean single carousel ZIP or video, plus an optional handoff ZIP with the output, cover when available, caption, and checksum manifest. Three-output packs remain watermarked. Video downloads as MP4 or WebM depending on the browser. GitLab sign-in can save app facts and create personal API tokens; email-link delivery is not open yet. Private asset uploads, asset-based batch preparation, quotes, and hosted clean renders are not available in the free beta yet.

Choose the result you need

  • Free browser Studio + copy-prep MCP. /mcp-free returns three editable drafts and a Studio link. You add owned media, review, and download in Studio. The remote tool returns no finished file. Connect the free MCP, or paste a draft from any chat.
  • Optional experimental local companion. A desktop client with local stdio support can request a file saved on your computer after visible personal review. A fresh-process repeat failed before returning its second file; dependable repeat delivery is not established. Use local setup and doctor only if you can fall back to browser Studio.
  • Hosted account/MCP rendering. /mcp is the separate authenticated account route. New hosted renders are closed here; connecting an account does not open admission. Existing unexpired outputs remain retrievable with authorized read access. Check current availability and deployment capabilities before using the account workflow.

Connect the free MCP

Use this exact remote MCP URL in a client that supports custom connections. No ReelParcel account, token, or OAuth sign-in is needed.

https://reelparcel.com/mcp-free

Checks ReelParcel endpoint reachability and free-tool discovery only.

A successful prepare_studio_batch call may be counted without storing your briefs or media. To opt out of that count, configure your MCP client to send DNT: 1 or X-ReelParcel-Analytics: off. The browser footer preference applies to browser events, not a separate agent connection. Privacy details →

Claude

  1. Where custom remote connectors are available, open Customize → Connectors, select + → Add custom connector, and enter the URL above.
  2. Add the connector, then enable it for your conversation from the + → Connectors menu. On a managed Team or Enterprise account, an owner first adds the URL under Organization settings → Connectors.

Claude’s current custom connector instructions →

Codex and ChatGPT desktop

  1. Open Settings → MCP servers → Add server. Name it reelparcel-free, choose Streamable HTTP, and enter the free MCP URL above. No token is needed.
  2. Save and restart the app. Type /mcp in the composer to check that prepare_studio_batch is connected.

In Codex CLI, you can also run codex mcp add reelparcel-free --url https://reelparcel.com/mcp-free, then use codex mcp list to check the connection. See OpenAI’s MCP setup guide →

ChatGPT on the web

  1. If your plan and workspace permit custom MCP apps, enable developer mode in Settings → Apps → Advanced settings. Business admins and owners can enable it for themselves; Enterprise and Edu members need access granted by an admin.
  2. Where Apps → Create is available, create a custom app with the public MCP URL above and no ReelParcel authentication, then scan its tools. Admins and owners can also create it from Workspace settings → Apps → Create.
  3. After the app is created, start a new chat and select it from the tools menu or mention it in your prompt. Check that prepare_studio_batch is available before relying on this workflow.

Full MCP support, including write actions, is in beta for ChatGPT Business, Enterprise, and Edu. Pro custom MCP connections are limited to read/fetch actions, so access to this batch-preparation tool is not established on Pro. This free endpoint does not ask ChatGPT to authenticate with ReelParcel. See OpenAI’s developer mode and MCP apps guide →.

When your chat cannot connect to MCP

You can still use the free path without a connector. Ask another assistant for the bounded JSON below, then paste it into the Studio import panel.

Open the chat fallback →

Other HTTP MCP clients

Use the URL above as a Streamable HTTP server with no Authorization header. If your client accepts an mcpServers JSON configuration, this example may help; configuration keys vary by client.

{
  "mcpServers": {
    "reelparcel-free": {
      "type": "http",
      "url": "https://reelparcel.com/mcp-free"
    }
  }
}

From agent draft to free download

Try the version 1 copy-only task fixture for two different GoScript examples. It includes verified facts and copy for our disclosed simulator screens. Call prepare_studio_batch with one task's briefs, then open its Studio link, add media you have permission to use, and review the new claims before exporting. Repeat with the second task for a different screen and message. The remote MCP returns a link; you download the file in your browser.

  1. Give your agent verified app facts and ask it to call prepare_studio_batch for three distinct briefs. If facts are missing, have it ask you first. Its result also links to clearly labeled first-party GoScript examples for inspection; they are not a file made from your app.
  2. Open the returned Studio URL. It carries editable copy in its fragment, not media or credentials. Anyone with that link can read the copy, so keep private information out of the briefs.
  3. Add screenshots or a recording you own, or explicitly choose owned media from a saved project for the same app on this browser/device. The original project stays unchanged. Reconfirm media permission, edit the new drafts, and review every product claim against the selected media.
  4. Export a clean single carousel PNG ZIP or browser-supported MP4/WebM video for free. You can also choose a handoff ZIP that groups one output with a caption, checksum manifest, and cover when available. Save the new project if you want to reuse it later. Three-output packs remain watermarked. The agent cannot download those files through this remote MCP tool; rendering and download happen in your browser.

Source selection for agents: ReelParcel preserves supplied app UI and cannot invent an interaction. Ask for a 5–15 second real in-app action starting after loading, or 2–4 distinct screenshots of one task. Keep critical controls legible, avoid permission and debug overlays, and disclose simulator, demo, or test access. These are capture tips, not a post-readiness guarantee.

Use ReelParcel's prepare_studio_batch tool to draft three distinct variants for one app. Copy the exact same appName and benefit strings into all three briefs; vary the hook, body, CTA, and template. Use only these facts I have verified: [app name, benefit, supported screens, accurate claims, CTA, brand color, and any demo or test context]. Ask me about missing facts before calling the tool. Give me the returned Studio URL so I can add my own media, review the claims, and export.

The free tool stores no brief, media, or output on the server; it may count a successful call as described above. Studio removes the fragment after import; device-saved drafts remain until you explicitly replace them.

Chat fallback prompt

Give another assistant this prompt with your verified product facts, then paste its JSON response into the Studio’s “Paste a draft from any chat” panel. Review every claim before export.

Help me prepare three editable ReelParcel creative briefs for one app. Use only product facts I confirm. If facts are missing, ask me before writing the briefs.

Return only valid JSON with one top-level key, "briefs", containing exactly three objects. Each object must have appName, benefit, hook, body, cta, template, and accentColor. The optional disclosure field is a one-line context label. Use the same appName and benefit in all three objects, but make the hooks, bodies, and CTAs distinct. Use one template per brief: "walkthrough", "problem-solution", and "tips". accentColor must be a six-digit hex color such as "#4B8CEF".

Maximum lengths: appName 60 characters; benefit 160; hook 120; body 320; cta 80; disclosure 48. Do not add media URLs, credentials, invented features, testimonials, results, or extra keys. If the footage shows a fixture, simulated flow, or test-only paid access, include an accurate short disclosure in each relevant brief and explain the context in its body. Do not use Markdown or code fences.

Verified app name, core benefit, supported screens, accurate claims, intended CTA, brand color, and any demo/test context:
[replace this line with my verified facts]

Open the Studio import panel →

Optional experimental local companion

Fresh-process repeat delivery is not reliable: the observed second task failed before returning a complete file. This is an optional desktop experiment. For a download you can complete directly, use free browser Studio.

If your agent supports local stdio MCP servers, download the local setup script and run it with Node 22+ from a terminal. It downloads and checks the two ReelParcel scripts, installs pinned dependencies and Chromium into a new directory, and writes a ready-to-copy mcp-config.json. It does not replace an existing directory:

REELPARCEL_BASE_URL=https://reelparcel.com node reelparcel-local-setup.mjs ./reelparcel-local

Copy the generated mcp-config.json into a client that supports local stdio MCP servers, then restart that client. The configuration uses an absolute script path, the installation directory as cwd, and this deployment's origin as REELPARCEL_BASE_URL. If the client does not connect, run node reelparcel-local-setup.mjs --doctor ./reelparcel-local for a read-only check of the config, files, dependencies, and pinned hashes. If you prefer manual setup, the MCP server and export sidecar are available separately; keep them together, set REELPARCEL_BASE_URL to https://reelparcel.com in the client environment, and install @modelcontextprotocol/sdk@1.30.0, zod@4.6.5, playwright@1.63.0, and Chromium in that directory.

Setup doctor and recovery

node reelparcel-local-setup.mjs --doctor ./reelparcel-local
  • Cannot connect: use Node 22+, copy the generated absolute-path configuration, restart the client, and rerun doctor. A hosted-chat client needs the free remote route if it cannot run local stdio.
  • Hash mismatch or missing browser: download the matching setup script and install in a new directory. For missing Chromium, run npx playwright install chromium in the installation directory, then rerun doctor. Doctor checks setup; it does not prove export reliability.
  • Review timed out or browser closed: no incomplete file counts as a result. Open Studio and review again before downloading. If a result was already complete, poll its session ID within ten minutes; recovery rechecks the saved file and never restores approval for an interrupted task.
  • Another export is active or saving failed: finish or close the existing local review first. Choose a writable output directory with free disk space before retrying.

The generated MCP configuration has this shape (your installed path will be filled in):

{
  "mcpServers": {
    "reelparcel-local": {
      "command": "node",
      "args": ["/ABS/PATH/reelparcel-local/reelparcel-local-mcp.mjs"],
      "cwd": "/ABS/PATH/reelparcel-local",
      "env": { "REELPARCEL_BASE_URL": "https://reelparcel.com" }
    }
  }
}

The local server exposes prepare_studio_batch, start_clean_single_export, and get_clean_single_export. Ask it to prepare three distinct briefs from facts you confirmed. On your first run, start an export with the returned studioUrl as handoffUrl, absolute mediaPaths for one recording or up to eight screenshots, an absolute outputDirectory, and carousel, video, handoff-carousel, or handoff-video. To save before automatic export, pass saveBatchName: "Your project name". Review the selected variant, enter that exact name under “Save or repeat a project,” and click the visible “Save named project” button. The helper waits for that exact save confirmation in this Studio session before exporting, and fails without export if the review window expires. It never saves a project for you. Without saveBatchName, selected-variant review is enough for a clean single export. On a later same-app run, omit mediaPaths and set reuseSavedMedia: true; you choose that project in the visible Studio and personally reconfirm media permission and the new drafts' exact claims. The original project stays unchanged. The handoff formats save one ZIP containing the clean output, caption, checksum manifest, and a cover or an explicit note if a video cover cannot be made. Start returns a session ID promptly, so your agent can check status during your review. The completed result includes an absolute path, format, bytes, carousel slide count where applicable, and SHA-256. One review runs at a time and expires after ten minutes by default. The optional single-call export_clean_single works when your MCP client supports a longer tool timeout. Neither workflow uploads media, calls server jobs, selects a saved project, checks review boxes, or handles three-output packs. Use media you own or have permission to use, and keep private information out of the handoff copy.

Local agent-to-file helper

If your agent can run Node on your computer, download reelparcel-free-export.mjs. It opens a visible browser at the public Studio and attaches local media that you name. With --export carousel|video|handoff-carousel|handoff-video, it waits for you to review the selected variant and preview and personally confirm media permission and its exact claims; then it clicks that clean single export and saves and verifies the file locally. Add --save-batch-name 'Your project name' with --export to wait for your visible named-project Save first; review the selected variant. Without --export, you click the export button yourself. The helper never checks review boxes, saves a project, uploads media to the MCP server, or renders on ReelParcel’s server.

# In the directory where you run the helper (Node 22+):
npm install playwright
npx playwright install chromium
REELPARCEL_BASE_URL=https://reelparcel.com node reelparcel-free-export.mjs --handoff 'PASTE_STUDIO_HANDOFF_URL' \
  --media ./owned-screen-1.png --media ./owned-screen-2.png \
  --out ./reelparcel-output --export carousel

The MCP result supplies both studioUrl and localExportHelperUrl. Pass the Studio URL to this helper with one recording or up to eight screenshots on the first run. After saving an owned named project in the visible Studio, pass --reuse-saved-media instead of --media on a later same-app run. You select the saved project and repeat the review; the helper does not choose it for you. The helper keeps a dedicated browser profile under your home directory across runs and kit reinstalls (~/.reelparcel/browser-profile on macOS/Linux). To erase its saved media and projects, close its browser and delete that directory; node reelparcel-free-export.mjs --profile-location prints the exact location. It waits up to ten minutes by default and never overwrites an existing output file; repeated exports in one directory receive numbered filenames. Three-output packs remain watermarked and are not accepted by this helper. This local path needs a Playwright browser installed on your machine and does not make the free MCP a remote rendering service.

Local helper status: experimental. The fresh-process second-file check failed after a native browser crash; its trigger is unknown. Five-process reliability is not established. If it stops, use browser Studio and repeat personal review.

The separate /mcp endpoint below requires a signed-in account and a scoped personal token or a registered OAuth client. It is not the public free connection.

Account MCP and REST

The owner-scoped /mcp endpoint is available to accounts created through GitLab sign-in. Email-link delivery needs a dedicated sender and is not open yet. Where managed OAuth is enabled on this deployment, compatible clients can register dynamically and continue through sign-in and consent. Use /mcp-free for a no-account creative handoff.

Signed-in users can create a personal bearer token on the integrations page and pass it as an Authorization header. Tokens are scoped, expiring, revocable, and limited by a daily credit ceiling. Check pricing and availability before planning a hosted render; the free browser path remains open.

Managed OAuth is enabled for registered clients. Sign in and choose permissions and a daily credit limit after a client has been registered. Personal tokens do not require client registration.
Hosted rendering is unavailable on this deployment. New private uploads, hosted quotes, and hosted renders are closed here. Existing unexpired owned outputs remain available through Workspace and authorized read-only REST or MCP access. Use the free browser Studio or /mcp-free handoff instead.

Generic HTTP MCP setup

Use this JSON only in a client that supports a generic remote HTTP MCP server configuration. Client setup screens and configuration keys vary; there is no ReelParcel npm package or universal one-click installer.

{
  "mcpServers": {
    "reelparcel": {
      "type": "http",
      "url": "https://reelparcel.com/mcp",
      "headers": { "Authorization": "Bearer YOUR_TOKEN" }
    }
  }
}

Media transfer depends on your client. If it can send a binary HTTP request, call create_upload, send your owned file to its temporary signed URL, then call complete_upload. Otherwise the agent can call get_upload_handoff for a saved app and give you its one-hour Workspace link. Sign in, upload the source yourself, and wait until list_assets shows the verified asset for that app. Opening the handoff link is not upload completion. The link does not grant access to your account; keep it private. Do not paste a local path, media bytes, token, or signed upload link into unrelated chat.

You can also inspect the versioned REST contract at /api/openapi. It is the source for request schemas and the exact paths used by the MCP bridge.

For a runnable paid REST workflow, download developer-example.mjs and run it with Node 22 or newer. It uses a personal token from REELPARCEL_TOKEN, an existing saved app, and your owned image or recording. An MP4 cover requires FFmpeg on your computer. Paid renders must be available on this deployment, and your account needs credits; this example creates no test credits. The one-output hosted trial instead needs account-side review and a zero-cost quote in Workspace.

export REELPARCEL_BASE_URL=https://reelparcel.com
export REELPARCEL_TOKEN=... REELPARCEL_PROJECT_ID=...
export REELPARCEL_ASSET_FILE=./owned-screen.png
export REELPARCEL_WIDTH=1080 REELPARCEL_HEIGHT=1920
node developer-example.mjs
node developer-example.mjs --resume inspect
# Review the exact draft and approve it in /workspace, or use an approval-scoped token:
node developer-example.mjs --resume approve
node developer-example.mjs --resume quote
node developer-example.mjs --resume render --accept-quote QUOTE_ID
node developer-example.mjs --resume next

Keep the token in your private environment and the state file private. The script never prints the token or temporary storage URLs. Drafting, approval, quote and credit-spending render are separate commands. The quoted ID must be repeated when rendering. After success, the script downloads the actual outputs and saves a verified ZIP with a cover, captions, manifest, and SHA-256 checksums. --resume pack retries a pack download with fresh private URLs. The script exports assemblePack(descriptor) for agents that call MCP get_pack; pass its pack descriptor to the helper and save the returned ZIP bytes. get_pack alone returns metadata and temporary URLs, not an assembled ZIP.

One request, with a personal token

curl https://reelparcel.com/api/v1/account \
  -H "Authorization: Bearer rp_live_your_token"

Once your app and owned assets are saved, one retry-safe request creates three editable template and media starters. Different templates and screenshot cuts are not three factual content angles; revise and verify each draft’s product-specific copy before approval or export. With two or more screenshots, image-only batches use the full selected order and two shorter ordered cuts. If you also select one recording, the walkthrough uses it and the image variants use ordered cuts. Select at most one recording for this helper; use manual batches for other recordings. Batch responses include an advisory comparison of exact current copy, templates, and selected media IDs; it cannot judge whether claims fit the media or a post is ready. Keep the same idempotency key and asset order if a response is interrupted. Approval and any paid render remain separate.

POST https://reelparcel.com/api/v1/projects/PROJECT_ID/batches/next
Authorization: Bearer rp_live_your_token
Idempotency-Key: next-batch-2026-09-20
Content-Type: application/json

{"desiredOutcome":"show the first useful moment","assetIds":["OWNED_ASSET_ID"]}

For a carousel made from exactly one screenshot, the optional focus-single-v1 layout shows the full source before enlarging a detail the operator selects. In Studio, choose Focus and drag over the original screenshot. In an API revision, set output.carouselMode to focus-single-v1 and provide output.focusRegion as normalized source coordinates: {"x":0.02,"y":0.05,"width":0.96,"height":0.33}. Width must be 0.08–1, height 0.08–0.6, and the rectangle must stay within the image. This enlarges existing pixels; it cannot reveal detail absent from the source. Review and approve the resulting four slides before export.

For one recording, optional output.videoFocus adds a labeled two-second paused Source detail after the full uncropped motion. Choose a real timeSeconds and normalized region from that same recording, for example {"timeSeconds":3.2,"region":{"x":0.02,"y":0.065,"width":0.96,"height":0.38}}. The selected region must stay within the frame, with width 0.08–1 and height 0.08–0.6. The recording plus detail must fit within output.durationSeconds or the revision is rejected. Review the exact rendered video and its claims before approval.

For a moving recording, output.sourceLedBeats selects one to five timed regions from the real source. Example: [{"startSeconds":0,"endSeconds":4,"contextSeconds":0.55,"region":{"x":0.02,"y":0.2,"width":0.96,"height":0.4},"label":"First useful moment"}]. Optional contextSeconds sets how long that beat shows the complete moving frame before enlarging its region (0.35–1 second, default 0.7). Beats must be contiguous, cover the full uploaded recording, last at least 1.2 seconds each, and use short labels. The full recording must fit the integer output.durationSeconds (maximum 30). Do not combine this with videoFocus or the screenshot draft layout. Studio and Workspace let the operator choose each region on a paused source frame. Saving a timing or region edit creates a new revision and requires a new exact review and approval.

To use just the useful part of a longer recording, set output.recordingEdit to version 2 with a source interval in integer microseconds, for example {"version":2,"sourceRange":{"inUs":10000000,"outUs":22000000},"focus":{"mode":"full-app"}}. This selects seconds 10–22 of that owned source; output.durationSeconds must cover its 12-second span. full-app keeps the interface in view. A source-led focus can use beats timed relative to the selected span, but never combine version 2 with legacy sourceLedBeats or videoFocus. The owner chooses the action and payoff in the actual recording; the agent cannot infer them from the filename or metadata. Review the new rendered revision before approving it.

For a screenshot-only MP4 draft, set output.videoLayout to tiktok-conservative, for example {"format":"mp4","durationSeconds":10,"videoLayout":"tiktok-conservative"} with three screenshot asset IDs. The integer durationSeconds is the final length and must be at least ceiling(3.5 + 2 × screenshot count): a 1.5-second opening, at least two seconds per full screenshot, and a two-second closing. The option is silent and unavailable for recordings or carousels. Save and review this exact revision before approval; changing the layout creates a new revision. Its composition guide is approximate and does not verify TikTok import, caption overlap, or organic-feed clearance.

One app demo with an agent

This account workflow is for an agent with access to your saved app and verified private media. It prepares one reviewed file, rather than asking you to accept three generic ideas. Private upload and hosted rendering are available only when this deployment’s controls open them.

Help me make one short, factual demo of [APP FEATURE].
1. Call list_apps, then get_app. Ask me for missing facts; do not invent them.
2. Call list_assets for that app. For screenshots, call preview_asset and
   ground every claim in the image or approved app facts. For a recording,
   ask me which source interval shows the action and result: your image
   preview tool cannot inspect video frames.
3. If no verified asset exists and you cannot upload bytes, call
   get_upload_handoff. Give me its private link and wait until list_assets
   shows my completed upload for this app. Do not treat an opened link as proof.
4. Call create_batch, add_creative and revise_creative for one draft. Use my
   chosen recording interval or the inspected screenshots. Show me the exact
   brief, selected source, caption and Workspace review link. Stop for review.
5. After I approve the current revision, call quote_exports and show the
   funding source and required credits. Do not render until I accept the quote.
6. Call render_approved_creatives with a stable idempotency key. On timeout,
   retry with the same key and quote. Poll get_render; download the private
   completed file and verify it opens. Never publish it for me.
7. On a later session, list the saved app and duplicate_batch, then revise,
   review, quote and approve a genuinely different supported task.

The account MCP exposes create_batch, add_creative and revise_creative for one deliberate draft. make_next_batch remains an optional three-starter helper, not three verified product angles. preview_asset sends an uploaded screenshot capped at 720×1280 and 2 MiB to the connected AI client, which may process or retain its pixels under its own terms; it does not inspect recordings. get_upload_handoff lets the owner send a file without giving the agent a shell. duplicate_batch makes unapproved new drafts for the next task. Both draft paths spend no credits. get_pack returns metadata and temporary URLs, not an assembled ZIP.

Permission and spend

A token does not grant account deletion, billing administration, or unlimited autonomous spending. The server checks ownership, scopes, balance, daily limits, approval state, and idempotency for every operation.

  • Ask for a quote before rendering: formats, output count, and credits required.
  • Leave creatives:approve off when your agent should wait for you to approve each revision in the workspace. Grant it only when the agent may approve on your behalf.
  • Use an idempotency key between 8 and 128 characters when retrying a request so a network retry cannot spend twice.
  • For generic MP4 output, durationSeconds is a maximum. One recording ends at its source length, or at its source length plus two seconds when Source detail is selected; 1–8 screenshots play in selected order for max(6 seconds, 2 seconds per screenshot). The optional screenshot draft layout instead uses the exact integer final duration with at least 3.5 seconds of bookends plus two seconds per screenshot. Requests that would cut off source motion are rejected.
  • Daily credit limits count all outputs reserved that UTC day; failed renders return account credits but do not reset the integration’s daily ceiling. Keep tokens private and revoke integrations when no longer needed.