Basketly MCP server for AI agents
Connect an AI assistant to Basketly and ask about your shop: what sells, which products are refused, whether purchases reach Meta. The assistant uses the same numbers as the app and acts with the rights of the person who connected it.
Server address: https://app.basketly.io/mcp
The demo has sample data; the login comes to your e-mail.
Connecting
- Address: https://app.basketly.io/mcp (Model Context Protocol, stateless Streamable HTTP, JSON answers). One server for Claude, ChatGPT, Codex, Cursor, Gemini CLI, VS Code, n8n and other MCP clients.
- "Connect" (OAuth 2.1): in claude.ai and ChatGPT add a custom connector with this address, click "Connect", sign in, choose the organisation and the scopes. No key.
- API key: the header Authorization: Bearer bsk_live_… with an organisation key (Basketly → Setup → AI agents or API). Cursor, Codex, n8n and other tools connect this way.
- Disconnect a connected app in the app: Account → Connected apps.
Claude Code in one command
With an API key (a ready prompt with the key is on the AI agents page in the app):
claude mcp add --transport http baskety https://app.basketly.io/mcp --header "Authorization: Bearer bsk_live_…"Plan
The MCP server and the API are included in the Growth, Agency and Custom plans. On Free and Start the account owner gets a 5-day trial from creating the account; after it tools answer plan_required instead of data until the organisation moves to Growth or higher. Connections and keys then work again at once.
What the agent sees and may change
- Every tool is a call of the public API with the same credential: the same scopes, the 120 requests per minute limit and the change log.
- A client sees only the tools its scopes allow; with "Connect" they are also cut to the person’s role, including "only own people".
- The agent can fix a product, create and change a feed, add a note, set a status or a task and run the self-check. Every change lands in the history with its author.
- There is no tool that sends conversions to Meta, sends SMS or e-mail, or manages payments, keys or team members.
- A status or task can start configured automations with an SMS or webhook, and the self-check retries failed sends to Meta. Every tool states whether it only reads, changes data, or has effects outside.
- Order, product and note text is data, never instructions for the agent.
Plugin and skill
The download holds a Claude Code plugin (the MCP server and a skill), a skill in the Agent Skills format, ZIP files for claude.ai and AGENTS.md for other tools.
Tools
Every tool of the server with the scope that shows it.
| Tool | Scope | What it does |
|---|---|---|
list_automations | automations:read | Automations with their trigger, on/off state, last run and errors of the last day. |
list_segments | contacts:read | Customer segments (new, one-time, returning, lapsed buyers and your own) with people counts and Meta audience state. |
conversion_balance | events:read | Whether purchases arrive: shop orders vs purchases accepted and sent to Meta and every other connected platform (GA4, TikTok, Pinterest, ChatGPT Ads, Klaviyo, Google Ads, Microsoft Ads), day by day, with error reasons. |
list_integrations | integrations:read | Every integration by category with its state (connected, error, off, planned) and the key-based connections; keys are never returned. |
list_orders | orders:read | Shop orders of a period with a summary: revenue, average basket, buyers, new and returning; filters status, contact, number. |
get_order | orders:read | One order with its lines (product, variant, quantity, price) and the buyer's totals. |
list_products | products:read | Active products (of the organisation or one feed) with score 0–100, problems by Google and Meta rules, source, Google category, fixes, ad and sales results and a sales trend; filters by source, category, brand, availability, price, score, problems, fixes, Google category, exposure and sales; sort by any column. |
get_product | products:read | One product: input vs output per feed, which fixes, rules, flow blocks or manual fixes changed it, history. |
product_performance | products:read | Catalogue exposure in Meta catalogue ads (not shown, barely shown, shown), best sellers and most shown without a sale. |
product_stats | products:read | One product per day: impressions, clicks and spend in ads, views and carts in the shop, orders and sales. |
meta_catalog_status | products:read | Per product id, from the optional Meta catalogue connection: in the catalogue, review status, rejection reasons, availability, in a product set promoted by an active ad set, and the reason it may not be shown (rejected, pending, not in an active set). |
list_guidelines | products:read | The guideline base: Google Merchant Center, Meta, TikTok and Pinterest rules for product data, each with its vendor page, check date and how many products break it. |
list_feeds | feeds:read | Every feed with its input, state, output format and output address. |
get_feed | feeds:read | One feed with its rules or flow canvas and attributes. |
preview_feed | feeds:read | Runs rules or a canvas over every product without saving: changes, score before and after, products per block. |
feed_categories | feeds:read | The Google category each shop category of a feed gets: automatic with its confidence, confirmed by a person, or by each product's name; what to review. |
search_google_categories | feeds:read | Finds categories of Google's product taxonomy by Polish or English words or by id. |
google_taxonomy | feeds:read | Which version of Google's taxonomy Basketly uses and when it last checked Google (weekly by itself). |
preview_link_tagging | feeds:read | Shows one product's links tagged with a draft link tagging setting (UTM and the bk_f / bk_pid marker), with warnings; nothing is saved. |
list_templates | templates:read | Image templates for product images in catalogue ads. |
template_performance | templates:read | Which image template works: feeds using it and their products in catalogue ads (impressions, clicks, CTR). |
list_tasks | tasks:read | Open tasks by due time, up to 500. |
find_contacts | contacts:read | People with the Contacts filters: status, owner, activity, inactive_days, tasks, tag, purchase filters (orders, amount spent, last or first purchase, lapsed, bought product), sort; 25 per page with the total. |
get_contact | contacts:read | One person with the newest page of their history. |
list_statuses | contacts:read | Internal statuses with ids (for set_status). |
getting_started | integrations:read | The setup checklist of a new shop: shop, Meta receiver, a running flow, a product feed, a Meta ad account read, other platforms — each counted from the organisation data, with where it is done. |
setup_map | integrations:read | The whole shop setup as a map: sources, feeds, Basketly and destinations with the health of every connection. |
sales_report | campaigns:read | Shop sales of a period vs the previous one: a one-sentence verdict, revenue, orders, buyers new vs returning, weeks, categories, spend of every channel, MER, ROAS, top products. |
shop_channels | campaigns:read | All channels against the shop: total spend, blended MER and cost per order, each channel as its platform reports it, orders by Basketly source (100%) and the sum of platform claims next to the shop's orders. |
manual_spend | campaigns:read | Costs outside ad platforms the team typed in (comparison sites, e-mail tool, agency): per month, amount and currency — counted in total spend and MER. |
add_manual_spendWrites | campaigns:write | Adds one month's cost outside ad platforms so MER counts it; nothing is sent anywhere. |
update_manual_spendWrites | campaigns:write | Changes a typed-in cost (overwrites the previous values). |
delete_manual_spendWrites | campaigns:write | Removes a typed-in cost for good. |
product_channels | campaigns:read | Every product against every channel that shows it: impressions, clicks, spend, the platform's own per-product conversions where it reports them, Basketly orders per channel, units per 100 clicks, stock, best channel and spend split; platform conversions are never added up. |
report_insights | campaigns:read | Rule-based conclusions of the Reports page (sales, channels, products, magnets, catalogue delivery, stock, feeds), each with its channels, key figures, the next step, the money at stake and your own state; filter by channel; thresholds included. |
set_insight_state | campaigns:read | Marks a conclusion done, snoozed until a day or not applicable (or open again) on your own list only; others still see it. |
product_trajectories | campaigns:read | Per product over time: catalogue-ad impressions and clicks next to units sold, trends, week over week and a pattern (side by side, not attributed). |
product_trajectory | campaigns:read | One product day by day with its totals, trends and conclusions. |
product_magnets | campaigns:read | Products people look at or click but rarely buy while buying other products (linked visits and catalogue-ad orders; co-occurrence, not cause). |
unseen_products | campaigns:read | Products that could be shown in Meta catalogue ads and were not: the reason (not in a feed, excluded by a rule, out of stock, Meta catalogue error, just added, not picked), shop demand and frozen stock value; 0 impressions is absence from the breakdown, not a rejection. |
sold_out_spend | campaigns:read | Spend on products shown while out of stock, the catalogue lag, and products back in stock that Meta has not shown since (a comparison of dates, not proof of cause). |
delivery_concentration | campaigns:read | How unevenly Meta spreads a scope (account, campaign, ad set, ad) over its products: rank table, top shares, Gini and effective products, weekly #1, and what happened when a top product sold out (a comparison, not cause). |
product_set_health | campaigns:read | Health of product sets in the chosen Meta catalogues: products, in stock / approved / rejected shares, spend of the ad sets promoting each set, warnings, and Meta catalogue diagnostics. |
stock_signals | campaigns:read | Which products run out before a restock: sales velocity, days of cover, stockout date, reorder point, suggested quantity and level against the lead time, with ad and cart demand (stock as the shop read it plus a labelled estimate). |
feed_orders | campaigns:read | Orders whose visit landed on a tagged feed link, per feed and landing product, with orders per 100 clicks (Basketly reading, not Meta purchases). |
campaign_report | campaigns:read | Spend, purchases, cost per purchase and ROAS per campaign, ad set or ad; shop revenue and MER on totals; the previous period alongside. |
channel_report | campaigns:read | Every ad channel on its own campaigns: totals of all channels, or one platform's campaigns (Meta, Google Ads, Microsoft Ads, TikTok, Pinterest, ChatGPT Ads) with the platform's figures and Basketly's last-click orders. |
campaign_products | campaigns:read | Products of a campaign, ad group or ad of one platform (Meta by default; Google Ads, Microsoft Ads, TikTok): impressions, clicks, CTR, spend and their shop sales; Google, Microsoft and TikTok add their own per-product conversions, never added across platforms. |
creative_report | creatives:read | Creatives ranked by cost per purchase with weekly momentum and fatigue; with channel (google_ads, microsoft_ads, tiktok, pinterest, openai_ads) that channel's ads (and Google assets) with the platform's figures. |
self_check | diagnostics:read | The last self-check: each check's status and how to fix it. |
sync_status | jobs:read | Recent background jobs (feed downloads, Meta reads). |
set_product_fixesWrites | products:write | Replaces a product's manual fixes; every feed serving it changes at once and ad platforms read it on their next download. |
suggest_titlesWrites | products:write | 1–3 AI titles for one product that follow the title guidelines; only product attributes go to the AI, nothing is saved — apply one with set_product_fixes. |
make_unseen_feedWrites | feeds:write | Creates a flow feed of the products catalogue ads barely show; nothing reaches ad platforms until its address is used. |
create_feedWrites | feeds:write | Adds a feed from an address, a shop or other feeds (a flow); an address feed queues its first download. |
save_feed_flowWrites | feeds:write | Replaces a flow's canvas; the output address serves the new result at once. A refused canvas names the block. |
save_feed_rulesWrites | feeds:write | Replaces the rules of a feed that is not a flow; the output address serves the new result at once. |
fetch_feedWrites | feeds:write | Queues a download of the feed (of its inputs for flows); products are replaced by what the address gives. |
save_feed_categoriesWrites | feeds:write | Replaces a feed's Google categories; a category confirmed by a person wins over the automatic choice and never changes by itself. |
change_feed_categoriesWrites | feeds:write | Changes only the named category rows of a feed: a person's Google category, confirm the automatic one, back to automatic, own name. |
recalculate_feed_categoriesWrites | feeds:write | Chooses every automatic Google category of a feed again from category names and product titles; a person's choices stay. |
refresh_google_taxonomyWrites | feeds:write | Downloads Google's taxonomy now and puts a valid newer version in use (owner or admin). |
set_link_taggingWrites | feeds:write | Sets a feed's link tagging: every served product link gets the bk_f / bk_pid marker and the preset's parameters; ad platforms re-read the products on their next download. |
add_noteWrites | contacts:write | Adds a note, call or meeting to a person's history; nothing is sent to Meta or to the customer. |
set_statusWrites | contacts:write | Replaces an internal status; configured status automations may send SMS or webhooks that cannot be undone. The status itself is never sent to Meta. |
create_taskWrites | tasks:write | Adds a task; if it remains open past its due time, configured overdue automations may send SMS or webhooks that cannot be undone. |
complete_taskWrites | tasks:write | Completes a task and cancels its waiting overdue automation steps; an optional history entry has the effects of add_note. |
postpone_taskWrites | tasks:write | Replaces a task due time. Moving it later into the future cancels waiting overdue steps; a task not yet overdue that is still open when the new due time passes can trigger configured overdue SMS or webhooks that cannot be undone. |
run_self_checkWrites | diagnostics:write | Starts diagnostics that may repair state, requeue failed jobs and retry failed live Meta event deliveries from the last 7 days. Retried work may also emit configured API webhooks. Sends cannot be undone. |
Answers over 60,000 characters are cut with a note to narrow the filters.
For machines
The same reference as one Markdown file, handy to paste to an agent: mcp.md (in English), mcp.pl.md (in Polish). API documentation
Get started in under 5 minutes
Connect your shop and Meta and see how many purchases really arrive.
- Free up to 100 orders a month
- No developer needed
- Purchase balance and self-check