add_campaign_image
ChatGPTAdd ONE photo to a campaign, keeping every image already there — create_campaign and update_campaign can't carry a real photo file (JSON tool arguments can't). One image per call, max 2MB decoded, JPEG/PNG/WEBP/GIF. To build a campaign with several photos, call this once per photo. To REMOVE a photo, use update_campaign's images field with the URL list from get_campaign minus the one you want gone.
add_product_image
ChatGPTAdd ONE photo to a product, keeping every image already there. This is how an image actually reaches the catalog over MCP: send it here as base64, not as a field on upsert_products or update_product (JSON tool arguments can't carry a real file upload — a URL is the only image input those two accept). One image per call, max 2MB decoded, JPEG/PNG/WEBP/GIF. To build a product with several photos, call this once per photo. To REMOVE a photo, use update_product's images field with the URL list from get_product minus the one you want gone — no base64 needed for that direction. Whether your assistant can actually supply the base64 depends on your MCP client, not on this tool — see this server's CLAUDE.md if a call like this fails to produce real bytes.
approve_order
ChatGPTApprove a pending order, moving it to approved so it can be dispatched. Owner-only — an employee account gets a 403, which is the backend working as intended, not an error to route around. Only works on an order still in pending. Approving is the merchant's commercial decision: ask before calling, and mention anything create_order or a fraud check flagged.
cancel_detected_order
ChatGPTMark a detected order as cancelled — the right call for a buyer who backed out, or a detection that misread the conversation. Keeps the record for review, unlike delete_detected_order.
create_bundle
ChatGPTCreate a bundle offer. fixed_price sets the bundle's total outright, percent_off_total and amount_off_total discount the summed component prices. The call is rejected if the resulting final price would be negative. Check the components' own prices and any active discounts before picking a value — the backend enforces non-negative, not profitable.
create_campaign
ChatGPTCreate a campaign. Counts against the plan's campaign limit — check get_account_usage first, since hitting the cap fails the call. Pass scheduled_time to create it as scheduled; omit it for a draft. Creating a campaign publishes nothing to Facebook on its own. To set an image, create the campaign here first, then call add_campaign_image once per photo.
create_delivery_option
ChatGPTAdd a delivery option (a name and a cost) that buyers pick at checkout and orders reference by delivery_option_id. Part of first-time storefront setup — a store with no delivery options forces every order to a manual delivery cost.
create_order
ChatGPTCreate an order for this business. This is a real commercial record: it decrements stock and enters the merchant's fulfilment queue, and most of these are cash-on-delivery. Get the merchant's explicit go-ahead on the exact items, quantities, price and delivery address before calling — do not infer an order from a chat message on your own. Check list_products for stock first; the call fails rather than partially reserving if an item is short. Pass delivery_option_id from list_delivery_options, or delivery_cost to override it manually. It is created as pending; approving it is a separate, owner-only step. Owner-only, like every order tool.
create_product_discount
ChatGPTAttach a discount to a product. Either a fixed amount off or a percent off, with an optional active window. Shows on the storefront while active.
create_social_post
ChatGPTDraft a social post. This only saves a draft — nothing reaches Facebook until publish_social_post or schedule_social_post is called, which is deliberately a separate, explicit step. At most 3 products per post. Drafting is the safe way to show a merchant proposed copy before anything goes out.
create_steadfast_courier_order
ChatGPTHand an approved order to Steadfast as a real courier consignment. This books a pickup with a third-party courier and commits the merchant to a delivery attempt and its cost — cancelling means dealing with Steadfast directly, not undoing it here. Require an explicit go-ahead from the merchant for each order. Before calling: the order must be approved (see approve_order) and its delivery address complete — Steadfast builds the consignment from the address stored on the order, so a missing district or station becomes a failed delivery, not a validation error here.
create_steadfast_setup_link
ChatGPTGet a one-time link for the merchant to connect Steadfast. They open it, sign in again there, and paste their Steadfast API key and secret on that page — this tool never sees or asks for either value. The link expires in 30 minutes and works once. Tell the merchant to open it themselves; after they're done, confirm with get_steadfast_status rather than asking them to report back.
delete_bundle
ChatGPTDelete a bundle offer permanently. For an offer the merchant might run again, update_bundle with is_active false is the reversible choice.
delete_campaign
ChatGPTDelete a campaign. This does NOT retract anything already published to Facebook from it — those posts stay live on the Page and have to be removed there. Confirm with the merchant first.
delete_delivery_option
ChatGPTRemove a delivery option. Existing orders that used it keep their recorded delivery cost, but buyers can no longer choose it at checkout.
delete_detected_order
ChatGPTPermanently delete a detected order record. Intended for hallucinated detections with nothing behind them. If a real buyer really did back out, cancel_detected_order preserves the trail — prefer that.
delete_discount
ChatGPTRemove a discount. The product returns to its normal price on the storefront immediately.
delete_order
ChatGPTPermanently delete an order record, restocking its items if it had been processed. This destroys the sales history for that order — for a real order the buyer walked away from, set_order_status 'cancelled' is almost always what the merchant actually wants. Reserve deletion for junk records (duplicates, test orders, orders an AI mis-detected) and confirm before calling. Owner-only.
delete_product
ChatGPTDelete a product from the catalog. It disappears from the public storefront immediately. Confirm with the merchant first — setting stock to 0 via update_product hides it from buyers without destroying the record and its order history.
delete_social_post
ChatGPTDelete a social post record from the app. If it was already published, this removes only the app's copy — the post stays live on Facebook and has to be deleted there separately.
disconnect_daraz
ChatGPTDisconnect the Daraz account. Reconnecting needs the merchant to walk through Daraz's own browser consent screen again, which cannot be done from here — so confirm before calling.
disconnect_shopify
ChatGPTDisconnect the Shopify store. Reconnecting needs Shopify's browser OAuth flow in the app — confirm before calling.
find_conversation_by_user
ChatGPTFind the Messenger conversation for a given Facebook user id — the bridge from an order's sender_id or a comment author back to the chat thread.
get_account_usage
ChatGPTGet how much of each metered feature is left this period: products, campaigns, Facebook posts, comment syncs, backup posts and AI replies. Check this BEFORE any action that consumes quota — upsert_products, create_campaign, sync_comments and the marketplace imports, plus every path that posts to the live Facebook Page (publish_social_post, schedule_social_post, publish_campaign_to_facebook, post_message_to_page, repost_backup_post — all five draw from the same monthly fb_posts allowance and share one hourly rate limit on top of it). What happens at zero differs by resource: upsert_products fails only the OVER-cap items and still creates the rest (read its response's errors array); create_campaign and the five Facebook-publish tools fail the whole call outright. Either way, once a monthly counter reads 0 remaining here, calling the tool anyway just wastes a round trip on a guaranteed failure — tell the merchant they've hit their plan's limit and need to upgrade in the Seller AutoBusiness app to do more this period, rather than retrying the same call. Plan name, subscription status, renewal date and billing details are deliberately NOT available here — if the merchant asks about their plan, pricing or subscription, tell them to open the app rather than guessing.
get_assistant_mode
ChatGPTRead the Page's AI assistant mode — none, order placement, or full assistance. This governs whether the app is already replying to buyers automatically. Check it before proposing that the merchant reply to threads by hand, and before drafting replies the assistant may already have sent.
get_bundle
ChatGPTGet one bundle: its items, quantities, variation selections, pricing mode and final price.
get_business_profile
ChatGPTGet the connected business: name, storefront slug and public storefront URL, shop type, currency, full address and coordinates, contact details, social links, branding (logo, cover, brand colours), checkout order policy, and the configured delivery options. Start here — most other tools read more usefully once you know the store's currency, category and whether a storefront slug is set.
get_campaign
ChatGPTGet one campaign in full: copy, time window, linked products and bundles, images, and status.
get_conversation_messages
ChatGPTRead the messages in one Messenger conversation, newest first. Read the thread before drafting any reply — the buyer has usually already been told the price, the stock or the delivery time, and repeating it wrong costs the sale.
get_customer_summaries
ChatGPTGet per-buyer summaries for the Page's conversations — order history and engagement, so a reply can be written knowing whether this is a repeat customer or a first contact.
get_daraz_category_attributes
ChatGPTGet the attributes Daraz requires for one category. Daraz rejects a listing that omits a required attribute, so check this before an export rather than debugging the rejection afterwards.
get_daraz_status
ChatGPTCheck the Daraz connection: connected or not, the seller id, and whether the authorisation has expired. An expired connection is the usual cause of Daraz sync failures and can only be fixed by the merchant reconnecting in the app — Daraz's consent screen needs a real browser.
get_detected_orders_for_conversation
ChatGPTGet the detected orders for one conversation, as a timeline with the pricing breakdown and delivery details the AI extracted. Use this to check a detection against what the buyer actually wrote.
get_facebook_connection
ChatGPTCheck whether a Facebook Page is connected to this business, and which one. Read this before any other Facebook tool — everything else here returns an error, not an empty result, when no Page is connected. One Page per business today. Connecting a Page needs Meta's browser consent screen and cannot be done from here; send the merchant to the app's Facebook tab.
get_facebook_page_stats
ChatGPTGet the connected Page's follower count.
get_order
ChatGPTGet one order in full: line items with variations, customer and delivery address, delivery option and cost, discounts, totals, status timestamps, and courier/consignment details when dispatched. Owner-only.
get_product
ChatGPTGet one product in full: description, pricing, bargain percent, per-variation stock and images, and any active discounts. The response also lists any campaigns this product is attached to, each with its OWN images array — those belong to the campaign, not to this product. Only product.images is this product's own photo list; never copy a URL from a campaign's images into update_product's images field for this product, it will be ignored (campaigns and products store images separately).
get_shopify_status
ChatGPTCheck the Shopify connection and which shop is linked. Connecting requires Shopify's own browser OAuth flow, done in the app.
get_steadfast_analytics
ChatGPTRead Steadfast delivery analytics for one of several views: overview, monthly-revenue, demographics, delivery-performance, payment, comparative, trends or forecast. delivery-performance is the one that shows the successful-vs-returned split, which is the number that decides whether cash-on-delivery is working for this merchant.
get_steadfast_status
ChatGPTCheck whether Steadfast courier is connected, and read the account balance. Check this before suggesting any courier workflow. To connect Steadfast, use create_steadfast_setup_link — no tool here ever takes the API key/secret directly, and none can read a stored credential back.
get_store_code
ChatGPTGet the business's store code — the code an employee types during signup to join this workspace. Owner-only; an employee account gets a 403. Treat it as sensitive: anyone with it can request to join the workspace, so give it to the merchant, don't scatter it into a shared transcript.
get_storefront_analytics
ChatGPTGet storefront funnel analytics: total tracked events, storefront views, product views, add-to-cart, purchases, conversion rate, add-to-cart rate, open orders and fulfilment rate, plus top products, referrers, locations, networks, devices, platforms, top categories, top customers, cart additions and low-stock products. Owner-only — an employee account gets a 403. Read the numbers honestly: most Seller AutoBusiness stores are small, so a conversion rate off a few dozen sessions is noise, not a trend. Say when there is too little data rather than narrating a story into it.
get_verification_status
ChatGPTCheck whether the connected account's email and phone number are verified. Unverified email is a common reason other actions behave unexpectedly, so check here before concluding something is broken.
import_daraz_orders
ChatGPTImport orders from Daraz into this app's order system.
import_daraz_products
ChatGPTImport products from Daraz into this catalog, matching on Daraz product id so a re-run updates rather than duplicates. Counts against the plan's product limit — check get_account_usage first.
import_shopify_orders
ChatGPTImport orders from Shopify into this app's order system.
import_shopify_products
ChatGPTImport products from Shopify into this catalog. Counts against the plan's product limit — check get_account_usage first.
list_backup_posts
ChatGPTList the Page posts backed up into the app, with their media status. This is the continuity safety net: if the Facebook Page is ever restricted or lost, these are the posts the merchant still has. Counts against the plan's backup_posts allowance — get_account_usage's backup_posts counter is the fastest way to see the total. Each group here also carries total_count for that page (independent of the limit/before cursor), so prefer that over paginating to the end for a count. Rate-limited per business alongside the other Facebook list tools; a 429 means back off rather than retrying in a loop.
list_bundles
ChatGPTList bundle offers: the products and variations in each, the pricing mode, and the computed final price against the current component prices. A bundle whose components changed price since it was created can quietly lose its margin — worth checking before promoting one.
list_campaigns
ChatGPTList the business's campaigns with their status (draft, scheduled, active, ended) and scheduled time. A campaign is the marketing container — copy, a time window, linked products and bundles, an optional discount code. Publishing it to Facebook is a separate step.
list_connected_apps
ChatGPTList the MCP clients currently connected to this Seller AutoBusiness account, with when each was connected and last used. Useful when a merchant asks what has access to their store.
list_conversation_states
ChatGPTRead the AI assistant's per-conversation state across the Page — where each buyer has got to in the order flow. Useful for spotting threads the assistant has stalled on and a human needs to pick up.
list_conversations
ChatGPTList Messenger conversations for the connected Page: last message preview, unread count, and the buyer's profile. Filter by unread, needs_reply, has_orders or no_orders; sort by latest, hot_leads, most_orders or most_engaged. needs_reply sorted by hot_leads is the queue a merchant should work first thing in the morning.
list_daraz_brands
ChatGPTList the brands Daraz recognises, for setting a listing's brand on export.
list_daraz_categories
ChatGPTList Daraz's category tree. A Daraz listing must sit in one of Daraz's own categories, not the merchant's local ones, so read this before exporting a product to Daraz for the first time.
list_daraz_orders
ChatGPTList orders on the connected Daraz account.
list_daraz_products
ChatGPTList the products on the connected Daraz seller account.
list_delivery_options
ChatGPTList the delivery options configured for this business (name and cost). Order creation takes a delivery_option_id from here, so read this before create_order unless the merchant wants a manual delivery cost instead.
list_detected_orders
ChatGPTList orders the AI detected inside Messenger conversations, before they become real orders. Each carries a confidence score, its source, and the conversation it came from. These are MODEL INFERENCES about what a buyer agreed to, not confirmed orders — read the underlying thread with get_conversation_messages before acting on one, and never create a real order from a low-confidence detection without the merchant checking it.
list_direct_messages
ChatGPTList Messenger threads with cursors for paging back through older ones.
list_facebook_posts
ChatGPTList the Page's posts with cached engagement — views, reach, reactions, comments, shares — plus a preview of the two newest comments on each. Sort by recent, most_viewed, most_reacted or most_commented to find what actually worked. These are the stored/backed-up copies, so this reads the merchant's own data rather than calling Facebook live — EXCEPT that engagement older than 10 minutes is refreshed from Facebook on the fly, so a page full of stale rows can still cost real Graph API calls. The response carries total_count (the full count for this page, independent of the before cursor) — read that instead of paginating to the end just to answer 'how many posts'. Read calls here are rate-limited per business (a burst + hourly ceiling) specifically to catch a loop that pages through the same history over and over; a 429 means back off, not retry immediately.
list_facebook_profiles
ChatGPTList the Facebook profiles the app has seen interacting with the Page — the names and ids behind comment authors and Messenger senders.
list_leads
ChatGPTList merged customer leads — one row per contact, with the names, emails, addresses and sources collected across every variant of that contact, plus last interaction time. Sources span orders, Messenger and Facebook activity. Requires a connected Facebook Page AND an assistant mode other than 'none'; if either is missing the response says so in not_connected rather than returning an empty list, so read that field before telling a merchant they have no leads. This is personal customer data — phone numbers and addresses. Summarise it for the merchant; don't dump the raw list into a transcript that doesn't need it.
list_my_reports
ChatGPTList reports this account has submitted through this connector, with their status.
list_ongoing_orders
ChatGPTList orders still in flight — approved or dispatched but not yet delivered, returned or cancelled. This is the working queue for a daily operations check. Owner-only.
list_orders
ChatGPTList orders with filtering and search. status follows the lifecycle: pending, approved, dispatched, delivered, returned, cancelled. source separates orders typed in manually from those that came out of a Facebook/Messenger conversation. Search matches order id, customer name, phone, email, address and consignment id. Owner-only, like every order tool here — an employee account gets a 403 from the backend, which is the permission model working, not a fault to route around.
list_product_categories
ChatGPTList the category/subcategory values already in use in this catalog. Read this before creating products so new items land in the merchant's existing taxonomy instead of inventing a parallel one.
list_products
ChatGPTList the business's catalog, paginated. Each product carries price, stock, category, variations and images. Stock is the number to check before confirming an order; a price of 0 means 'contact for price' rather than free.
list_shopify_orders
ChatGPTList orders from the connected Shopify store.
list_shopify_products
ChatGPTList products on the connected Shopify store.
list_social_posts
ChatGPTList social posts drafted in the app, with their status (draft, scheduled, published), linked products and campaign. This is the staging area between writing copy and it appearing on the Page.
list_steadfast_orders
ChatGPTList consignments currently in flight with Steadfast, with their delivery status.
mark_detected_order_created
ChatGPTMark a detected order as having been turned into a real order, so it stops showing up in the review queue. Call this AFTER create_order succeeds for that detection — calling it without actually creating the order silently drops a buyer's request out of the queue.
post_message_to_page
ChatGPTPost a plain text message straight to the connected Facebook Page, with no draft step. Public immediately and not editable afterwards. Prefer create_social_post + publish_social_post when the merchant may want to review or reuse the copy — this is the one-shot path. This connector is meant to post AUTONOMOUSLY on the merchant's behalf — real server-side limits, not a confirmation prompt, are the actual guardrail: the plan's monthly quota, PLUS a flat 5-per-hour and 20-per-day ceiling on Facebook posting regardless of plan (posting is public and shapes the Page, so it stays the most tightly capped of the three action tiers this connector enforces — see CLAUDE.md). If this call fails with a monthly-quota message, tell the merchant to upgrade their plan — do not retry. If it fails with a rate-limit message, that ceiling resets on its own (hourly or daily); do not loop or retry immediately.
publish_campaign_to_facebook
ChatGPTPublish a campaign's copy to the connected Facebook Page IMMEDIATELY, and mark the campaign as posted. Public the moment this returns, and removing it means deleting the post on Facebook. It posts the campaign's content as text — use add_campaign_image beforehand if the campaign should carry a photo; this call does not attach one on its own. This connector is meant to post AUTONOMOUSLY on the merchant's behalf — real server-side limits, not a confirmation prompt, are the actual guardrail: the plan's monthly quota, PLUS a flat 5-per-hour and 20-per-day ceiling on Facebook posting regardless of plan (posting is public and shapes the Page, so it stays the most tightly capped of the three action tiers this connector enforces — see CLAUDE.md). If this call fails with a monthly-quota message, tell the merchant to upgrade their plan — do not retry. If it fails with a rate-limit message, that ceiling resets on its own (hourly or daily); do not loop or retry immediately.
publish_social_post
ChatGPTPublish a drafted post to the connected Facebook Page IMMEDIATELY. It becomes public the moment this returns, and taking it down means deleting it on Facebook. This connector is meant to post AUTONOMOUSLY on the merchant's behalf — real server-side limits, not a confirmation prompt, are the actual guardrail: the plan's monthly quota, PLUS a flat 5-per-hour and 20-per-day ceiling on Facebook posting regardless of plan (posting is public and shapes the Page, so it stays the most tightly capped of the three action tiers this connector enforces — see CLAUDE.md). If this call fails with a monthly-quota message, tell the merchant to upgrade their plan — do not retry. If it fails with a rate-limit message, that ceiling resets on its own (hourly or daily); do not loop or retry immediately.
repost_backup_post
ChatGPTRe-publish a backed-up post to the Facebook Page as a new post. Public immediately. Useful for reviving a post that performed well, or restoring content after a Page issue — but it creates a duplicate of something that may still be live, so check list_facebook_posts first to avoid an obvious duplicate. This connector is meant to post AUTONOMOUSLY on the merchant's behalf — real server-side limits, not a confirmation prompt, are the actual guardrail: the plan's monthly quota, PLUS a flat 5-per-hour and 20-per-day ceiling on Facebook posting regardless of plan (posting is public and shapes the Page, so it stays the most tightly capped of the three action tiers this connector enforces — see CLAUDE.md). If this call fails with a monthly-quota message, tell the merchant to upgrade their plan — do not retry. If it fails with a rate-limit message, that ceiling resets on its own (hourly or daily); do not loop or retry immediately.
revoke_connected_app
ChatGPTRevoke one connected app's access to this account, permanently. Revoking the connection you are currently using ends this session immediately — every following tool call fails to authenticate, and reconnecting means walking through the OAuth login again. Confirm which connection the merchant means before calling.
schedule_social_post
ChatGPTSchedule a DRAFT post to publish on the Facebook Page at a future time. scheduled_time must be ISO 8601 WITH a timezone offset and in the future — a bare local timestamp is rejected. Only works on a post still in draft. This sends the content to Facebook's own scheduler RIGHT NOW (Facebook fires it later; nothing more happens on our side) — so the quota/rate-limit check below applies at this call, not at the future publish time. This connector is meant to post AUTONOMOUSLY on the merchant's behalf — real server-side limits, not a confirmation prompt, are the actual guardrail: the plan's monthly quota, PLUS a flat 5-per-hour and 20-per-day ceiling on Facebook posting regardless of plan (posting is public and shapes the Page, so it stays the most tightly capped of the three action tiers this connector enforces — see CLAUDE.md). If this call fails with a monthly-quota message, tell the merchant to upgrade their plan — do not retry. If it fails with a rate-limit message, that ceiling resets on its own (hourly or daily); do not loop or retry immediately.
select_facebook_page
ChatGPTChoose which of the merchant's connected Facebook Pages this business acts as. One Page per business, so this REPLACES the current selection — every later comment, message and publish goes to the newly selected Page. Confirm with the merchant before switching; publishing to the wrong Page is public and not undoable.
send_media_message
ChatGPTSend ONE image to a buyer over Messenger, as base64 — send_message is text-only and can't carry a photo. Reaches a real person immediately and cannot be unsent. Call this directly, same as send_message — sending the right product photo fast is the point; same 300/hour ceiling applies. One image per call, max 2MB decoded, JPEG/PNG/WEBP or GIF. Facebook's 24-hour messaging window applies here too — a refusal means the window is closed, not a bug to retry. Video is NOT supported by this tool: Messenger video files run far larger than a tool argument should ever carry.
send_message
ChatGPTSend a Messenger message from the Page to one buyer. This reaches a real person immediately and cannot be unsent — but responding fast is the actual value of this connector, so call this directly as part of normal customer engagement. Limited to 300/hour per business, a ceiling sized to catch a runaway loop (e.g. resending to the same person) rather than to throttle real conversations. Read get_conversation_messages first so the reply actually fits the thread — getting the FACTS wrong (price, stock, delivery time already promised) is the real risk here, not sending too often. If Facebook's 24-hour messaging window has closed the send is refused by Meta — that is their policy, so say so rather than retrying.
set_bundle_image
ChatGPTSet a bundle's image, as base64. Replaces whatever image is there now — a bundle has one image field, not a gallery. One image per call, max 2MB decoded, JPEG/PNG/WEBP/GIF.
set_business_cover_photo
ChatGPTSet the storefront cover photo, as base64. Replaces whatever cover is there now. One image per call, max 2MB decoded, JPEG/PNG/WEBP/GIF. Not owner-restricted server-side, unlike most account tools here.
set_business_logo
ChatGPTSet the storefront logo, as base64. Replaces whatever logo is there now — there is no logo history, so confirm with the merchant before overwriting a real one. One image per call, max 2MB decoded, JPEG/PNG/WEBP/GIF. Not owner-restricted server-side, unlike most account tools here.
set_order_status
ChatGPTMove an order along its lifecycle: dispatched, delivered, returned or cancelled. cancelled and returned restock the items and end the order — get the merchant's confirmation for those two. Marking dispatched here only records the status; it does NOT create a courier consignment (use create_steadfast_courier_order for that, when Steadfast is connected). Owner-only.
set_shopify_as_website
ChatGPTChoose whether the merchant's Shopify store acts as their public website instead of the built-in Seller AutoBusiness storefront. This changes where buyers are sent — a storefront-level switch, so confirm with the merchant rather than inferring it from the fact that Shopify is connected.
submit_report
ChatGPTReport a vulnerability, bug, or feature request found while using this connector, or send any other note to Seller AutoBusiness support. Saved and emailed to support immediately — use this rather than telling the merchant to email someone, since you can't send email yourself. Rate-limited to 5 per day.
sync_facebook_page
ChatGPTPull the Page's latest posts and comments from Facebook and run the merchant's comment-automation rules over them. Note the second half: if the merchant has auto-reply or auto-hide rules enabled (see list_comment_automation_rules), this call can post public replies and hide comments as a side effect. Check what rules are active before calling. METERED against the monthly comment-sync allowance; don't call it in a loop.
sync_product_to_daraz
ChatGPTPush one product to its live Daraz listing, overwriting the listing's current price and stock. Confirm with the merchant first.
sync_product_to_shopify
ChatGPTPush one product to its live Shopify listing, overwriting what is there. Confirm first.
sync_products_to_daraz
ChatGPTPush this catalog's products to the merchant's LIVE Daraz listings, overwriting what is there for every matched product — prices and stock included. There is no dry run and no undo. Confirm with the merchant, and if only one product needs pushing, use sync_product_to_daraz instead of syncing the whole catalog.
sync_products_to_shopify
ChatGPTPush this catalog's products to the merchant's LIVE Shopify store, overwriting matched listings. No dry run, no undo — confirm with the merchant first.
update_bundle
ChatGPTUpdate a bundle's title, pricing or components, or activate/deactivate it. Passing items REPLACES the whole component set. Deactivating (is_active false) takes the offer off the storefront without deleting it — prefer that over delete_bundle for a seasonal offer.
update_business_profile
ChatGPTUpdate business profile fields — the storefront setup surface. Only the fields you pass are changed, but each one you do pass REPLACES the stored value outright, so read get_business_profile first and carry over anything you aren't deliberately changing. Most of these are PUBLIC: they render on the storefront at shop.daamdekhi.com/<slug>. Owner-only — an employee account gets a 403. business_url is the custom domain the merchant points at their storefront; the backend validates it resolves, so a typo or an unregistered domain is rejected rather than silently saved. NOT settable here: the storefront slug (auto-generated, no API changes it), and brand colours (no endpoint accepts them directly). Logo and cover photo ARE settable, but through a different tool — set_business_logo / set_business_cover_photo — because a photo file can't travel through this tool's JSON arguments.
update_campaign
ChatGPTUpdate a campaign's copy, schedule or linked items. Passing product_ids or bundle_ids REPLACES that whole list rather than adding to it — read get_campaign first and send the full intended set. For the campaign's image, use add_campaign_image instead — this tool can't carry a photo file.
update_order
ChatGPTUpdate a pending or approved order — customer details, address, delivery cost, discounts, or the line items. Passing items REPLACES the entire item list and restocks the old ones, so send the full intended set, not just the changed row. Items cannot be edited once the order is dispatched. Owner-only. Order-level discounts are not editable through the API — do those in the app.
update_product
ChatGPTUpdate one product's fields. Only what you pass changes — with two exceptions that REPLACE rather than merge: passing images replaces the whole image list (omit it to keep the current images), and passing variations replaces the whole variation set. Read get_product first if you're touching either. images here takes URLs only — to upload an actual photo file, use add_product_image instead, which appends without needing the current URL list.
update_social_post
ChatGPTRewrite a draft social post's copy, or move its scheduled time. Replaces what was there. The linked products and campaign are fixed at creation — to change those, delete the draft and create a new one. Has no effect on a post already published to Facebook.
upload_steadfast_orders_xlsx
ChatGPTUpload a Steadfast order-status spreadsheet (the XLSX export Steadfast itself provides) to sync delivery status into this app's orders, as base64. This is the bulk-reconciliation path — one file updates every matched order's status in one call, unlike the one-at-a-time tools elsewhere in this connector. Max 3MB decoded. Get the spreadsheet from Steadfast's own dashboard; this tool only consumes it, it doesn't generate or fetch it.
upsert_products
ChatGPTCreate or update up to 100 products in one call. Pass id on an item to update that product, or omit it to create a new one (the backend can also match an existing product by daraz_product_id or by exact name). Counts against the plan's product limit — check get_account_usage first, because hitting the cap fails the call rather than partially importing. Images are external URLs only, stored as links, not downloaded. If you pass variations, make the variation stock totals agree with the base stock; the app flags a mismatch.