Obriym CRM
Operate Obriym CRM from your AI assistant: leads, deals, orders, catalog, stock, marketplaces.
Connect it
Settings → Connectors → Add custom connector
URL: https://obriym-crm.com/api/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://obriym-crm.com/api/mcp{
"mcpServers": {
"mcp": {
"url": "https://obriym-crm.com/api/mcp"
}
}
}claude mcp add --transport http mcp https://obriym-crm.com/api/mcp{
"servers": {
"mcp": {
"type": "http",
"url": "https://obriym-crm.com/api/mcp"
}
}
}110 tools, verified live
search_leadsread-onlyList and search this workspace's leads, filtered by text/status/source/created-date/stale and paginated. Returns summary rows (id, name, contact, company, status, source, assignee, tags, next-action, isStale, timestamps) plus pagination { page, perPage, total }, newest first. Use get_lead to fetch notes, position and score for one lead by id.
get_leadread-onlyFetch one CRM lead in the selected workspace by lead id, including status, source, assignee, tags, custom fields, score, notes and next action. Use search_leads first when you only know a name, email, phone or company.
list_conversationsread-onlyList customer conversations across every connected channel (Instagram, Messenger, WhatsApp and comments, Telegram, OLX, Prom, eBay, Threads replies, the B2B portal, buyer order pages â¦). One row per lead and channel, newest first: { leadId, leadName, channel, lastMessageAt, lastMessageText (first 300 characters), lastDirection (inbound = from the customer), awaitingReply (the customer wrote last
get_lead_conversationread-onlyRead one lead's customer messages, oldest to newest: { at, channel, direction (inbound = from the customer, outbound = sent by the business), text (up to 2000 characters; truncated is true when cut), media ({ kind, contentType, name } or null â the file itself is never returned) }. A person who writes on two channels has two separate conversations: pass channel to read one, omit it to get all ch
search_dealsread-onlyList and search pipeline deals, filtered by stage/owner/company/contact/stale and paginated. Returns summary rows (id, title, stage, amount, probability, owner, company, contact, next-action, isStale) plus pagination { page, perPage, total }. Use get_deal to fetch one deal's full detail by id.
get_dealread-onlyFetch one pipeline deal in the selected workspace by deal id, including stage, value, probability and linked company/contact data when present. Use search_deals first when you only know the title or related customer.
list_ordersread-onlyList this workspace's orders, filtered by status/customer/created-date and paginated. Returns summary rows (externalId, status, currency, totalAmount, itemCount, timestamps) plus pagination { page, perPage, total }, newest first. Use get_order to fetch one order's full detail (line items, payments, shipments, returns) by externalId.
get_orderread-onlyFetch full order detail in the selected workspace by externalId, including line items, payments, shipments and returns. Use list_orders first when you only know the customer or date.
search_productsread-onlyList and search active catalog products, filtered by category/brand/collection/model (productGroupId â the other colours and sizes of one model)/size/color/price/stock/tag/type, sorted by name, price, newest or popularity (units sold in the last 90 days), and paginated. Returns summary rows (id, name, sku, type, price, currency, unit, stock, category, brand) plus pagination { page, perPage, tota
get_productread-onlyFetch one catalog product in the selected workspace by product id or SKU â returned in any status (draft, active, or archived; check the status field), including price, stock, category and brand fields â a bundle's stock and cost are derived from its components. Provide exactly one known identifier; use search_products first when unsure (search covers active products only).
get_dashboard_overviewread-onlyReturn the operational 'what needs attention today' snapshot for this workspace: active/qualified/stale lead counts, pipeline value, weighted forecast and overdue activities. Takes no arguments. Use get_report for period trend analytics instead.
get_reportread-onlyReturn one aggregated analytics report over a period for this workspace, selected by the report parameter: lead_source_conversion, pipeline_velocity, team_performance, revenue_trend, product_sales (units, revenue and gross margin per brand/category/SKU) or stock_valuation (units on hand and their value per warehouse, per cost currency). Each returns aggregated rows (no per-record data); days tunes
search_contactsread-onlyList and search this workspace's contacts, filtered by company/owner/tag, sorted and paginated. Returns summary rows (id, firstName, lastName, email, phone, jobTitle, company, owner, tags) plus pagination { page, perPage, total }. Use get_contact to fetch one contact's full detail by id.
get_contactread-onlyFetch one CRM contact in the selected workspace by contact id, including company, owner, tags and communication fields when present. Use search_contacts first when you only know a name, email or phone.
search_companiesread-onlyList and search this workspace's companies, filtered by industry/status/owner, sorted and paginated. Returns summary rows (id, name, industry, size, status, owner, contactCount) plus pagination { page, perPage, total }. Use get_company to fetch one company's full detail by id.
get_companyread-onlyFetch one CRM company in the selected workspace by company id, including status, industry, owner and contact links when present. Use search_companies first when you only know the company name.
list_activitiesread-onlyList this workspace's activities (tasks, calls, meetings, emails, notes), filtered by type/assignee/overdue/completion/linked-entity and paginated. Returns summary rows (id, type, title, priority, dueDate, completed, assignee, linked lead/contact/company/deal, isOverdue) plus pagination { page, perPage, total }. Use get_activity to fetch one activity's full detail by id.
get_activityread-onlyFetch one CRM activity in the selected workspace by activity id, including type, due date, completion state, assignee and linked entity. Use list_activities first when you only know the related lead/deal/contact.
list_customersread-onlyList CRM customers (companies with a won deal or delivered order), filtered by health/lifetime-value/won-deal count, sorted and paginated. Returns summary rows (companyId, name, health, lifetimeValue, wonDeals, lastActivity, owner) plus pagination { page, perPage, total }. Use get_customer to fetch one customer's detail by company id.
get_customerread-onlyFetch one CRM customer summary in the selected workspace by company id, including health, lifetime value and won-deal metrics. Use list_customers first when you only know the company name.
list_categoriesread-onlyList this workspace catalog categories as a flat array, each with id, name, slug, parentId (null for a root category), description, googleProductCategory, imageUrl, translations and marketplaceCategories (the Prom, Rozetka, OLX, Amazon and Google Merchant category ids already linked, each as { id, label } or null). Categories are workspace-global, not per warehouse. Use a category id here as the c
get_categoryread-onlyFetch one catalog category by id: name, slug, parent, description, image, translations, the linked marketplace category ids (marketplaceCategories: Prom, Rozetka, OLX, Amazon, Google Merchant, each { id, label } or null), its direct subcategories (children), and productCount and subcategoryCount. Read-only. Use list_categories first to find the id, and call this before delete_category to see what
search_marketplace_categoriesread-onlyFind the category id a marketplace uses, to link it to a catalog category. Read-only. Pass the platform (prom, rozetka, olx, amazon or google_merchant) and a query, or for OLX and Rozetka a parentId to browse one level of the tree (no query and no parentId lists the top level). Sources differ: Google Merchant searches the bundled Google product taxonomy and needs no connection; OLX, Rozetka and Am
list_brandsread-onlyList this workspace catalog brands with id, name, description and website. Use a brand id here as the brandId for create_product/update_product, or as the search_products brand filter.
list_warehousesread-onlyList this workspace warehouses with id, name, description, phone, address (the street line), country (ISO code), city, postalCode, workingHours (free text) and pickupEnabled (whether the warehouse is offered as a self-pickup point). A product lives in at most one warehouse, and the warehouse decides the inventory-tracking default and which sales channels new products are listed on. Use a warehouse
list_marketplacesread-onlyList every marketplace connected to this workspace with its setup state, health, last activity, any current sync error, orders revenue per currency, leads, product counts on the channel and how many imported products are waiting to be reviewed. Answers 'which channels do I sell on and is anything broken'. Takes no arguments. Use get_marketplace for one channel in detail, list_channel_products for
get_marketplaceread-onlyFetch one connected marketplace in detail: every adapter on it with its setup state, last poll, last poll error, last catalog-sync outcome and last product import, plus the channel sales, leads and product counts. Use list_marketplaces first to see which platforms are connected. Use list_channel_products for the products on the channel and check_channel_readiness for what would be refused.
list_channel_productsread-onlyList the products that are on one marketplace, with each listing external id, what the marketplace last reported about it (`presence`, valid only when `observedAt` is set â null `observedAt` means the marketplace has never been asked about that listing, not that it is absent; Prom is reconciled every 15 minutes, other channels only when a sync or publish runs), whether the workspace paused synci
check_channel_readinessread-onlyCheck locally which products a marketplace will refuse and why â missing price, unusable price, blank name, unmapped category â grouped by what fixes them, without calling the marketplace. The response separates `blocked` (these products do NOT go out) from `warnings` (these DO go out, but probably will not be published as the merchant expects: a price in a currency the platform does not name,
get_workspace_inforead-onlyShow which account and workspace this connection operates: signed-in name/email (OAuth only), workspace name, plan, connection type and granted scopes â and the server itself: its version and every tool it has now (server.tools), with how to refresh an AI app whose tool list is older (server.refreshHint). Call this when the user asks 'which account or workspace am I connected to?', and when the
get_obriym_product_factsread-onlyRead-only facts about Obriym CRM itself: approved marketing claims, conditions, limitations, review sources, plan prices/limits and integration scenarios/readiness with beta caveats; no customer data or external calls, and implementation review does not establish workspace configuration or customer results (empty assets means no screenshot supplied). Call before writing about Obriym, narrow by top
create_leadCreate a lead. Idempotent by externalId (re-sending the same externalId returns the existing lead). Requires an email or phone. Enforces the workspace plan limit; the result echoes the workspace it landed in. Use update_lead to change it afterward.
update_leadcan modifyUpdate fields on an existing lead by id. Provide a patch with at least one field. Use search_leads first to find the lead id. The result echoes the operating workspace.
create_dealCreate a pipeline deal. Requires a stageId, title, and next-action note. Use list_pipeline_stages for the stageId, and search_companies/search_contacts to link a company or contact. Enforces the workspace plan limit; the result echoes the operating workspace.
create_activityCreate an activity (task, call, meeting, email, or note). Must link to at least one lead, contact, company, or deal â use search_leads/search_contacts/search_companies/search_deals to get the entity id. The result echoes the operating workspace.
update_order_statuscan modifyMove an order to a new status by externalId. Only valid transitions from the current status are allowed. Use list_orders to find the externalId and get_order to see the current status. The result echoes the operating workspace.
create_contactCreate a contact (person). Use search_companies for the companyId to link an employer. Enforces the workspace plan limit and validates the company/owner links; the result echoes the operating workspace.
update_contactcan modifyUpdate fields on a contact by id. Provide a patch with at least one field. Use search_contacts first to find the contact id. The result echoes the operating workspace.
create_companyCreate a company (B2B account). The company name must be unique in the workspace. representationState is explicitly declared (unspecified, works_alone, or has_representatives), never inferred from contacts; an individual always uses unspecified. Enforces the workspace plan limit; the result echoes the operating workspace. Use search_companies first to avoid creating a duplicate.
update_companycan modifyUpdate fields on a company by id. Provide a patch with at least one field. representationState is explicit and never inferred from contacts. primaryContactId can select an existing contact already linked to this same non-individual company; send null to clear it. Use search_companies first to find the company id. The result echoes the operating workspace.
complete_activitycan modifyMark an activity (task, call, or meeting) as completed by its id. Use list_activities first to find the activity id. The result echoes the operating workspace.
convert_leadcan modifyConvert a lead into a contact, company, and/or deal (select at least one via the input flags). Sets the lead status to converted. Use search_leads first to find the lead id. The result echoes the operating workspace.
assign_leadcan modifyAssign a lead to a workspace member by user id, or pass assignedTo=null to unassign. Use search_leads to find the lead id and get_workspace_info to confirm the operating workspace. The result echoes the operating workspace.
transition_dealcan modifyMove a deal to a pipeline stage by its id. Closed-lost stages require a lostReason. Use search_deals for the deal id and list_pipeline_stages for the target stageId. The result echoes the operating workspace.
quote_order_promotionread-onlyValidate a known promo code against trusted cart prices, currency and buyer facts. Returns the CRM-calculated discount, net order total and delivery terms without creating an order or reserving a use. The code must be enabled for this connection's source; a personal or capture code also needs the same buyer email (or customer.externalId of a profile with it). reservesUse is false: nothing is claim
create_orderCreate an order with line items. Currency is required: use trusted source facts or CRM product prices; never guess or convert. Idempotent by externalId: re-sending the same request returns the existing order. Counts toward the plan's monthly order limit (403 PLAN_LIMIT_EXCEEDED when reached). The result echoes the operating workspace. Use search_products first. For a promo code use quote_order_pro
add_order_itemAdd a line item to an existing order by its externalId. Recomputes the order total. Only allowed while the order is pending or confirmed; on any other status (processing and later, cancelled, refunded) it fails with 409 CONFLICT "Order lines can only be changed while the order is pending or confirmed". Use list_orders or create_order for the order externalId, and search_products to quote a real pr
update_order_itemcan modifyUpdate a line item on an order (quantity, unit price, discount, name, or SKU). Recomputes the order total. Only allowed while the order is pending or confirmed; otherwise it fails with 409 CONFLICT "Order lines can only be changed while the order is pending or confirmed" (stock is committed from processing on). Use get_order to find the order's externalId and the item's itemId. The CRM recalculate
remove_order_itemcan modifyRemove a line item from an order. Recomputes the order total. Only allowed while the order is pending or confirmed; otherwise it fails with 409 CONFLICT "Order lines can only be changed while the order is pending or confirmed". Use get_order to find the order's externalId and the item's itemId. The result echoes the operating workspace.
create_productCreate a catalog product. Defaults to draft status â publish it by sending status 'active' once it is complete. Use list_categories, list_brands and list_warehouses for the ids; SKU is generated when omitted and must be unique in the workspace. Set trackInventory with an opening stock to start counting units, which is recorded as the first movement in the product stock history. A bundle (type bu
update_productcan modifyUpdate fields on an existing catalog product by id â including status, to publish a draft or archive a product. Provide a patch with at least one field; use get_product first to see the current values. A changed stock number is applied as a relative movement and recorded in the product stock history; prefer adjust_stock when the intent is a correction with a reason. A bundle's stock is derived f
create_categoryCreate a catalog category, optionally nested under an existing one, with optional description and per-language translations. The slug is normalized to Latin whatever is sent. The parent must exist in this workspace, and a name already used under the same parent is rejected, so call list_categories first to avoid duplicates. To link marketplace categories send marketplaceCategories ({ prom, rozetka
update_categorycan modifyUpdate fields on an existing catalog category by id: name, parent, slug, description, Google category, marketplaceCategories and translations. Provide a patch with at least one field; use list_categories first to find the id and current values. The slug is normalized to Latin. The parent must exist in this workspace and cannot create a loop. Translations REPLACE the whole set when sent (an empty a
delete_categorycan modifyPermanently delete ONE catalog category by id. Its products are NOT deleted but lose this category (so they also drop out of marketplace feeds that require a category); its subcategories move to the top level; its translations and linked marketplace category ids are removed. NOT reversible. Not idempotent in effect: a second call for the same id returns NOT_FOUND. Call get_category first to read p
create_brandCreate a catalog brand with optional description, website and per-language description translations. The brand NAME is never translated: marketplaces match the vendor name verbatim, so send it exactly as the vendor is known. The slug is normalized to Latin. A name already used in this workspace is rejected, so call list_brands first to avoid duplicates. Translate only the brand's own description â
update_brandcan modifyUpdate fields on an existing catalog brand by id: name, slug, description, website and description translations. Provide a patch with at least one field; use list_brands first to find the id and current values. Renaming a brand changes the vendor name sent to marketplaces, so rename only on the user's explicit request; the name is never translated. Translations REPLACE the whole set when sent (an
adjust_stockcan modifyMove a product stock by a relative delta (negative to write off, positive to add) with a reason, and record it in the stock history. This is the correct tool for a correction, a write-off or damage â it never sets an absolute number, so an order committing at the same moment is not overwritten. The reason decides the direction: write_off, damage and return_to_supplier must carry a negative delta
list_pipeline_stagesread-onlyList this workspace's pipeline stages in order, with each stage's id, name, kind, default probability, WIP limit and position. Use configure_pipeline to change a stage, and the stage id here as the stageId for create_deal / transition_deal.
configure_pipelinecan modifyUpdate an existing pipeline stage's name, default probability, or WIP limit. Provide the stage id (from list_pipeline_stages) and ONLY the fields to change â omitted fields keep their current value; wipLimit null removes the limit. A name cannot be blank and must be unique among stages (409 CONFLICT otherwise). Stages cannot be created here, and stage order and terminal behavior are fixed. The r
list_lead_sourcesread-onlyList this workspace's lead sources (built-in plus custom), with each source's key, label and active state. Pass includeInactive to also return archived sources. Use set_lead_sources to add or archive a source; use a source key here as the source filter for search_leads.
set_lead_sourcescan modifyCreate or update a workspace lead source: set its label and active state by key (built-in or custom, lowercase_with_underscores). Idempotent â re-sending the same key updates it. Archiving the fallback 'other' source is not allowed. Use list_lead_sources to see current sources. The result echoes the operating workspace.
list_workspacesread-onlyList every workspace the connected user belongs to (id, name, role) and mark which one this connection currently operates. OAuth sign-in connections only. Use select_workspace to switch.
select_workspacecan modifyRe-bind this OAuth connection to the workspace selected by the user. Takes effect on the next tool call. Use the organizationId returned by list_workspaces or by WORKSPACE_SELECTION_REQUIRED; never invent or guess it.
inspect_ebay_listingsread-onlyCheck up to 25 products against eBay before any write, with the same live preflight the CRM's eBay channel page and the real draft and publish calls run. Per product it returns the eBay state (off, member, draft, live, ended), nextAction (create_draft, publish_draft or none), whether that step is ready and, when not, the blocking reason with details. ebayDraftSetup lists the armed eBay sites and t
upsert_product_pricescan modifyAdd, update or REMOVE the price-list rows of ONE product â the price it sells at in another currency, for example EUR for an eBay site â keeping its other currencies and its own workspace-currency price. Send only an amount the user stated: never a converted or estimated price; to drop a currency send its code in remove. The product's own currency is refused; change that with update_product's
upsert_product_attributescan modifyAdd or update characteristics (name, value, unit) on ONE product without removing the ones not named. Names match case-insensitively; a new name is appended. For eBay, use the item-specific names exactly as inspect_ebay_listings reported them (details.aspects), in the eBay site's own language â 'Marca' on ebay.it, not 'Brand'. Never invent a value: ask the user. Saves through the same product-ca
upsert_product_translationcan modifyWrite ONE language of ONE product's translation â title, description, keywords, colour, material, pattern and its characteristics (attributes: keyed by the characteristic's name exactly as get_product returns it, each with a translated name and/or value) in that language â keeping the other languages and every field not named. A characteristic name the product does not have is refused with the
archive_productscan modifyArchive up to 100 products â this is how an AI client removes a product. It leaves sale and every sales channel's feed, and nothing is erased: update_product with status active or draft restores it. Hard deletion is not available over MCP. A product that a non-archived bundle is made of is NOT archived: it is listed in heldByBundle with the bundles that contain it â archive or change those bun
set_channel_membershipcan modifyMark or unmark up to 100 products for one connected sales channel (prom, rozetka, ebay, olx, â¦). It changes what the CRM intends to send: on Prom and Rozetka the next feed pull adds or drops the product; on eBay it only makes the product a channel member â a listing exists only after create_ebay_drafts and publish_ebay_drafts. It never arms a sync. Adding picks up active products only. Returns
create_ebay_draftscan modifyCreate eBay DRAFT offers for up to 25 products â real writes to the seller's eBay account, but nothing is buyer-visible until publish_ebay_drafts. Run inspect_ebay_listings first and pass only products whose nextAction is create_draft and ready is true. Each product is attempted on its own: returns created, failed (each with a reason to look up in remediation.ebayPlaybook) and notAttempted (not
publish_ebay_draftscan modifyMake the eBay DRAFT offers of up to 25 products LIVE and buyer-visible â a real publication on the seller's account. The item and offer are refreshed from the current product first, so a price, title, photo or characteristic fixed after the draft was made is published too. Pass only products whose nextAction from inspect_ebay_listings is publish_draft. Returns done, failed (with reasons) and not
recreate_ebay_draftscan modifyDelete each product's eBay draft and create a fresh one from its current data, for up to 25 products. Needed only when a draft must move to another category or eBay site, or the reason is ebayDraftOfferMissing or ebayNoOfferId â ordinary edits are picked up by publish_ebay_drafts. A live listing is refused. If the delete succeeds but the new draft fails, that product is left with no draft and it
delete_ebay_draftscan modifyDelete the eBay DRAFT offer of up to 25 products; a live listing is refused â end it with withdraw_ebay_listings first. The CRM product itself is untouched. Works even while draft creation is disarmed on the connection, but still needs the owner's AI publishing switch. Returns done, failed and notAttempted. The result echoes the workspace.
withdraw_ebay_listingscan modifyEnd the LIVE eBay listing of up to 25 products: they stop being buyer-visible and their offers return to drafts â nothing is deleted, and publish_ebay_drafts can put them back. Needs the owner's AI publishing switch. Returns done, failed and notAttempted. The result echoes the workspace.
list_ebay_fulfillment_policiesread-onlyList the eBay shipping (fulfillment) business policies the seller has on each eBay site the connection sells on: fulfillmentPolicyId, name, freeShipping, shippingCost of the first domestic service (null for CALCULATED shipping), costType, handlingTime, domestic and international services, ship-to regions, and isDefault â the connection default. productCount is how many products chose the policy
sync_ebay_fulfillment_policiesread-onlyRe-read the eBay shipping (fulfillment) policies from eBay for every site the connection sells on, or one marketplaceId, and refresh the copy the CRM keeps â after the seller created, renamed or deleted a policy in Seller Hub. Returns the same shape as list_ebay_fulfillment_policies; check staleAssignments: products whose chosen policy eBay no longer has will be refused at their next draft or go
get_product_ebay_fulfillment_policyread-onlyShow ONE product's eBay shipping policy. Per eBay site: assignedPolicyId (the product's own choice, null when it has none), defaultPolicyId (the connection default) and effectivePolicyId with effectiveSource â product, connection_default or first_available â the policy a new draft or a go-live would carry, plus that site's policies. For a product with a draft or live listing it also reads the
get_ebay_offer_policiesread-onlyRead the eBay offers of up to 25 products live and return, per offer, the fulfillment, payment and return policy ids it carries now, the shipping policy name, its eBay site and status (PUBLISHED = live, UNPUBLISHED = draft), and matchesAssignment â whether it carries the product's own choice in the CRM (null when the product has none). Products with no draft or live listing are listed in without
set_product_ebay_fulfillment_policycan modifyChoose the eBay shipping (fulfillment) policy of ONE product, or with fulfillmentPolicyId null return it to the connection default. A product with no eBay listing stores the choice for its next draft. A draft or LIVE listing has its eBay offer updated in place â no relisting â when listing writes are armed on the eBay connection, and the offer is then read back to confirm; with listing writes
bulk_set_ebay_fulfillment_policycan modifyChoose one eBay shipping (fulfillment) policy â or null for the connection default â for up to 25 products on one eBay site, with the same per-product rules as set_product_ebay_fulfillment_policy: no listing stores the choice; a draft or live listing has its offer updated in place and read back. The policy is checked against eBay once before any product is touched, and a product whose listing
set_ebay_default_fulfillment_policycan modifySet the eBay connection's default shipping (fulfillment) policy for one eBay site, or null to remove it. Products without their own choice carry it in every new draft and when a draft goes live; LIVE listings keep the policy they have â change those with bulk_set_ebay_fulfillment_policy. The policy is checked against eBay's live list first; with no default, listings use the first policy eBay ret
get_ebay_variation_listingread-onlyShow a product MODEL as one eBay multi-variation listing: state (none, draft, live), marketplaceId, listingId and listingUrl, the stable groupKey, and every article of the model with its sku, colour, size, channelState on eBay and inclusion â included, not_active, not_on_channel (put it on the channel with set_channel_membership) or single_listing (it has its own eBay draft or listing, which mus
inspect_ebay_variation_listingread-onlyRun every check saving a model's eBay multi-variation listing would run, writing nothing: each article's required fields and price in the marketplace currency, the variation axes (colour and/or size, named as the eBay site names them), duplicate or missing variation values, the category (suggested from the title, or the saved listing's), whether it allows variations, item condition, required item
save_ebay_variation_listingcan modifySave a product model on eBay as ONE listing with variations â every active article of the model on the eBay channel is a variation (its own SKU, price and stock; buyers choose colour and size). Writes the inventory items, the inventory item group and each variation's offer; a draft stays unpublished. When the listing is already LIVE this updates it in place: new variations, prices and texts reac
publish_ebay_variation_listingcan modifyPublish a product model on eBay as ONE live listing with variations: saves it first exactly like save_ebay_variation_listing (so eBay gets the articles as they are now), then publishes the whole group â a real listing buyers can purchase. Returns status: blocked (with issues â reason, message, skus â and nothing written), saved (a draft on eBay) or published, plus marketplaceId, listingId, v
withdraw_ebay_variation_listingcan modifyEnd a model's LIVE eBay multi-variation listing: every variation leaves sale at once. The group and its offers stay on eBay as a draft, so publish_ebay_variation_listing restores the same listing. Works while listing creation is disarmed (a way off eBay is never locked), but is refused until the workspace owner switches on AI publishing. Returns withdrawn. The result echoes the workspace.
delete_ebay_variation_draftcan modifyDelete a model's UNPUBLISHED eBay multi-variation draft: every variation's offer and the inventory item group are removed from eBay; the articles stay on the channel, ready for a new listing (together or one by one). A live listing is refused â end it with withdraw_ebay_variation_listing first. Refused until the workspace owner switches on AI publishing. Returns deleted. The result echoes the wo
list_content_channelsread-onlyList the social channels this workspace can publish posts to â Telegram channel, Instagram, Facebook page, LinkedIn, Threads â with, per channel, whether it is ready, where it posts (destination), its public address (profile: profileUrl, publicFeedUrl â a public Telegram channel reads without signing in at t.me/s/<name>, older posts via ?before=<post id> â and readableBy: anyone, login_req
list_content_postsread-onlyList the workspace's social posts, newest first, 20 per page: id, working title, status (draft, scheduled, publishing, published, partial, failed), channels, scheduled and published times. Filter by status or by part of the title. Read-only. Use get_content_post for one post's texts and per-channel results; use it to check what is already scheduled before planning more posts.
list_published_postsread-onlyList what this workspace has already published to its social channels, newest first: per post the exact text each channel got (hashtags included), the channel, permalink, publishedAt, title, contentPostId and productId, plus per channel the publishing rhythm (lastPostedAt, postsLast7Days, postsLast30Days, medianGapHours, nextScheduledAt, scheduledCount) and, in sources, the channel's public addres
get_content_postread-onlyRead one social post: its main text, hashtags, images, linked product, status and schedule, and per channel the text that channel gets (ownText or the main text), its length against the channel limit, whether the channel is ready, and what publishing returned there â status, link to the live post (permalink) or the network's error. Read-only. Use list_content_posts to find the id; call it after
create_content_postCreate a social post as a DRAFT â nothing is published. Give it a working title, the main text, optional hashtags, the channels (each may carry its own text), and images: public https image links (Obriym stores its own copy), files the person attached in ChatGPT (the `files` field, filled by ChatGPT), links returned by create_image_upload for local files, and/or a catalog product whose photos ar
update_content_postcan modifyChange a draft or scheduled post: working title, main text, hashtags, format, or its channels and their own texts (sending channels replaces the whole set). Fields you omit stay as they are; images cannot be changed here. Refused for a published post â a post already live on a network cannot be changed from Obriym; create a new one instead. Refused while the post is being published. Repeating th
delete_content_postcan modifyDelete a post that has not been published â a draft, a scheduled post (its schedule goes with it) or one whose every channel failed. Its own stored images are deleted too; a linked product's photos are never touched. Refused for a post that went out on any channel: that record stays. This cannot be undone. Echoes the workspace.
schedule_content_postcan modifySchedule a post to be published at a time, or cancel its schedule. Obriym itself publishes it to every ready channel of the post within about 15 minutes after that time â the AI client does not need to be running then. This is how regular publishing is set up: create several drafts, then schedule each. Needs the owner's "AI may publish to social channels" switch to schedule (see publishingEnable
publish_content_postcan modifyPublish a post NOW to every ready channel of it â a real, public post in the business's name that followers see at once and that cannot be taken back from Obriym. A channel already published is never sent twice, so calling it again only retries the channels that failed or were not ready. Returns, per channel, the outcome (published, failed, already_published, skipped_not_configured with the setu
list_suppliersread-onlyList the workspace's suppliers: id, name, status (active or archived), the currency they invoice in and how many products each covers (productCount). Read-only. Use it as the id source for a {kind:'supplier'} scope of preview_bulk_price_change and apply_bulk_price_change â 'raise every Sipec product by 5%'. Categories, brands and warehouses come from list_categories, list_brands and list_warehou
get_product_pricingread-onlyEverything about ONE product's prices in one call: its own price, old price and currency; the price-list rows (other currencies); per-channel price overrides (platform, currency, price); wholesale quantity breaks per currency; the purchase cost with its currency (a bundle's cost is derived from its components and cannot be set on it); and the markup over cost per sale currency (marginPercent = pri
preview_bulk_price_changeread-onlyDry run of a bulk price change â step 1 of 2; nothing is written. Give a rule (percent, fixed, fromCost, discount, endDiscount, compareAtMarkup, compareAtClear), a scope (a named category, brand, supplier, warehouse or model, or up to 100 explicit product ids) and optionally a target (the product's price, a price-list currency, or the purchase cost). Returns totalItems (how many products would c
apply_bulk_price_changecan modifyApply a bulk price change â step 2 of 2, after preview_bulk_price_change. Send the SAME rule, scope and target and the digest the preview returned, copied verbatim and never invented. The plan is recomputed from live prices and refused with CONFLICT if it no longer matches the digest (prices moved, or the rule would compound on a retry) â preview again and show the person the new numbers. Chan
set_product_channel_pricecan modifySet â or clear â the price ONE sales channel gets for ONE product, instead of the product's ordinary price in that currency. Send price as a decimal string to set it (with an optional compareAtPrice, the old price, higher than price) or price null to remove the override so the channel gets the ordinary price again. Per platform and currency: Prom, Rozetka, eBay, Amazon, Shopify, WooCommerce, O
set_product_price_tierscan modifyReplace ONE product's wholesale quantity breaks in ONE currency â 'from 12 units, 12.40 each'. The list you send becomes the whole set for that currency (at most 10; each quantity at least 2 and once; a bigger quantity must cost less per unit); an empty list removes all its breaks. The product must already be priced in that currency. Breaks apply to buyers outside the team (the customer portal a
create_image_uploadGet one-time links for uploading image FILES from the agent's own machine â for clients that can read local files and send HTTP requests (Claude Code, Cursor, scripts). A chat client passes image links instead, and ChatGPT passes attached files itself through the files field. For each link, send the raw file bytes with HTTP PUT within 15 minutes â for example: curl -X PUT --data-binary @photo.
add_product_imagesAdd photos to ONE product, after the photos it already has: public https image links (images, each with an optional caption), files the person attached in ChatGPT (files â ChatGPT fills it), or links returned by create_image_upload for files on the agent's own machine. Obriym downloads every image and stores its OWN COPY in the workspace's storage â the link may be temporary and nothing hotlin
update_product_imagescan modifyReorder, caption or REMOVE the photos a product already has. Send the photos as they should be afterwards: the order given is the display order (the first is the main photo), each alt replaces the stored caption (empty clears it), and a current photo you leave out is removed from the product (the stored file is kept, exactly as when a person removes a photo in the product form). Returns the new li
set_category_imagecan modifySet or remove the picture of ONE category. Pass a public https image link in url (JPEG, PNG or WebP, at most 2 MB; a bigger file is refused, there is no resize) â Obriym stores its own copy and the previous picture is deleted only after the new one is in place. Pass url: null to remove the current picture. Idempotent in effect: repeating it leaves the same picture. Use list_categories to find th
set_brand_imagecan modifySet or remove the picture (logo) of ONE brand. Pass a public https image link in url (JPEG, PNG or WebP, at most 2 MB; a bigger file is refused, there is no resize) â Obriym stores its own copy and the previous picture is deleted only after the new one is in place. Pass url: null to remove the current picture. Idempotent in effect: repeating it leaves the same picture. Use list_brands to find th
list_content_localesread-onlyList the languages this workspace writes product content in: the base language (the text stored on products, categories and brands themselves), the extra languages the owner added, and the offered set â every language the CRM shows as a translation tab. Each entry is an ISO 639-1 code with its English name. Read-only. Call it BEFORE writing any translation (upsert_product_translation, upsert_cat
upsert_category_translationcan modifySet a category's name and/or description in ONE language, leaving every other language as it is. Translate the text yourself â Obriym does not translate for MCP clients. Call list_content_locales first; the workspace's base language is refused (use update_category for it). A language needs a translated name before it can hold a description; description null clears it. Idempotent: repeating the s
upsert_brand_translationcan modifySet a brand's DESCRIPTION in ONE language, leaving every other language as it is; null or an empty description removes that language. Translate the text yourself â Obriym does not translate for MCP clients. Never translate a brand NAME: marketplaces match it verbatim. Call list_content_locales first; the workspace's base language is refused (use update_brand for it). update_brand's translations
Alternatives in CRM & Sales
Compare →CMClose MCPOfficialA
Close CRM to manage your sales pipeline. Learn more at https://close.com or https://mcp.close.com
ZRZoom Revenue AcceleratorOfficialA
Zoom Revenue Accelerator server for sales insights, conversations, and deal intelligence.
ZSZiptax Sales Tax APIB
Real-time US and Canadian sales and use tax rates by address or geo coordinates.
RERevenue Enablement MCPB
Revenue Enablement: 12 deal and sales enablement tools by Helix GTM Consulting
Propstack MCP by usefulapiB
Read Propstack contacts, properties, projects, deals, tasks, events; create and update CRM records.
Beacon CRM MCP by usefulapiB
Read and filter Beacon CRM records of any type; create, update, upsert, delete records; run exports.