Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SHOPIFY_SHOPNoYour Shopify shop domain
LINEAR_API_KEYNoLinear personal API key
STRIPE_API_KEYNoStripe secret or restricted key
SLACK_BOT_TOKENNoSlack bot token (xoxb-…)
GOOGLE_CLIENT_IDNoGoogle OAuth client ID
FIRECRAWL_API_KEYNoFirecrawl API key
SHOPIFY_CLIENT_IDNoShopify app client ID
GOOGLE_CLIENT_SECRETNoGoogle OAuth client secret
SHOPIFY_CLIENT_SECRETNoShopify app client secret

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
shopify_products_listB

List products. Narrow with a Shopify search string in query, e.g. 'status:active vendor:Acme' or 'inventory_total:<5'.

shopify_variant_inventory_levelA

Read a variant's stock at one location. Returns null where the variant is not stocked there, which is not an error.

gsheets_spreadsheets_values_appendC

Appends values to a spreadsheet.

gmail_drafts_createC

Save an email draft to Gmail.

shopify_orders_listA

List orders. Narrow with a Shopify search string in query, e.g. 'financial_status:paid fulfillment_status:unshipped' to find orders waiting to ship. Only the last 60 days of orders are visible unless this app holds Shopify's read_all_orders scope, and older orders are absent rather than reported — do not read an empty result as an empty history.

slack_chat_post_messageA

Send a message to a Slack channel, private group, or DM. Provide text for a plain message; set thread_ts to reply inside an existing thread.

gmail_threads_listC

List Gmail threads.

shopify_order_fulfillment_ordersA

List an order's fulfillment orders, which is the first half of fulfilling it. Shopify creates these itself, and fulfillment_create names them. The location is at assignedLocation.location.id.

firecrawl_monitor_createB

Create a scheduled monitor for scrape, crawl, or search targets.

firecrawl_extractA

Extract structured data from one or more URLs using an LLM. Poll results with extract_status.

shopify_product_getA

Get one product with its description and its first 50 variants, including each variant's SKU, price and inventory. Takes a global ID (gid://shopify/Product/...), not a bare number.

gsheets_spreadsheets_values_getC

Returns a range of values from a spreadsheet.

shopify_product_createA

Create a product. Only title is required. Note that Shopify creates products unpublished — a new product is not on the storefront until it is published to a sales channel, which is a separate operation.

shopify_product_variants_bulk_createA

Add variants to a product. The SKU goes inside inventory_item, not on the variant. When the product still carries its default placeholder variant, pass the strategy that removes it.

firecrawl_scrapeB

Scrape a single URL and optionally extract information. Use when the user wants to read or summarize a specific webpage. Supports markdown, HTML, screenshots, and structured JSON extraction.

shopify_product_updateA

Update a product. id is required; only the other fields provided are changed. Note that tags replaces the product's tags rather than adding to them.

gmail_threads_getC

Read a Gmail thread.

shopify_customers_listB

List customers. Narrow with a Shopify search string in query, e.g. 'email:ada@example.com' or 'orders_count:>5'.

shopify_draft_order_createA

Create a draft order, the way to build an order by hand before it is placed. A draft holds no inventory until it is completed.

shopify_order_getA

Get one order with its line items, shipping address and totals. Takes a global ID (gid://shopify/Order/...), which orders_list returns.

shopify_order_cancelA

Cancel an order. restock has to be stated: true returns the items to inventory, false leaves stock as it is. Shopify does this in the background and answers with a job, so no errors means accepted rather than finished. Cancelling cannot be undone.

gsheets_spreadsheets_values_updateC

Sets values in a range of a spreadsheet.

linear_issue_createA

Create an issue. team_id and title are required; everything else is optional. The UUIDs for team, assignee, state and labels come from teams_list, users_list and workflow_states_list — Linear does not accept names here. Set parent_id to create a sub-issue.

shopify_locations_listB

List the store's locations. Inactive ones are excluded unless asked for.

shopify_inventory_adjust_quantitiesA

Move stock by a relative amount: delta of 5 adds five, -5 removes five. This is not a way to set an absolute count. Every change must also carry change_from_quantity, the count you expect to be overwriting — read it with variant_inventory_level immediately before — so two adjustments racing each other cannot both win. committed is never writable, and on_hand cannot be named here although adjusting available moves it by the same delta. The result reports the deltas applied and leaves quantity_after_change null, so read the level back for the new count. Since 2026-04 adjusting an item that is not stocked at the location succeeds and creates an inactive level, so a success does not prove the stock is sellable.

stripe_balance_transactions_listA

List every movement across the Stripe balance: charges, refunds, fees and payouts. For accounting, reporting_category on each result groups them better than type does.

connectA

Connect one app this server uses. For an app that issues keys, says where to get one and the terminal command that stores it. For Google, once the user's own OAuth client is set, starts the browser sign-in and returns at once: the user approves in the browser and the next call works. To see which apps are connected, call connection_status. Never ask the user for a key in the chat.

connection_statusA

See which apps this server is connected to, and how to connect each one that is not. Changes nothing.

Prompts

Interactive templates invoked by user choice

NameDescription
setupConnect every app this server uses, the quickest way each one allows.
low_stock_to_supplier_po_draftReorders drafted before a bestseller goes out of stock.
daily_sales_digestYesterday's orders, revenue and top products, posted and logged.
where_is_my_order_repliesThe commonest support email answered with the actual fulfillment status.
competitor_product_price_watchA competitor undercuts a SKU and you see both prices side by side.
supplier_sheet_to_new_productsA season's catalogue goes from spreadsheet to store draft in one run.
product_copy_from_the_supplier_s_pageSpecs and materials pulled from the manufacturer, written as your listing.
wholesale_order_by_email_to_draft_orderB2B buyers email a list and get an invoice link back.
cancellation_request_handledUnfulfilled orders cancelled on request with the confirmation drafted.
vip_customer_outreachTop spenders get a personal note before a launch, not a blast.
fulfillment_exceptionsOrders unfulfilled after 48 hours become an ops issue with the order attached.
stock_count_from_a_sheetThe warehouse's count becomes the store's inventory without manual edits.
shopify_and_stripe_revenue_in_one_sheetStores selling in two places see one revenue number.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.3/5.0

Scored across 28 tools

Disambiguation4/5

Tools are grouped by resource+action and mostly distinct: Shopify product/order/customer/inventory/location tools don't overlap, and read vs write inventory tools are clearly separated. Minor overlap between firecrawl_scrape and firecrawl_extract (both can extract structured JSON) and the broad multi-domain span makes cross-app selection occasionally ambiguous, but descriptions disambiguate well.

Naming Consistency4/5

A predictable domain_resource_action pattern runs throughout (shopify_products_list, shopify_product_get, gmail_threads_get, stripe_balance_transactions_list). The only real deviations are the un-prefixed connect and connection_status utilities, which break the otherwise consistent scheme.

Tool Count3/5

28 tools is heavy, and they are split across eight unrelated services (Shopify, Sheets, Gmail, Slack, Firecrawl, Linear, Stripe, connection management), leaving each app with only a few operations. It is defensible for a multi-app integration server but sits above the comfortable range for a Shopify-centric 'Store Ops' surface.

Completeness3/5

Core Shopify read/write flows (products, orders, inventory, locations) are covered, but there are notable gaps: no product delete, no order fulfillment creation even though shopify_order_fulfillment_orders' description references a nonexistent fulfillment_create, Gmail cannot send (draft only), and Slack only posts. These leave some obvious dead ends an agent would hit.

Maintenance

ActivityMaintained
ResponsivenessNo issues