--- title: "plan_swap_creator: Swap a creator | distribution.tech" description: "Replace one line of a plan awaiting approval (line_id from plan_quote) with another creator's format (unit_id from creators_search or creator_get) at its." canonical: https://distribution.tech/docs/mcp/tools/plan-swap-creator generator: md-live-route generated: 2026-10-21T22:52:11.817Z --- # plan_swap_creator: Swap a creator | distribution.tech - [Getting started](https://distribution.tech/docs) - [API reference](https://distribution.tech/docs/api) - [MCP and agents](https://distribution.tech/docs/agents) - [Changelog](https://distribution.tech/docs/changelog) Search the docs Docs - Agents › - [Run a campaign with your agent](https://distribution.tech/docs/agents) - [MCP server](https://distribution.tech/docs/mcp) - MCP tools › - [inventory](https://distribution.tech/docs/mcp/tools/inventory) - [resolve\_audience](https://distribution.tech/docs/mcp/tools/resolve-audience) - [campaign\_status](https://distribution.tech/docs/mcp/tools/campaign-status) - [evidence](https://distribution.tech/docs/mcp/tools/evidence) - [results](https://distribution.tech/docs/mcp/tools/results) - [brain\_get](https://distribution.tech/docs/mcp/tools/brain-get) - [creators\_search](https://distribution.tech/docs/mcp/tools/creators-search) - [creator\_get](https://distribution.tech/docs/mcp/tools/creator-get) - [creator\_ask\_price](https://distribution.tech/docs/mcp/tools/creator-ask-price) - [plan\_quote](https://distribution.tech/docs/mcp/tools/plan-quote) - [create\_campaign](https://distribution.tech/docs/mcp/tools/create-campaign) - [plan\_add\_creator](https://distribution.tech/docs/mcp/tools/plan-add-creator) - [plan\_remove\_creator](https://distribution.tech/docs/mcp/tools/plan-remove-creator) - [plan\_move\_dates](https://distribution.tech/docs/mcp/tools/plan-move-dates) - [plan\_swap\_creator](https://distribution.tech/docs/mcp/tools/plan-swap-creator) - [set\_creator\_guidelines](https://distribution.tech/docs/mcp/tools/set-creator-guidelines) - [approve\_plan](https://distribution.tech/docs/mcp/tools/approve-plan) - [archive\_campaign](https://distribution.tech/docs/mcp/tools/archive-campaign) - [rename\_campaign](https://distribution.tech/docs/mcp/tools/rename-campaign) - [delete\_campaign](https://distribution.tech/docs/mcp/tools/delete-campaign) - [feedback\_send](https://distribution.tech/docs/mcp/tools/feedback-send) - [feedback\_list](https://distribution.tech/docs/mcp/tools/feedback-list) 1. [distribution](https://distribution.tech/) 2. / [Docs](https://distribution.tech/docs) 3. / [MCP tools](https://distribution.tech/docs#mcp) 4. / plan\_swap\_creator MCP tool # Swap a creator plan\_swap\_creator Replace one line of a plan awaiting approval (line\_id from plan\_quote) with another creator's format (unit\_id from creators\_search or creator\_get) at its. Copy page as markdown [View .md](https://distribution.tech/docs/mcp/tools/plan-swap-creator.md) ## Overview Replace one line of a plan awaiting approval (line\_id from plan\_quote) with another creator's format (unit\_id from creators\_search or creator\_get) at its current all-in price, in one step: both happen or neither does, so the plan is never left with both creators or with none. The plan's total after the swap must fit the key's mandate and the campaign's budget: a creator at or under the removed creator's price always swaps in, a dearer one that would go over the budget is refused (conflict, reason over\_budget, budget\_cents, remaining\_cents). A creator already on the plan is refused (already\_in\_plan); to change a creator's format, remove the line and add the format. Returns the new line\_id, the removed\_line\_id and the plan as plan\_quote returns it. Needs an idempotency\_key. Server `https://app.distribution.tech/api/mcp` Scope `campaigns:write` Changes data Yes, pass an idempotency\_key REST endpoint [POST /plans/{id}/lines/{line\_id}/swap](https://distribution.tech/docs/api/post-plans-id-lines-line-id-swap) ## Arguments | Name | Type | Required | Description | | --- | --- | --- | --- | | `idempotency_key` | string | Yes | Your unique id for this request. Retry with the same id and the same arguments to get the same answer; it never runs twice. | | `plan_id` | string (uuid) | Yes | The plan, from campaign\_status or plan\_quote. | | `line_id` | string (uuid) | Yes | The line to replace, from plan\_quote. | | `unit_id` | string (uuid) | Yes | The new creator's format: a unit\_id from creators\_search or creator\_get. | ## Call with curl The server speaks streamable HTTP, so one JSON-RPC `tools/call` request runs the tool. Set `DISTRIBUTION_API_KEY` to a key from Developers with the `campaigns:write` scope; the arguments shown are the required ones. curl ``` curl -X POST "https://app.distribution.tech/api/mcp" \ -H "Authorization: Bearer $DISTRIBUTION_API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "plan_swap_creator", "arguments": { "idempotency_key": "", "plan_id": "", "line_id": "", "unit_id": "" } } }' ``` ## Result The answer's `structuredContent` follows the tool's output schema (the same JSON is in its text content). It has these fields: | Name | Type | Required | Description | | --- | --- | --- | --- | | `line_id` | string (uuid) | Yes | | | `removed_line_id` | string (uuid) | Yes | | | `plan` | object | Yes | A plan as the person sees it and as an agent signs it (v1-product-spec 8.5 Quote). | structuredContent, every field with its type ``` { "line_id": "", "removed_line_id": "", "plan": { "plan_id": "", "campaign_id": "", "version": 0, "status": "awaiting_approval", "currency": "", "launch_window_start": "", "launch_window_end": "", "terms_fingerprint": "", "total_cents": 0, "totals": {}, "lines": [ { "id": "", "creator": { "id": "", "name": "", "handle": "", "profile_url": "", "avatar_url": "", "followers": 0 }, "creator_id": "", "unit_id": "", "stage_id": "planned", "stage": "", "channel": "", "channel_label": "", "format": "", "deliverable": "", "scheduled_date": "", "price_cents": 0, "vetting": "", "reason": "", "expected_views_low": 0, "expected_views_high": 0, "on_sale": false } ], "payment_options": [ { "rail": "checkout", "label": "", "clears": "" } ], "agent_payment": "checkout", "brand_terms": { "current_version": "", "current_number": 0, "url": "", "accepted_for_this_key": "", "accepted_number_for_this_key": 0 }, "mandate": { "key_id": "", "version": 0, "max_plan_cents": 0, "monthly_cap_cents": 0, "channels": [ "" ], "may_approve": false, "may_exceed_budget": false, "expires_at": "", "updated_at": "", "spent_this_month_cents": 0, "terms_version": "", "terms_accepted_at": "", "terms_accepted_email": "" }, "policy": { "allowed": false, "refusal": {} }, "blocked_lines": [ "" ], "over_budget": { "budget_cents": 0, "total_cents": 0, "over_by_cents": 0 }, "order": {}, "valid_while": "terms_fingerprint_unchanged" } } ``` ## Other tools - [`inventory`](https://distribution.tech/docs/mcp/tools/inventory): Network coverage - [`resolve_audience`](https://distribution.tech/docs/mcp/tools/resolve-audience): Resolve an audience - [`campaign_status`](https://distribution.tech/docs/mcp/tools/campaign-status): Campaign status - [`evidence`](https://distribution.tech/docs/mcp/tools/evidence): Proof of delivery - [`results`](https://distribution.tech/docs/mcp/tools/results): Results - [`brain_get`](https://distribution.tech/docs/mcp/tools/brain-get): Company context - [`creators_search`](https://distribution.tech/docs/mcp/tools/creators-search): Find creators - [`creator_get`](https://distribution.tech/docs/mcp/tools/creator-get): One creator - [`creator_ask_price`](https://distribution.tech/docs/mcp/tools/creator-ask-price): Ask for a price - [`plan_quote`](https://distribution.tech/docs/mcp/tools/plan-quote): Quote a plan - [`create_campaign`](https://distribution.tech/docs/mcp/tools/create-campaign): Start a campaign - [`plan_add_creator`](https://distribution.tech/docs/mcp/tools/plan-add-creator): Add a creator - [`plan_remove_creator`](https://distribution.tech/docs/mcp/tools/plan-remove-creator): Remove a creator - [`plan_move_dates`](https://distribution.tech/docs/mcp/tools/plan-move-dates): Move a plan's dates - [`set_creator_guidelines`](https://distribution.tech/docs/mcp/tools/set-creator-guidelines): Set the creator guidelines - [`approve_plan`](https://distribution.tech/docs/mcp/tools/approve-plan): Approve and get the pay link - [`archive_campaign`](https://distribution.tech/docs/mcp/tools/archive-campaign): Archive a campaign - [`rename_campaign`](https://distribution.tech/docs/mcp/tools/rename-campaign): Rename a campaign - [`delete_campaign`](https://distribution.tech/docs/mcp/tools/delete-campaign): Delete a draft campaign - [`feedback_send`](https://distribution.tech/docs/mcp/tools/feedback-send): Send feedback - [`feedback_list`](https://distribution.tech/docs/mcp/tools/feedback-list): Your feedback ## Get access Keys are created in Developers once your brand is approved. [Connect an agent](https://distribution.tech/distribution#access) to ask for access, then read [the agent guide](https://distribution.tech/docs/agents) for the full flow. On this page - [Overview](#overview) - [Arguments](#arguments) - [Call with curl](#curl) - [Result](#result) - [Other tools](#related) - [Get access](#access) [![distribution.tech](https://distribution.tech/brand/wordmark-light.svg)![distribution.tech](https://distribution.tech/brand/wordmark.svg)](https://distribution.tech/) Your agent buys your distribution. Distribution we run for - ClickUp - Gushwork - Tab Platform - [How it works](https://distribution.tech/how-it-works) - [Network](https://distribution.tech/network) - [Workspace](https://app.distribution.tech/login) - [For your agents](https://distribution.tech/distribution) Solutions - [Product launch](https://distribution.tech/solutions/product-launch) - [Funding announcement](https://distribution.tech/solutions/funding-announcement) - [Feature release](https://distribution.tech/solutions/feature-release) - [For brands](https://distribution.tech/for-brands) - [For creators](https://distribution.tech/for-creators) Resources - [Blog](https://distribution.tech/blog) - [Launch playbook](https://distribution.tech/playbook) - [X creator rates](https://distribution.tech/rates/x-creators) Company - [Customers](https://distribution.tech/customers) - [Pricing](https://distribution.tech/pricing) - [Changelog](https://distribution.tech/changelog) - [Build a distribution plan](https://app.distribution.tech/login) - [Join the creator network](https://distribution.tech/for-creators#apply) - [Log in](https://app.distribution.tech/login) Legal - [Privacy](https://distribution.tech/privacy) - [Terms](https://distribution.tech/terms) © 2026 distribution.tech [Contact: team@distribution.tech](mailto:team@distribution.tech)Cookie settings Light Dark System