job_id — follow with dtc_job_wait. Scopes are
enforced per call; a key missing one gets 403 FORBIDDEN_SCOPE. Full input schemas are
always available live via dtc_capabilities.
A tool ships with the release that introduces it, so the server you are calling may advertise
fewer tools than are listed here. Treat
tools/list (or dtc_capabilities) against your
environment as the authoritative set — this page describes the build, not any one deployment.
See Endpoint Status for what production currently serves.Identity & jobs
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_capabilities | – | – | Return the machine-readable catalog of all dtc_* tools with their JSON schemas and scopes |
dtc_get_approval_rules | – | – | What needs the owner’s OK before it happens, in plain words |
dtc_get_job | – | – | Get the status/result of an async gateway job by job_id (returned by async tools) |
dtc_job_wait | – | – | Poll a job until terminal (succeeded/failed/cancelled) or timeout |
dtc_read_web_page | – | – | Read any public web page with a real browser — review sites (Trustpilot, Google reviews pages), a competitor’s product or landing page, a supplier’s catalogue, a news or… |
dtc_whoami | – | – | Who you are acting as: the store (store.name, currency, domain, timezone), merchant_id, store_id, your granted scopes and rate budget |
Store building
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_custom_domain | store:publish | ✓ | Attach a custom domain to a published store (provisions SSL + CloudFront routing) |
dtc_add_tax_registration | store:write | – | MUTATION — record that the merchant is registered to collect tax in a place, so Stripe Tax starts charging tax there immediately |
dtc_build_landing_page | store:write | ✓ | Create a single marketing landing page from a brief (template_kind=landing_page) |
dtc_create_project | store:write | ✓ | Lower-level project creation (same engine as dtc_create_store) when you need explicit control over template_kind |
dtc_create_store | store:write | ✓ | Create a new storefront from a natural-language brief |
dtc_create_webhook | store:write | – | Have PlatformDTC POST to your own public https address when something happens: order.created/paid/refunded/fulfilled, checkout.abandoned, inventory.low,… |
dtc_delete_metaobject | store:write | – | Delete a metaobject by id |
dtc_delete_shipping_zone | store:write | – | Remove a shipping zone. Shoppers in its places then get the “Everywhere else” rates, or cannot check out when there is none (the answer says which) |
dtc_delete_webhook | store:write | – | Stop sending events to one address (delete the webhook) |
dtc_enable_language | store:write | – | Add a language to the store (hidden from shoppers until published), and optionally show or hide it |
dtc_expire_tax_registration | store:write | – | MUTATION — stop collecting tax in a place now (the registration is expired, history kept for reports) |
dtc_get_brand_system | store:read | – | Get the store’s Brand Design System (BDS): identity (brand_name, tagline, voice, tone, dos/donts, target_audience, imagery_style, product_kb_summary), design (preset,… |
dtc_get_checkout_settings | store:read | – | The live checkout’s settings: shipping options (name and price each), purchase types offered (one-time, subscription), customer information fields (full name, company,… |
dtc_get_costs | store:read | – | The store’s costs, as profit reports use them: the default product cost (% of price, for variants without their own), monthly operating costs (salaries, software,… |
dtc_get_markets | store:read | – | Read international selling (Settings → Markets & languages → Markets): whether it is on, the store currency, and each market — its countries, currency, exchange rate… |
dtc_get_metaobject | store:read | – | Get one metaobject (custom-data record) by id |
dtc_get_notification_template | store:read | – | One automatic email as the store sends it today: subject, HTML and text body in effect, the standard version (seed_*) to compare, the variables it can use… |
dtc_get_platform_plan | store:read | – | The store’s PlatformDTC plan (name, status, renewal date, card on file), the plans on offer, and PlatformDTC’s pay-as-you-go rates (no monthly fee; card, international,… |
dtc_get_project_status | store:read | – | Get a project’s lifecycle status (initializing/active/failed) plus preview URL and metadata |
dtc_get_publish_status | store:read | – | Get the deployment status of a project (pending/building/uploading/deploying/ready/failed) and the live URL when ready |
dtc_get_tax_settings | store:read | – | Read-only. Automatic sales tax: whether it’s collected at checkout, whether shipping is taxed, Stripe Tax readiness (status, missing fields, address, product tax code)… |
dtc_heartbeat_check | store:write | – | Ask the heartbeat to check the store now, e.g. right after you changed something |
dtc_heartbeat_resolve_item | store:write | – | Mark one item of a heartbeat note done or dismissed (or open again) |
dtc_heartbeat_schedule_check | store:write | – | Book a follow-up check for later, e.g. “see whether sales recovered after pausing the ad set” |
dtc_heartbeat_task_create | store:write | – | Give the store’s heartbeat a task the owner asked for, once or on repeat — e.g. “every Monday at 8:00 tell me how last week’s sales and ads went”, “every hour tell me… |
dtc_heartbeat_task_delete | store:write | – | Delete one of the store’s tasks (task_id from followups in dtc_heartbeat_get) |
dtc_heartbeat_task_update | store:write | – | Change, pause or resume one of the store’s tasks (task_id = a followups[].id from dtc_heartbeat_get) |
dtc_list_agent_actions | store:read | – | The store’s recent changes made by agents (yours, the owner’s other agents, scheduled tasks), newest first, in plain words |
dtc_list_approved_claims | store:read | – | List the brand’s approved marketing claims — the phrases copy MAY use — from the active goal’s guardrails |
dtc_list_events | store:read | – | What happened in the store, for agents without a public address: order.created/paid/refunded/fulfilled, checkout.abandoned, inventory.low, customer.created,… |
dtc_list_languages | store:read | – | The store’s languages: its own language (primary), each added language with whether shoppers see it (published) and how much is translated (total texts, translated,… |
dtc_list_metaobjects | store:read | – | List custom-data metaobjects (arbitrary typed records agents can persist on the store — e.g. campaign plans, brand notes, experiment configs) |
dtc_list_notification_templates | store:read | – | List every automatic email the store sends (order confirmation, shipping updates, subscription renewals, team alerts…): name, slug, who gets it (customer or staff),… |
dtc_list_pages | store:read | – | List the store’s landing pages |
dtc_list_sales_channels | store:read | – | Which optional sales channels (Subscriptions, Point of sale, Membership) are in the store’s dashboard menu |
dtc_list_shipping_zones | store:read | – | Where the store ships and what each place pays: every zone (countries or states like US-CA; no countries = “Everywhere else”), its rates with order-total/weight… |
dtc_list_store_policies | store:read | – | The store’s policies (refund, shipping, privacy, terms of service, subscription, contact information, legal notice): each one’s text, whether it is written automatically… |
dtc_list_translations | store:read | – | One language’s texts, to translate: where each is (type, resource_title, field), the original (source), the saved translation (value) and its status (missing = shoppers… |
dtc_list_webhooks | store:read | – | List the addresses this store sends events to (webhooks): each one’s url, the events it gets and whether it is on |
dtc_publish_project | store:publish | ✓ | Publish a project/store to its live URL (build → upload to S3 → CloudFront) |
dtc_reset_notification_template | store:write | – | Put an automatic email back to PlatformDTC’s standard version: removes every edit to its subject and body and any on/off choice made for it |
dtc_reset_store_policy | store:write | – | Put one policy back to the text PlatformDTC writes automatically from the store’s details (shipping options, return rules, contact details) and keeps up to date |
dtc_send_test_notification | store:write | – | Send a test copy of an automatic email so the merchant can see it in their inbox |
dtc_set_default_cogs | store:write | – | Set the default product cost: the % of its price a variant is assumed to cost when it has no cost of its own (e.g |
dtc_set_operating_costs | store:write | – | Set the store’s monthly operating costs that net profit subtracts: salaries, software_tools, office_expense, other — monthly amounts in the store’s currency |
dtc_set_product_costs | store:write | – | Set what variants cost the store (cost of goods), up to 50 a call: [{variant_id, cost}], cost in the store’s currency, e.g. 7.25 |
dtc_set_sales_channel | store:write | – | Add an optional sales channel to the dashboard menu (in_menu true) or remove it (false) |
dtc_undo_action | store:write | – | Undo one change an agent made: puts back what it replaced (prices, products, collections, discounts, store pages, blog posts, menus, campaign drafts, flows, ad status… |
dtc_update_checkout_settings | store:write | – | Change the live checkout; read first with dtc_get_checkout_settings and send only sections that change: shipping_options (WHOLE list; left out = removed; keep ids),… |
dtc_update_markets | store:write | – | Turn international selling on or off and/or replace the list of markets (send the WHOLE list: markets left out are removed; keep each market’s id) |
dtc_update_notification_template | store:write | – | Change an automatic email: subject, HTML body, text body, or on/off |
dtc_update_return_rules | store:write | – | Change the return rules: whether returns are accepted, the window (7-365 days), who pays return shipping (customer or free) and a restocking fee (0-50%) |
dtc_update_store_policy | store:write | – | Replace one policy with the store’s own text (HTML allowed; automatic updates for it stop), or send body "" to unpublish it |
dtc_update_tax_settings | store:write | – | Turn automatic sales tax at checkout on/off and whether shipping is taxed |
dtc_update_translation | store:write | – | Save translations you made, in one language — you translate (from each source in dtc_list_translations), we store them and the store shows them within a minute |
dtc_upsert_metaobject | store:write | – | Create or update a metaobject (custom data) |
dtc_upsert_shipping_zone | store:write | – | Add or change a shipping zone: the places it covers and its WHOLE rate list (rates left out are removed; keep each rate’s id) |
dtc_validate_against_brand | store:read | – | Check copy or design against the store’s brand system and report drift |
Products
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_bulk_import_products | catalog:write | – | Create or change up to 200 products in one call (2,000 variants in total); each item is the dtc_upsert_product shape |
dtc_delete_product | catalog:write | – | Delete a product (soft delete — recoverable) |
dtc_delete_product_image | catalog:write | – | Remove one photo from a product (image id from dtc_get_product) |
dtc_get_product | catalog:read | – | Get one product with full detail — every variant (id, sku, price, compare_at_price, inventory), images, description, category, status |
dtc_get_product_feeds | catalog:read | – | The store’s Google Shopping and Facebook & Instagram product feeds: both links, how many products/variants are in them, when built and last downloaded by Google/Meta,… |
dtc_import_products_csv | catalog:write | – | Import products from a Shopify-format product CSV, as csv text or csv_url (public, <8 MB) |
dtc_import_products_from_shopify | catalog:write | – | Import products from Shopify product page links (up to 20 a call, e.g. https://shop.example.com/products/blue-mug): title, description, options, variants, prices, photos… |
dtc_list_product_reviews | catalog:read | – | List the store’s product reviews for moderation, newest first: who wrote it, stars, title, text, photos, whether the purchase is verified, status (published = on the… |
dtc_list_products | catalog:read | – | List/search THIS store’s products |
dtc_rebuild_product_feed | catalog:read | – | Rebuild the store’s Google Shopping and Facebook & Instagram product feeds now (after fixing products, so the next download by Google or Meta sees the change) and return… |
dtc_set_product_images | catalog:write | – | Change a product’s photos in one call: add (public links to image files, copied into the store’s own image storage — never linked to the other site; up to 20), alt (the… |
dtc_update_product | catalog:write | – | Update an existing product’s fields (title, price, status DRAFT/ACTIVE/ARCHIVED, tags (replaces the list), vendor, type, description, and its search engine listing:… |
dtc_upsert_product | catalog:write | – | Create a product, or change one, in one call: options (Size, Color…), every variant’s price, SKU and stock, pictures and description |
Catalog
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_digital_file | catalog:write | – | Add a file buyers download after buying this product, copied from a public https link (a direct download that opens without signing in; up to 2 GB) |
dtc_bulk_update_variants | catalog:write | – | Update up to 250 variants in ONE call (price, compare_at_price — null ends a sale —, sku, title, inventory_quantity, inventory_tracked, inventory_policy continue|deny,… |
dtc_create_bundle | catalog:write | – | Create a bundle: a new product made of this store’s items (e.g |
dtc_create_collection | catalog:write | – | Create a product collection (category) and optionally assign products |
dtc_delete_collection | catalog:write | – | Delete a collection (soft delete — recoverable) |
dtc_delete_review | catalog:write | – | Delete a review: it leaves the product page and the moderation list, and cannot be brought back |
dtc_get_review_request_settings | catalog:read | – | The automatic email asking buyers to review what they bought: on or off, how many days after delivery it goes (and after shipping when delivery is not tracked), and how… |
dtc_import_reviews | catalog:write | – | Bring the store’s EXISTING reviews over from another review app’s CSV export (Judge.me, Yotpo, Loox, Shopify Product Reviews; auto-detected), as csv text or csv_url |
dtc_list_bundles | catalog:read | – | List the store’s bundles (a product made of other items): price, status, how many bundles the items in stock can make, and each item with its quantity and stock |
dtc_list_collections | catalog:read | – | List the store’s product collections (categories) |
dtc_list_digital_files | catalog:read | – | The files a buyer downloads after buying this product: id, filename, size_bytes, status (uploading | ready — only ready files are sent to buyers) and variant_id (null =… |
dtc_moderate_review | catalog:write | – | Publish a review on its product page, or hide it |
dtc_remove_digital_file | catalog:write | – | Take a file off a product (file id from dtc_list_digital_files) |
dtc_reply_to_review | catalog:write | – | Post the store’s public reply under a review (an empty reply removes the current one) |
dtc_search_catalog | catalog:read | – | Search the SOURCING catalog — supplier/dropship products the store does NOT sell yet (keyword, category, price); no search = the newest products |
dtc_set_collection_products | catalog:write | – | Replace the full ordered set of products in a collection |
dtc_update_bundle | catalog:write | – | Change what is inside a bundle, or make an existing single item a bundle of other items |
dtc_update_collection | catalog:write | – | Update a collection’s title, description, or published state |
dtc_update_review_request_settings | catalog:write | – | Change the review-request email: enabled, delay_days (1-60 days after delivery), fallback_days (1-90 days after shipping, when delivery is not tracked) |
Inventory
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_adjust_inventory | write_inventory | – | Add or remove units available to sell (e.g |
dtc_create_purchase_order | write_inventory | – | Create a DRAFT purchase order to buy stock from a supplier (Supplier Network or any outside supplier) |
dtc_get_low_stock_alert | read_inventory | – | The low-stock lines inventory.low uses: the store’s default_threshold and any variants with their own number |
dtc_get_purchase_order | read_inventory | – | Read one purchase order: supplier, receiving location, items with ordered / received quantities and unit costs, total, and when it was sent and received |
dtc_list_inventory | read_inventory | – | Stock levels by variant and location: available, on hand, committed, incoming |
dtc_list_inventory_locations | read_inventory | – | List the places the store keeps stock (warehouses, the default location) |
dtc_list_low_stock | read_inventory | – | Items running low now — the same list as the Inventory screen and low-stock email: stock left, units on the way (purchase orders), units sold per day (30 days), days… |
dtc_list_preorders | read_inventory | – | List items with a pre-order date: the ship date shoppers see, whether the pre-order is still running (it switches itself off after the date) and the stock left |
dtc_list_purchase_order_suppliers | read_inventory | – | List who this store can order stock from: Supplier Network suppliers it sells products from (with network_supplier_id) and outside suppliers it has ordered from before… |
dtc_list_purchase_orders | read_inventory | – | List the store’s purchase orders, newest first, with their items, quantities received, unit costs and total |
dtc_move_inventory | write_inventory | – | Move units between stock states at one location, e.g. from incoming to available when a delivery arrives |
dtc_receive_purchase_order | write_inventory | – | Record stock that arrived on a purchase order: adds it to the store’s stock at the order’s location (stock history reason “received”), takes it off “on the way”, and by… |
dtc_send_purchase_order | write_inventory | – | Order the stock: email the purchase order to the supplier from the store’s own address (replies go to the store) and mark it ordered (units count as on the way) |
dtc_set_inventory | write_inventory | – | Set how many units are available to sell, after a count |
dtc_set_low_stock_alert | write_inventory | – | Set when inventory.low fires: when a tracked product’s stock (all locations) changes and is at or below this number |
dtc_set_low_stock_threshold | write_inventory | – | Give one item its own low-stock threshold in units (overrides the store’s units_below), or send units_below null to go back to the store’s rule |
dtc_set_preorder | write_inventory | – | Pre-order for an item: while out of stock it keeps selling with “Ships by <date>” on the product page, cart, checkout and order email; the order line is marked pre-order |
dtc_suggest_reorder | read_inventory | – | Suggest how many of each item to order so stock plus what is already on the way lasts cover_days at the last 30 days’ sales pace |
dtc_update_low_stock_settings | write_inventory | – | Change when an item counts as running low for the whole store and whether the store team gets an email when an item first runs low (once per item, again only after it… |
dtc_update_purchase_order | write_inventory | – | Change a purchase order. Before it is sent: supplier, items (lines replaces all of them), receiving location, expected date, note |
Orders
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_order_note | orders:write | – | Add a note to an order’s timeline, signed as this agent (e.g |
dtc_buy_shipping_label | orders:write | – | MONEY — buy a shipping label: charges the merchant’s billing card amount_cents, then fulfils the order with its tracking (the customer gets the shipping email; on an… |
dtc_cancel_payment_link | orders:write | – | Stop a payment link on this order so the customer can no longer pay with it (for example when they paid another way — then record it with collect mark_paid on a new… |
dtc_connect_fulfillment_service | orders:write | – | Connect a warehouse that ships orders: Warehance (PlatformDTC sends it each order) or a warehouse with its own system (callback_url) |
dtc_edit_order_items | orders:write | – | Change the items on an order that hasn’t fully shipped: set a new quantity on a line (0 takes it off; shipped units can’t be taken off) and/or add product variants |
dtc_exchange_order_items | orders:write | – | Exchange items: the customer sends some units back (a return is opened and approved) and other product variants ship in a NEW order linked to this one |
dtc_fulfill_order | orders:write | – | Ship an order with tracking: all of it, or some items (line_items with quantities = one parcel; call again per parcel) |
dtc_get_dispute | orders:read | – | Read one dispute: status, amount, reason, network reason code, evidence due date, whether evidence was submitted, and Visa Compelling Evidence 3.0 state |
dtc_get_dispute_evidence | orders:read | – | Read the evidence currently staged or submitted on a Stripe dispute (including what Stripe pre-filled) and Stripe’s Visa Compelling Evidence 3.0 verdict on it… |
dtc_get_order | orders:read | – | One order in full: line items (with order_item_id), totals, customer, addresses, payment, fulfilment and timeline |
dtc_get_order_downloads | orders:read | – | The buyer’s downloads for one order: status (active, held — waiting for the merchant because the order looked risky —, revoked, or null when the order has no downloads),… |
dtc_get_order_risk | orders:read | – | Fraud analysis for one order — the panel on the order page: PlatformDTC’s own risk level (normal, elevated, highest; never Stripe Radar’s raw score) and the indicators… |
dtc_get_order_shipping | orders:read | – | What shipped and what is left on one order: every line with its quantity, units refunded, shipped, still to ship and held by a fulfilment partner (with the order_item_id… |
dtc_get_pos_sale | orders:read | – | One in-person sale with its items, payments and refunds |
dtc_get_pos_session | orders:read | – | One register session with its summary: sales count and total, card vs cash, refunds, cash expected vs counted and the difference, pay-ins and pay-outs |
dtc_get_retention_analytics | orders:read | – | How the cancel flow performs: cancel attempts, how many were saved, cancelled or abandoned, save rate, recurring revenue saved, and results by reason, offer and A/B… |
dtc_get_retention_flow | orders:read | – | The cancel flow: what a subscriber sees when they try to cancel in the customer portal — on or off, the reasons they pick from, the save offer behind each reason, the… |
dtc_get_shipment | orders:read | – | Get one parcel with its full scan timeline, newest first |
dtc_get_subscription | orders:read | – | Read one customer subscription: status, product and lines, quantity, price, delivery frequency, payment method on file, pending one-time add-ons, history and invoices —… |
dtc_list_disputes | orders:read | – | List chargebacks and inquiries: status, amount, reason, evidence due date, whether evidence was submitted, and the order |
dtc_list_flagged_orders | orders:read | – | List the store’s flagged orders, newest first: orders PlatformDTC’s fraud analysis ranked Elevated or Highest risk, and orders the card’s bank already reported (a fraud… |
dtc_list_fulfillment_services | orders:read | – | The warehouses and suppliers that ship this store’s orders: name, provider (warehance or their own system), whether credentials are set (never the credentials), stock… |
dtc_list_order_fulfillment_orders | orders:read | – | An order’s shipments as the warehouses see them: which supplier or warehouse has each, its state, and any error sending it to the warehouse |
dtc_list_order_payment_links | orders:read | – | List the payment links asking for money on an order (from Edit items / Exchange with collect payment_link, or a paid draft invoice): amount, who it was emailed to, when,… |
dtc_list_order_refunds | orders:read | – | List the refunds already made on an order (amount, gateway, status, when) |
dtc_list_orders | orders:read | – | The store’s orders, newest first — the same list and filters as the Orders screen |
dtc_list_pos_sales | orders:read | – | In-person (POS) sales, newest first: total, how it was paid, amount still due, open/completed/voided |
dtc_list_pos_sessions | orders:read | – | Register sessions (a till opened and closed), newest first |
dtc_list_retention_offers | orders:read | – | The save offers a cancel flow can show (pause, skip, discount, coupon, swap plan or product, gift), on or off |
dtc_list_retention_sessions | orders:read | – | Recent cancel attempts, newest first: the subscription, reason given, offer shown, outcome (saved, cancelled, abandoned, pending) |
dtc_list_shipments | orders:read | – | The store’s parcels, newest shipped first: order, tracking number, carrier, status and reason, destination, ship/first-scan/delivery dates, ETA, days since last scan |
dtc_list_subscription_journeys | orders:read | – | Subscriber rewards: each is one rule (the Nth order, a spend level or time subscribed) and one reward (free gift, discount, loyalty points or an email), on or off |
dtc_list_subscription_plans | orders:read | – | List the store’s subscription plans (delivery frequency, standing discount, prepaid terms) |
dtc_list_subscriptions | orders:read | – | List the store’s customer (recurring) subscriptions |
dtc_move_fulfillment_order | orders:write | – | Move one shipment nobody has started to another supplier’s warehouse (it is asked to ship it, or sent to Warehance), or leave supplier_id out to bring it back to the… |
dtc_redispatch_fulfillment | orders:write | – | Send a shipment to its warehouse (Warehance) again after fixing what made it fail (dtc_list_order_fulfillment_orders shows the error) |
dtc_release_downloads | orders:write | – | Release downloads that were held because the order looked risky: the buyer gets the email with their link |
dtc_reroute_order | orders:write | – | Send an order’s unshipped items to the suppliers their products are tagged with now (the fix for an order placed before a product had its supplier) |
dtc_resend_downloads | orders:write | – | Email the buyer a fresh download link for this order: a new link with a new expiry date and download counts starting over; the old link stops working |
dtc_resend_payment_link | orders:write | – | Email the customer a fresh payment link for an open or expired one on this order (new 30-day link; the old link stops working) |
dtc_reship_order | orders:write | – | Send lost or stuck items again free: a new zero-price order for the same items to the same address, linked to the original, stocked and routed like any order |
dtc_revoke_downloads | orders:write | – | Turn off the buyer’s download link for this order (for example after a refund or a chargeback): the files can no longer be downloaded with it |
dtc_shipping_label_order | orders:read | – | Shipping labels: what a label for this order needs — ship-to address, shippable lines with product weights (unit_weight_oz 0 = no weight set), items_weight_oz, whether… |
dtc_shipping_label_rates | orders:read | – | Shipping labels: rate a parcel for an order across carriers (USPS, UPS, FedEx…) |
dtc_submit_dispute_evidence | orders:write | – | Save evidence on a chargeback as a draft (submit=false, default, repeatable) or send it to the bank (submit=true — ONE-WAY, can’t be changed) |
dtc_sync_fulfillment_stock | orders:write | – | Read stock levels from a warehouse’s own system now (warehouses connected with a callback_url) and set them on the store’s products |
dtc_test_fulfillment_service | orders:write | – | Check that PlatformDTC can sign in to a connected warehouse (Warehance) with the credentials saved for it: ok true, or ok false with the warehouse’s error |
dtc_update_order | orders:write | – | Change an order’s tags and/or its Notes box (the dashboard’s Edit tags / Edit note) |
dtc_update_order_shipping_address | orders:write | – | Change where an order ships. Send only the fields that change |
dtc_update_tracking | orders:write | – | MUTATION — set or replace the tracking number on a fulfilled order |
dtc_void_shipping_label | orders:write | – | MUTATION — void an unused shipping label |
Checkout recovery
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_list_abandoned_checkouts | checkout:read | – | List abandoned checkouts (carts that didn’t convert) with customer, product and value |
dtc_recovery_cart_conversion | checkout:read | – | Check whether a specific abandoned cart has since converted into an order |
dtc_recovery_due_carts | checkout:read | – | List abandoned carts DUE for a recovery touch this tick, pre-tagged by the Gateway (eligibility, touch stage, segment, consent, holdout, dedup, routing already applied —… |
dtc_recovery_exceptions | checkout:read | – | List recovery carts routed for agent reasoning or human approval (the exceptions the automatic pipeline did not auto-handle) |
dtc_recovery_log_touch | checkout:recover | – | Log a DELIVERED recovery touch so the next tick advances the cart’s touch stage |
dtc_recovery_mint_discount | checkout:recover | – | Mint a single-use recovery discount with margin guardrails |
dtc_recovery_report | checkout:read | – | Recovery outcome report for this store: touched / recovered / revenue and true lift vs the holdout |
dtc_recovery_send_email | checkout:recover | – | Send ONE recovery email via the store’s branded template + SMTP |
dtc_recovery_suggest_products | checkout:read | – | Fetch up to 3 REAL store products to cross-sell in a recovery email (‘You might also like’) |
Customers
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_customer_note | customers:write | – | Add a note to a customer’s timeline, signed as this agent |
dtc_cancel_membership | customers:write | – | Cancel a paid membership: billing stops now, perks last to the end of the paid period, no refund; can be resumed until then |
dtc_create_segment | customers:write | – | Create a customer segment from filter rules (country, purchase count, events, etc.) |
dtc_delete_customer | customers:write | – | Delete a customer (soft delete — recoverable) |
dtc_delete_segment | customers:write | – | Delete a customer segment. Refused while a campaign that has not finished (draft, scheduled, sending or paused) still uses it as its audience — the answer names them;… |
dtc_get_buyer_survey_results | customers:read | – | Results of the store’s day-30 buyer survey (a short email about 30 days after an order arrives, to buyers who agreed to emails; once per buyer every 90 days): settings… |
dtc_get_customer | customers:read | – | Get one customer by id — profile, contact, subscription/marketing status and lifetime stats |
dtc_get_member | customers:read | – | Get one membership member by id: customer, plan, status, renewal/access-end/grace dates, subscription id, paid periods, lifetime savings, the latest lifecycle events and… |
dtc_get_segment | customers:read | – | Get one customer segment by segment_id with its estimated and real-time size |
dtc_list_customer_notes | customers:read | – | A customer’s tags, the Notes box on their page, and the timeline notes the team left (newest first, up to 100) |
dtc_list_customers | customers:read | – | List the store’s customers with aggregate stats (total, email/SMS subscribers) |
dtc_list_members | customers:read | – | List the store’s paid-membership members |
dtc_list_membership_plans | customers:read | – | List the store’s membership plans (draft, active, archived) with fee, billing interval, perks, per-variant member prices, access rules (member-only / early-access… |
dtc_list_membership_tiers | customers:read | – | Membership tiers (better perks members earn by paid periods or spend) |
dtc_list_segments | customers:read | – | List customer segments (saved audiences) |
dtc_loyalty_adjust_points | customers:write | – | Add (positive) or remove (negative) points from a member’s balance, with a reason the member sees in their history |
dtc_loyalty_get_member | customers:read | – | Get one loyalty member: balance, tier and progress to the next tier, the full points history (every earn, redemption, refund reversal, adjustment and expiry with its… |
dtc_loyalty_get_program | customers:read | – | Get the store’s Loyalty & Rewards program: on/off, points per 1.00 spent, sign-up / review / birthday points, the reward rate (N points = X off, minimum points, max… |
dtc_loyalty_list_members | customers:read | – | List loyalty members: email, name, points balance, lifetime points, VIP tier, last activity |
dtc_loyalty_program_stats | customers:read | – | Loyalty program performance: members (and active in 90 days), points outstanding and their value (the store’s liability), points issued vs redeemed (30 days and all… |
dtc_loyalty_update_program | customers:write | – | Replace the store’s loyalty program settings and tier list in one write (send the whole object from dtc_loyalty_get_program with your changes; tiers you leave out are… |
dtc_merge_customers | customers:write | – | Merge a duplicate customer into this one |
dtc_resume_membership | customers:write | – | Undo a cancellation while the paid period has not ended: billing restarts at the end of that period, nothing is charged now |
dtc_tag_customers | customers:write | – | Add and/or remove tags on up to 500 customers at once (other tags stay) |
dtc_update_segment | customers:write | – | Change a customer segment: name, description, filters (the same rules as dtc_create_segment; the member count is recounted) or is_active |
dtc_upsert_customer | customers:write | – | Create a customer, or update one if customer_id is given |
Marketing
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_activate_automation | marketing:send | ✓ | Turn a flow ON. THIS SENDS to real customers — every matching event from now on enrols someone and sends email/SMS unattended — so it carries the same approval gate as… |
dtc_affiliate_report | marketing:read | – | How the affiliate program performed over a date range (default the last 30 days): clicks, orders, sales and commission in the range, plus commission on hold and owed now… |
dtc_approve_content_post | marketing:write | – | Approve a submitted post so it earns from its views (now and until its 14 days are over), within the campaign’s per-post cap and budget; also clears a ‘held’ view-spike… |
dtc_cancel_campaign | marketing:write | – | Call back a SCHEDULED campaign before it sends; it will not go out |
dtc_create_affiliate | marketing:write | – | Add an affiliate or influencer to the store’s program (the merchant turns it on in Affiliates) |
dtc_create_automation | marketing:write | – | Build a lifecycle FLOW (abandoned checkout recovery, post-purchase, welcome, winback) that runs forever on a trigger — the standing counterpart to a one-off campaign |
dtc_create_campaign | marketing:write | – | Create (draft) a marketing campaign — EMAIL, SMS, or PUSH_NOTIFICATION — targeting a segment or audience filter |
dtc_create_content_campaign | marketing:write | – | Start a Content Rewards campaign: it goes live on the public creator board (platformdtc.com/rewards) where anyone can join, post on TikTok or YouTube and submit the link |
dtc_delete_automation | marketing:write | – | Delete a flow that is a draft or paused (it stops for good; its history stays in the reports and it shows as STOPPED) |
dtc_delete_campaign | marketing:write | – | Delete a DRAFT campaign. Scheduled, sent or cancelled campaigns stay so their history remains in the reports |
dtc_generate_ad_video | marketing:write | ✓ | Make a short ad video of one product from its own photos, title and price, plus your words (headline, captions, offer, button text) |
dtc_get_affiliate_marketplace | marketing:read | – | Whether the store’s affiliate program is listed in the PlatformDTC affiliate marketplace (platformdtc.com/earn, where creators from every PlatformDTC store find programs… |
dtc_get_automation | marketing:read | – | Get one flow with its full step copy, cadence and exit conditions |
dtc_get_campaign | marketing:read | – | Get one marketing campaign by id (content, audience, status, metrics) |
dtc_get_content_campaign | marketing:read | – | One Content Rewards campaign with its brief, products (title, link, real photos), the text every post must carry, numbers, and views_by_day (views its posts gained each… |
dtc_get_content_campaign_draft | marketing:read | – | The Content Rewards campaign this store would start with: title, brief (written from its best sellers’ own titles and descriptions), donts, product_ids + products (real… |
dtc_get_email_template | marketing:read | – | One saved email or SMS template with its full copy (subject, HTML, text, preheader, SMS text) |
dtc_list_affiliates | marketing:read | – | List the store’s affiliates and influencers with their link, code, status (pending = applied and waiting for review, active, paused, rejected) and numbers: clicks,… |
dtc_list_automations | marketing:read | – | List this store’s automation flows with their trigger, cadence and status |
dtc_list_campaigns | marketing:read | – | List marketing campaigns (EMAIL/SMS/PUSH) |
dtc_list_content_campaigns | marketing:read | – | List the store’s Content Rewards campaigns (creators post about the store’s products on TikTok or YouTube and are paid per 1,000 real views) |
dtc_list_content_creators | marketing:read | – | Creators who earned in the store’s Content Rewards campaigns: name, email, where they asked to be paid (payout_details), approved posts, views, earned_cents, paid_cents… |
dtc_list_content_posts | marketing:read | – | Posts creators submitted to the store’s Content Rewards campaigns, ones waiting for review first |
dtc_list_email_templates | marketing:read | – | List the store’s saved email and SMS templates (name, type, subject, on/off, read_only for built-in ones) |
dtc_mark_affiliate_paid | marketing:write | – | Record that the merchant paid an affiliate outside PlatformDTC (PayPal, bank) |
dtc_pause_automation | marketing:write | – | Pause a running flow — no new customers enter it |
dtc_record_content_payout | marketing:write | – | Record that the merchant paid a creator outside PlatformDTC (PayPal, bank) |
dtc_reject_content_post | marketing:write | – | Decline a submitted post. Anything it earned that hasn’t been paid goes back to the budget |
dtc_send_campaign | marketing:send | ✓ | Send or schedule an existing campaign |
dtc_set_affiliate_marketplace | marketing:write | – | “Let creators sell for you” — the affiliate program’s one switch |
dtc_social_create_post | marketing:write | – | Post on the store’s Facebook Page and linked Instagram: text, one photo, one video (Reel), or a 2–10 item carousel, now or at publish_at |
dtc_social_delete_post | marketing:write | – | Delete a draft, scheduled or failed Facebook / Instagram post so it never goes out |
dtc_social_list_posts | marketing:read | – | The store’s Facebook and Instagram posts, newest first: drafts, scheduled (with the time), posted (with the link to the live post) and failed (with the reason in plain… |
dtc_update_automation | marketing:write | – | Change an automation flow’s name, a message’s copy (email subject, preheader, HTML, text; SMS text) or the wait before a message |
dtc_update_campaign | marketing:write | – | Edit a DRAFT campaign: name, subject, email HTML, SMS text, push title/body, audience or planned send time |
dtc_update_content_campaign | marketing:write | – | Change a Content Rewards campaign: brief, dos/don’ts, products, required caption text, platforms, end date ("" clears it), budget_cents (not below what approved posts… |
dtc_upsert_email_template | marketing:write | – | Create a saved email or SMS template, or change one by passing template_id |
dtc_whatsapp_create_template | marketing:write | – | Write a new WhatsApp message and submit it to Meta for review (usually approved within a day; check dtc_whatsapp_templates) |
dtc_whatsapp_replies | marketing:read | – | The latest messages customers sent the store on WhatsApp (who, their number, what they wrote, when) |
dtc_whatsapp_send | marketing:send | – | Send an approved WhatsApp message to customers who opted in: everyone, one segment (segment_id) or one customer (customer_id) |
dtc_whatsapp_sends | marketing:read | – | Recent WhatsApp sends, newest first: which message, to whom (everyone opted in, a segment, one customer), status in words, and how many customers it reached, were sent,… |
dtc_whatsapp_status | marketing:read | – | Is WhatsApp connected and how is it doing: the business number and name, Meta’s quality rating, whether order updates (confirmed / shipped with tracking) are on and… |
dtc_whatsapp_templates | marketing:read | – | List the store’s WhatsApp messages (templates): name, language, marketing or utility, Meta’s review status in words (approved = ready to send, waiting for review,… |
Ads
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_connect_meta_catalog | ads:write | – | Connect the store’s products to Facebook: makes (or refreshes) a product catalog in the business portfolio that owns the store’s ad account, has it fetch the store feed… |
dtc_google_campaign_options | ads:read | – | What Google campaigns this Google Ads account can run right now, in plain words: Search, Performance Max (needs purchase tracking in Google Ads, plus the store logo and… |
dtc_google_connection | ads:read | – | Google ads: which Google Ads accounts are connected to this store, whether any needs reconnecting, and each account’s daily ad limit |
dtc_google_create_pmax_campaign | ads:write | – | Build a Google Performance Max campaign (Search, Shopping, YouTube, Display, Gmail, Maps from one budget) |
dtc_google_create_search_campaign | ads:write | – | Build a Google Search campaign for the store’s products: one ad group per product with keywords from its name and a responsive search ad to its page (or one ad group for… |
dtc_google_create_shopping_campaign | ads:write | – | Build a Standard Shopping campaign over every product in the Merchant Center feed linked to this Google Ads account (refused in plain words when none is linked) |
dtc_google_get_insights | ads:read | – | Spend, clicks, conversions, conversion value and ROAS by campaign, live from Google, in the account’s currency |
dtc_google_get_limits | ads:read | – | Google Ads safety settings: each account’s daily ad limit (daily_limit_minor, display; null = no limit), the cost-per-order guard (ceilings per product, recent cuts) and… |
dtc_google_launch_brand_protection | ads:write | – | Build a Google Search campaign that shows the store’s own ad when people search its name, with an ad written only from the store’s name and product names |
dtc_google_list_campaigns | ads:read | – | A Google Ads account’s campaigns with status, type and daily budget (running first) |
dtc_google_set_auto_optimize | ads:write | – | Automatic search-term tuning on Google: every day it adds searches that brought 2+ sales as keywords and blocks searches that cost 20+ clicks without a sale |
dtc_google_set_budget | ads:write | – | Change a Google campaign’s daily budget |
dtc_google_set_cpa_ceiling | ads:write | – | Change the Google cost-per-order guard for one product (or the whole store with product_key ”*“) |
dtc_google_set_limit | ads:write | – | Set the daily ad limit of a Google Ads account |
dtc_google_set_status | ads:write | – | Pause (immediate) or turn on a Google campaign |
dtc_market_landing_pages | ads:read | – | Market research: the pages other stores’ ads send shoppers to (product, advertorial, listicle, quiz, collection, homepage), with page_type, screenshot_url, ad counts and… |
dtc_market_offers | ads:read | – | Market research: the offers other stores’ ad landing pages make (bundles, % off, buy-X-get-Y, free gifts, tiers), with each offer’s tiers, biggest saving, entry price… |
dtc_market_search_ads | ads:read | – | Search the ad library: real Facebook/Instagram ads from other stores |
dtc_market_top_brands | ads:read | – | Market research: the biggest online stores by measured monthly traffic (SimilarWeb), with domain, country, niche, traffic, growth and ad counts |
dtc_market_winning_products | ads:read | – | Market research (AdLibrarySpy data across all stores, not this store’s): products many stores are advertising right now, most-advertised first |
dtc_meta_connection | ads:read | – | Facebook ads: which ad accounts are connected to this store, whether any needs reconnecting, missing permissions, and each account’s daily ad limit |
dtc_meta_create_ad | ads:write | – | Create one PAUSED Shop Now ad from an uploaded image_hash or video_id, on a Page with can_advertise=true |
dtc_meta_create_ad_set | ads:write | – | Create one PAUSED ad set optimized for purchases (needs a pixel) under a campaign that holds the budget |
dtc_meta_create_campaign | ads:write | – | Create one PAUSED sales campaign (Facebook budget optimization: the daily budget lives on the campaign) |
dtc_meta_get_autopilot | ads:read | – | “Grow winning products” on Facebook: whether it is on (store_disabled=false and mode live), its rules (budget, min_roas, min_purchases, ladder_pct), the campaigns it is… |
dtc_meta_get_cpa_guard | ads:read | – | “Protect my money” on Facebook: each product’s cost-per-order ceiling (ceiling_cents = the merchant’s own, default_ceiling_cents = its 7-day average order value, in… |
dtc_meta_get_daily_limits | ads:read | – | Each connected Facebook ad account with the merchant’s daily ad limit: the most PlatformDTC lets run per day on it (daily_limit_minor in the account’s minor units,… |
dtc_meta_get_insights | ads:read | – | Spend, purchases, purchase value and ROAS by campaign for today (live), yesterday, 7d or 30d, in the ad account’s currency |
dtc_meta_get_page_guard | ads:read | – | “Pause ads when their page is down” on Facebook: whether it is on (enabled, mode live | dry | off), how often it checks every ad’s landing page (check_minutes), when it… |
dtc_meta_launch_sales_campaign | ads:write | ✓ | Build a complete sales campaign in one job: campaign → purchase-optimized ad set → one ad per image or video, all PAUSED, then park ONE go-live approval for the merchant |
dtc_meta_list_campaigns | ads:read | – | An ad account’s campaigns with status and daily budget, newest first |
dtc_meta_list_pages | ads:read | – | Facebook Pages an ad account can run ads on |
dtc_meta_list_pixels | ads:read | – | Pixels that can track purchases for an ad account |
dtc_meta_resume_page_ads | ads:write | – | Turn back on the Facebook ad sets and ads that “Pause ads when their page is down” paused, once their page works again |
dtc_meta_set_autopilot | ads:write | – | Turn “Grow winning products” on or off |
dtc_meta_set_budget | ads:write | – | Change the daily budget of a campaign (or an ad set with its own budget) |
dtc_meta_set_cpa_ceiling | ads:write | – | Change the Facebook cost-per-order guard for one product (or the whole store with product_key ”*“) |
dtc_meta_set_daily_limit | ads:write | – | Set the daily ad limit of a Facebook ad account |
dtc_meta_set_page_guard | ads:write | – | Turn “Pause ads when their page is down” on or off |
dtc_meta_set_status | ads:write | – | Pause (immediate) or turn on a campaign, ad set or ad |
dtc_meta_upload_image | ads:write | – | Copy an image from a public link into the ad account |
dtc_meta_upload_video | ads:write | ✓ | Upload a video from a public link into the ad account |
dtc_tiktok_connection | ads:read | – | Check the store’s TikTok ad accounts: which are connected, whether one needs reconnecting, and each account’s daily ad limit |
dtc_tiktok_create_ad | ads:write | – | Create a video ad in an ad group made with dtc_tiktok_create_ad_group |
dtc_tiktok_create_ad_group | ads:write | – | Add an ad group (who sees the ads: countries; placements chosen automatically) to a campaign made with dtc_tiktok_create_campaign |
dtc_tiktok_create_campaign | ads:write | – | Create a TikTok campaign with a daily budget |
dtc_tiktok_get_insights | ads:read | – | Spend, impressions, clicks, purchases, purchase value and ROAS by campaign, live from TikTok, for today, yesterday, the last 7 or 30 days (the ad account’s own days) |
dtc_tiktok_list_campaigns | ads:read | – | List a TikTok ad account’s campaigns with status (ENABLED / PAUSED), goal and daily budget, live first; managed_by_agent marks the ones made here |
dtc_tiktok_set_budget | ads:write | – | Change a TikTok campaign’s daily budget |
dtc_tiktok_set_status | ads:write | – | Pause (immediate) or turn on a TikTok campaign |
dtc_tiktok_upload_image | ads:write | – | Give TikTok a public link to an image (JPG or PNG), e.g. a cover for a video ad |
dtc_tiktok_upload_video | ads:write | – | Give TikTok a public link to the merchant’s video (mp4 or mov, vertical 9:16 works best, up to 500 MB) for an ad |
Analytics
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_get_ad_insights | analytics:read | – | Get ad performance (spend, impressions, clicks, conversions, ROAS) for connected accounts over a date range |
dtc_get_co_purchase | analytics:read | – | Frequently-bought-together evidence for bundles: product pairs ranked by how many distinct orders contained both, over the recent window (default 3 months) |
dtc_get_dashboard_analytics | analytics:read | – | Get the complete store dashboard for a range: revenue, orders, ad spend, ROAS, profit breakdown, top products, top countries, daily timeseries |
dtc_get_funnel | analytics:read | – | Conversion funnel for the CRO agent: impressions→clicks→add-to-cart→purchase counts, each step’s conversion rate, the overall conversion, and the bottleneck (the step… |
dtc_get_goal | analytics:read | – | Return the brand’s active goal: objective, target_metrics (target_roas/cac/revenue/ltv, daily_spend_cap, horizon_days), guardrails (max_daily_spend,… |
dtc_goal_dashboard | analytics:read | – | Combined orchestrator dashboard: active goal + target-vs-actual progress + action log + Self-Driving Score over a window |
dtc_heartbeat_brief | analytics:read | – | The heartbeat’s live evidence right now, without writing a note: sales today/yesterday/7 days vs comparable periods, hours since the last paid order vs normal, ad… |
dtc_heartbeat_get | analytics:read | – | Read the Store Heartbeat — PlatformDTC’s plain-words check-in for the owner |
dtc_metrics_catalog | analytics:read | – | The list of every store report an agent can read with dtc_metrics_query, grouped by area (overview, sales, profit, payments, ads, traffic, checkout, subscriptions,… |
dtc_metrics_export | analytics:read | – | Raw rows for your own analysis (not totals), oldest first: orders, order_items, refunds, ad_insights, subscriptions, subscription_events, shipments, support_tickets (no… |
dtc_metrics_query | analytics:read | – | One store report in full, as raw numbers — exactly the owner’s Analytics screens: every metric (unit, value, previous, % change, daily or hourly series) and every table… |
dtc_record_progress | analytics:read | – | Record one orchestrator tick against the active goal: a batch of per-metric observations (metric=roas|cac|revenue|ltv|spend, with… |
dtc_store_snapshot | analytics:read | – | Everything about the store at once, in raw numbers — the owner’s Analytics screens: sales, profit after every cost, payments and fees, ads (spend, ROAS, cost per new… |
Offer optimization
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_activate_upsell_funnel | offers:approve | – | Turn an upsell funnel on: after checkout, shoppers who match it are shown its offers, and accepting a product offer charges their saved payment method at once |
dtc_apply_winner | offers:approve | – | Apply the merchant-confirmed winning offer and start rollout monitoring |
dtc_archive_membership_plan | offers:write | – | Stop selling a membership plan: nobody new can join |
dtc_archive_membership_tier | offers:write | – | Retire a membership tier; its members move to the tier they qualify for at the next recalculation |
dtc_check_offer_margin | offers:read | – | Check a discount’s profit BEFORE offering it: give a product and discount_percent; returns offer_price, margin_abs, margin_percent and margin_safe (dollars, major units) |
dtc_claim_job | offers:write | – | Claim a pending offer job before working on it |
dtc_create_membership_plan | offers:write | – | Create a paid membership plan: an auto-renewing fee for member discounts, free shipping and gated access |
dtc_create_membership_tier | offers:write | – | Add a membership tier members can earn |
dtc_create_session | offers:write | – | Create an offer optimization session for one product and enqueue its create_offers job |
dtc_create_upsell_funnel | offers:write | – | Create a post-purchase upsell funnel as a draft: shoppers see nothing until it is turned on with dtc_activate_upsell_funnel |
dtc_fail_job | offers:write | – | Close a claimed offer job that cannot be completed |
dtc_get_abtest_results | offers:read | – | Raw A/B metrics per variant: views, buys, conversionRate |
dtc_get_evaluation_status | offers:read | – | Read the stored evaluation recommendation and winner-application state for a session index |
dtc_get_market_benchmarks | offers:read | – | Product research from market-wide data (all stores, not this one): top brands in a category by ad activity and traffic, their live promo patterns (percent_off,… |
dtc_get_monitor_data | offers:read | – | Live rollout metrics for the applied winner: views, buys, conversionRate within the monitor window |
dtc_get_session_context | offers:read | – | Internal source of truth for offer drafting: session state + constraints (cost, max_discount_percent, requirePositiveMargin), product + variants with prices, 3-month… |
dtc_get_upsell_funnel | offers:read | – | Read one upsell funnel in full: who sees it (targeting), its versions and every step (what is offered, discount, branch after accept/decline) and version, which… |
dtc_list_jobs | offers:read | – | List pending OFFER OPTIMIZE jobs (create_offers | evaluate_abtest | monitor_decision) whose availability time has passed |
dtc_list_upsell_funnels | offers:read | – | List the store’s post-purchase upsell funnels (the offers shown right after checkout): name, status (draft, active = shoppers see it, paused, archived), priority, dates… |
dtc_pause_upsell_funnel | offers:write | – | Pause an upsell funnel: shoppers stop seeing it from the next order |
dtc_set_membership_prices | offers:write | – | Set member prices for products (replaces the plan’s whole list; [] removes all) |
dtc_start_selected_abtest | offers:approve | – | Start the A/B test for the merchant-selected variants (at least two) |
dtc_submit_evaluation | offers:write | – | Store the A/B evaluation recommendation |
dtc_submit_monitor_decision | offers:write | – | Submit exactly one monitor decision: keep (insufficient data or acceptable performance), update (viable but change copy/value/conditions via ‘updated’), replace… |
dtc_submit_offer_drafts | offers:write | – | Store the validated draft offer variants for a session index |
dtc_update_membership_plan | offers:write | – | Change a membership plan’s name, description, order, status (draft/active) or perks; the fee, interval and product can’t change |
dtc_update_membership_tier | offers:write | – | Change a membership tier; only the fields you send change |
dtc_update_upsell_funnel | offers:write | – | Replace an upsell funnel with the full new version: read it with dtc_get_upsell_funnel, change it, and send it back whole with the same version (a stale version answers… |
Finance
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_get_balance | finance:read | – | Get the merchant’s prepaid PlatformDTC payment balance in US dollars (Settings → Billing; pays PlatformDTC charges such as SMS): balance, frozen, total deposited and… |
dtc_get_payout | finance:read | – | One payout to the bank, transaction by transaction: the charges, refunds, fees and disputes it is made of, linked to their orders where known |
dtc_get_transactions | finance:read | – | List the merchant’s financial transactions (trading statement); filter by search/status, paginate, sort |
dtc_get_verification_status | finance:read | – | Whether the store can take payments and get paid out: resolution ok (all set), provide_info (the merchant must open the dtc_start_verification link and submit more… |
dtc_list_payouts | finance:read | – | Money paid out to the store’s bank account from PlatformDTC Payments, newest first (amount, status, expected arrival date), plus the balance available and on its way |
dtc_referral_status | finance:read | – | Refer a merchant: the store owner’s personal referral link (https://platformdtc.com/?via=<code>; every store’s “Made with PlatformDTC” badge carries it too) and what it… |
dtc_start_verification | finance:read | – | Begin verifying the merchant’s business so the store can take payments and get paid |
Assigned Fulfillment Orders
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_network_supplier_accept | write_assigned_fulfillment_orders | – | MUTATION (supplier) — accept a routed fulfillment request, committing to ship it |
dtc_network_supplier_orders | read_assigned_fulfillment_orders | – | SUPPLIER side — fulfilment orders routed to THIS store as a Supplier Network supplier: id (fo_id), order_name, status, request_status, destination, line_items [{id, sku,… |
dtc_network_supplier_reject | write_assigned_fulfillment_orders | – | MUTATION (supplier) — reject a routed fulfillment request; the line goes back to the retailer and its network cost is voided |
Content
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_ai_answers_question | write_content | – | Add a question for the weekly AI answers check, written the way a shopper would ask an AI assistant (e.g |
dtc_add_auto_blog_topic | write_content | – | Queue a topic for Auto blog to write about next, e.g. “how to choose a running shoe” (3–120 characters; no disease names or cure/treat promises) |
dtc_create_blog_article | write_content | – | Write a blog post. The live store shows it within minutes when published |
dtc_create_store_page | write_content | – | Add a content page to the store (About us, FAQ, Shipping…) |
dtc_delete_blog_article | write_content | – | Delete a blog post for good. Requires write_content |
dtc_delete_store_page | write_content | – | Delete a content page for good; links to it stop working |
dtc_get_ai_answers | read_content | – | AI answers: PlatformDTC’s weekly check of whether AI assistants (ChatGPT, Perplexity, Gemini — each asked through OpenRouter with its own web search on) mention and link… |
dtc_get_auto_blog | read_content | – | Auto blog: whether PlatformDTC writes blog posts for this store on its own (enabled), how many a week (posts_per_week, 1–7), the topics queued to write next (each with… |
dtc_get_showcase | read_content | – | Made with PlatformDTC: whether this store is shown on PlatformDTC’s public showcase of real stores (platformdtc.com/made-with), and exactly what visitors see |
dtc_list_blog_articles | read_content | – | List blog posts, newest first, across blogs or in one blog |
dtc_list_blogs | read_content | – | List the store’s blogs (most stores have one, “News”) |
dtc_list_store_pages | read_content | – | List the store’s content pages (About us, FAQ, policies…): title, web address, shown or hidden |
dtc_remove_ai_answers_question | write_content | – | Remove a question from the weekly AI answers check by its id (questions[].id from dtc_get_ai_answers) |
dtc_remove_auto_blog_topic | write_content | – | Remove a queued Auto blog topic (one not written yet) by its id from dtc_get_auto_blog |
dtc_update_ai_answers | write_content | – | Turn the weekly AI answers check on or off for this store |
dtc_update_auto_blog | write_content | – | Turn Auto blog on or off and set how many posts a week |
dtc_update_blog_article | write_content | – | Change a blog post; only the fields you send change |
dtc_update_showcase | write_content | – | Turn this store’s listing on PlatformDTC’s public showcase (platformdtc.com/made-with) on or off, choose what it shows, and set its words |
dtc_update_store_page | write_content | – | Change a content page; only the fields you send change |
Discounts
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_discount_codes | write_discounts | – | Add more codes to a code discount (each works like the existing ones) |
dtc_create_discount | write_discounts | – | Create a discount: a code customers type at checkout, or one that applies by itself |
dtc_delete_discount | write_discounts | – | Delete a discount and its codes for good; customers can no longer use them |
dtc_get_discount | read_discounts | – | One discount with its codes, value, dates, limits and times used |
dtc_list_discounts | read_discounts | – | List the store’s discounts, newest first: title, code count, value, status (active, scheduled, expired) and times used |
dtc_update_discount | write_discounts | – | Change a discount. Renaming or ending it now (status expired) applies at once; anything else (value, dates, limits, what it covers, turning it back on) gives money away:… |
Draft Orders
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_complete_draft_order | write_draft_orders | – | Turn a draft order into a real order marked PAID |
dtc_create_draft_order | write_draft_orders | – | Build a draft order. Nothing is charged and the customer is not contacted; totals are worked out for you |
dtc_get_draft_order | read_draft_orders | – | One draft order with its lines, totals and customer |
dtc_list_draft_orders | read_draft_orders | – | List draft orders (orders the merchant builds by hand, e.g. for a phone or wholesale customer), newest first |
dtc_send_draft_order_invoice | write_draft_orders | – | Email the draft order’s customer an invoice with a secure pay link: the customer pays on the store’s own checkout page (card, Apple Pay / Google Pay, Klarna / Afterpay… |
dtc_update_draft_order | write_draft_orders | – | Replace a draft order’s contents (send the whole draft: lines you leave out are removed) |
Fulfillments
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_network_supplier_fulfill | write_fulfillments | – | MUTATION (supplier) — ship an accepted fulfillment order with tracking |
Gift Cards
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_create_gift_card | write_gift_cards | – | Issue a gift card — real spendable value |
dtc_credit_gift_card | write_gift_cards | – | Add value to a gift card. Without approval_context {“merchant_confirmed”: true} (sent only after the merchant confirmed) the call only returns status pending_approval… |
dtc_credit_store_credit | write_gift_cards | – | Give a customer store credit they can spend at checkout |
dtc_deactivate_gift_card | write_gift_cards | – | Turn a gift card off for good; its balance can no longer be spent |
dtc_debit_gift_card | write_gift_cards | – | Take value off a gift card (the customer loses it) |
dtc_debit_store_credit | write_gift_cards | – | Take store credit away from a customer |
dtc_get_store_credit | read_gift_cards | – | A customer’s store credit balance and its history in one currency |
dtc_list_gift_cards | read_gift_cards | – | List the store’s gift cards: last characters of the code, balance, currency, on or off, expiry |
Network
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_get_supplier_terms | read_network | – | The payment terms agreed with each Supplier Network supplier the store buys from (pay within N days, late fee), and any proposal waiting for an answer |
dtc_mark_supplier_invoice_paid | write_network | – | Record that the store paid a Supplier Network invoice (paid true) or remove the mark (false) |
dtc_network_get_listing | read_network | – | One Supplier Network listing as an importable offer: product, product_verified, supplier (ships_from/to, handling days, verified, scorecard — absent = not enough data,… |
dtc_network_import_listing | write_network | – | Import a Supplier Network listing into THIS store as a product (images and variants copied; cost = wholesale; SKU = supplier SKU; its orders route to the supplier) |
dtc_network_list_imports | read_network | – | Products THIS store imported from the Supplier Network, with supplier, listing_status, per-variant price_cents / wholesale_cents / purchasable (false = supplier paused… |
dtc_network_retailer_statement | read_network | – | What THIS store owes each Supplier Network supplier for a date range (no money passes through PlatformDTC; suppliers bill directly; 0% fee in year one) |
dtc_network_search | read_network | – | Search the Supplier Network: wholesale products other PlatformDTC merchants list for you to import and resell |
dtc_network_supplier_statement | read_network | – | SUPPLIER side — what each retailer owes THIS store for a date range, grouped per retailer: orders, wholesale_cents, shipping_cents, total_cents, fee_cents (0% in year… |
dtc_network_suppliers | read_network | – | Supplier Network directory: active suppliers with a live listing, verified first — name, handle, website, ships_from/ships_to ([] = worldwide), handling days,… |
Online Store Navigation
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_get_menu | read_online_store_navigation | – | One navigation menu with all its links, in order |
dtc_list_menus | read_online_store_navigation | – | List the store’s navigation menus (main menu, footer…) with how many links each has |
dtc_update_menu | write_online_store_navigation | – | Replace a navigation menu’s links (send the full list in order; links you leave out are removed) |
Payments
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_cancel_order | payments:write | – | Cancel an order like the owner’s Cancel button: items back to stock, unshipped fulfilment stopped, the customer is emailed, and unless refund=false everything still on… |
dtc_cancel_order_as_fraud | payments:write | – | Cancel an order as fraud: cancels it, stops unshipped fulfilment, refunds what it still holds as fraudulent (charges under chargeback left alone), cancels the customer’s… |
dtc_change_subscription_price | payments:write | – | Change what a subscription bills from the next renewal: unit_price (per item) OR total_price (per delivery, shipping and discounts included) |
dtc_charge_subscription_now | payments:write | – | Charge a subscription’s saved payment method now (the dashboard’s Charge now): the next renewal’s amount (after the store’s renewal increase limit) plus one-time… |
dtc_refund_order | payments:write | – | Refund an order fully or partly: one amount split across every charge (checkout and upsells), never a charge under chargeback |
Returns
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_return_tracking | write_returns | – | MUTATION — save the tracking of the parcel the customer is sending back, on an approved (open) return |
dtc_approve_return | write_returns | – | MUTATION — approve a requested return (status becomes open) so the customer can send the items back |
dtc_create_return | write_returns | – | MUTATION — open a return request on an order (status requested) |
dtc_decline_return | write_returns | – | MUTATION — decline a requested return |
dtc_get_return | read_returns | – | Get one return with its items, reasons and return tracking |
dtc_get_self_serve_returns | read_returns | – | Read whether customers can start returns and exchanges themselves on the store (the form on the store’s Returns page), how requests are approved (review = the merchant… |
dtc_list_returns | read_returns | – | List the store’s returns, newest first: status (requested, open = approved, closed = received, declined, canceled), order, items, reasons and return tracking |
dtc_mark_return_received | write_returns | – | The items came back: close an approved (open) return |
dtc_update_self_serve_returns | write_returns | – | Turn customers’ self-serve returns on or off and change how they work |
Subscriptions
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_archive_subscription_plan | subscriptions:write | – | Stop offering a subscription plan at checkout and in the portal |
dtc_cancel_subscription | subscriptions:write | – | Cancel a subscription, with the reason (recorded on its history and churn reports) |
dtc_change_subscription_frequency | subscriptions:write | – | Move a subscription to another of the store’s plans (delivery frequency + standing discount), now (re-anchors the next charge) or at_period_end |
dtc_change_subscription_quantity | subscriptions:write | – | Change how many units each delivery ships (and bills) from the next renewal |
dtc_create_retention_offer | subscriptions:write | – | Create a save offer. Customers see it only once a cancel-flow reason points to it (dtc_update_retention_flow) |
dtc_create_subscription_journey | subscriptions:write | – | Create a subscriber reward. It runs at each successful renewal and never blocks the charge |
dtc_create_subscription_plan | subscriptions:write | – | Create a subscription plan (delivery frequency + standing discount, optionally prepaid) shoppers can pick at checkout and in their customer portal |
dtc_delete_subscription_journey | subscriptions:write | – | Delete a subscriber reward for good (rewards already given stay) |
dtc_pause_subscription | subscriptions:write | – | Pause a subscription: no renewals until it is resumed |
dtc_reschedule_subscription | subscriptions:write | – | Move the next charge: either to a date (next_charge_at) or later by delay_days |
dtc_resume_subscription | subscriptions:write | – | Resume a paused (or revive a cancelled) subscription; renewals continue from the next scheduled date |
dtc_skip_subscription_order | subscriptions:write | – | Skip the next delivery: the next charge moves one delivery later (or to skip_to) |
dtc_swap_subscription_product | subscriptions:write | – | Swap the subscription’s product/variant from the next renewal, at that variant’s own price (nothing charged now) |
dtc_unskip_subscription_order | subscriptions:write | – | Undo a skip: move the next charge back one delivery |
dtc_update_retention_flow | subscriptions:write | – | Change the cancel flow; only the parts you send change (reasons replaces the whole list) |
dtc_update_retention_offer | subscriptions:write | – | Change a save offer; only the fields you send change (config replaces the whole config) |
dtc_update_subscription_journey | subscriptions:write | – | Change a subscriber reward; only the fields you send change |
dtc_update_subscription_plan | subscriptions:write | – | Change a subscription plan; only the fields you send change |
Support
| Tool | Scope | Async | What |
|---|---|---|---|
dtc_add_ticket_note | write_support | – | Add an internal note to a ticket |
dtc_create_saved_reply | write_support | – | Save a reply the team can reuse in the support inbox |
dtc_delete_saved_reply | write_support | – | Delete a saved reply. Requires write_support |
dtc_get_chat_settings | read_support | – | The live chat on the store’s website: whether it is on, the greeting shoppers see first, and the team’s hours (when set, shoppers are told when a person is back) |
dtc_get_support_agent_settings | read_support | – | What the built-in AI support agent may do when customers email the store: on or off, and per action (reply, order status, close, escalate, pause/skip/cancel/discount a… |
dtc_get_support_ticket | read_support | – | Get one support ticket with its whole thread: every customer message, reply and internal note, oldest first, with attachments |
dtc_get_ticket_customer | read_support | – | Who is the customer on this ticket: orders placed, lifetime spend (total_spent_cents), active subscriptions and next charge, plus their 3 latest orders with carrier,… |
dtc_list_saved_replies | read_support | – | The support team’s saved replies (canned answers): title and text |
dtc_list_support_agent_drafts | read_support | – | Replies and actions the AI support agent prepared |
dtc_list_support_inboxes | read_support | – | List the store’s connected support inboxes (mailboxes): id, address, when it last checked for mail and any error |
dtc_list_support_tickets | read_support | – | List support tickets (conversations in the store’s Support inbox), newest activity first |
dtc_reply_to_ticket | write_support | – | Reply to the customer the way they wrote in: email from the store’s support mailbox (threaded), the website chat (also emailed if they left an address), or a text for… |
dtc_review_support_agent_reply | write_support | – | Approve or reject a reply the AI support agent drafted |
dtc_update_chat_settings | write_support | – | Change the live chat on the store’s website |
dtc_update_saved_reply | write_support | – | Change a saved reply’s title and/or text |
dtc_update_support_agent_settings | write_support | – | Change what the AI support agent may do |
dtc_update_ticket | write_support | – | Change a ticket’s status (open, pending = waiting on the customer, closed, spam) and/or who it is assigned to |