ingrammicro-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| AUTH_MODE | No | gateway (per-request headers, SOP-compliant) or env (shared credential, local dev only) | gateway |
| MCP_HTTP_HOST | No | Listening host | 0.0.0.0 |
| MCP_HTTP_PORT | No | Listening port | 8080 |
| MCP_TRANSPORT | No | http (production) or stdio (local dev) | stdio |
| INGRAMMICRO_BASE_URL | No | Override for sandbox testing | https://api.ingrammicro.com |
| INGRAMMICRO_CLIENT_ID | No | Only used in env mode - OAuth2 Client ID | |
| INGRAMMICRO_SENDER_ID | No | IM-SenderID value sent on every call | MSPbots |
| INGRAMMICRO_COUNTRY_CODE | No | Only used in env mode - Two-letter ISO country code (IM-CountryCode) | |
| INGRAMMICRO_CLIENT_SECRET | No | Only used in env mode - OAuth2 Client Secret | |
| INGRAMMICRO_CUSTOMER_NUMBER | No | Only used in env mode - Ingram Micro reseller account number (IM-CustomerNumber) |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ingrammicro_search_productsA | Search Ingram Micro's product catalog by keyword, vendor, category, or SKU type. "What's the Ingram part number for Cisco switch model X" or "list Microsoft cloud SKUs with discounts" both start here. Returns matching products with Ingram/vendor part numbers; call ingrammicro_get_price_and_availability next for live pricing/stock. |
| ingrammicro_get_product_detailA | Get full catalog detail for one product by its Ingram Micro part number (from ingrammicro_search_products). Use ingrammicro_get_product_detail_by_reference instead if you only have the vendor's own part number or a subscription plan id/name. |
| ingrammicro_get_product_detail_by_referenceA | Get catalog detail for a product identified by the vendor's own part number, or by subscription plan id/name — for when you don't have Ingram's own part number. Exactly one of vendor_part_number, plan_id, or plan_name must be given. |
| ingrammicro_get_price_and_availabilityA | Get real-time price and/or stock availability for one or more SKUs — the step before placing an order, to confirm current price and that stock exists before calling ingrammicro_create_order. |
| ingrammicro_create_orderA | Place a real purchase order for stocked, direct-ship, licensing, or warranty SKUs. Real money against the reseller's net-terms account — Ingram does not support credit-card API ordering. |
| ingrammicro_create_cloud_orderA | Place a cloud-subscription order, or convert an existing Quote (Quote-to-Order / Configure-to-Order) into a real order. Asynchronous: this call only returns a confirmationNumber acknowledging receipt — Ingram Micro pushes the actual order result (success or error) later via its own webhook, not in this response. |
| ingrammicro_modify_orderA | Change an order placed with the customer-hold flag — add/update/ delete lines, change ship-to, or release the hold. ONLY works within roughly 24 hours of placement, and only if the order was created with the customer-hold flag (void after 24h if never released). An order placed WITHOUT customer-hold cannot be modified — this call fails. Confirm with a human before changing quantities or the shipping address. |
| ingrammicro_cancel_orderA | Cancel an order before it reaches Ingram Micro's warehouse. |
| ingrammicro_get_orderA | Get full status/line detail for one order — shipping status, tracking, per-line fulfillment. Use ingrammicro_search_orders instead if you don't already have the exact order number. |
| ingrammicro_search_ordersA | Search past/current orders by PO number, status, product, or date. Use this to find the exact order number before calling ingrammicro_get_order, ingrammicro_modify_order, or ingrammicro_cancel_order. |
| ingrammicro_search_quotesA | Search quotes by number, status, vendor, or end customer. Use this to find a quote's number before ingrammicro_get_quote, ingrammicro_validate_quote_to_order, or converting it to an order with ingrammicro_create_cloud_order. |
| ingrammicro_get_quoteA | Get full detail for one quote — line items, pricing, expiry, and current status. |
| ingrammicro_create_quoteA | Create a new quote — a price hold, not a purchase. Convert it to a real order later with ingrammicro_create_cloud_order(quote_number=...) after validating with ingrammicro_validate_quote_to_order. |
| ingrammicro_validate_quote_to_orderA | Validate a quote before converting it to an order, and learn which fields the vendor requires at header and line level for the Quote-to-Order call. |
| ingrammicro_search_invoicesA | Search invoices by order, invoice number, date range, or status. Use this to find the exact invoice number before calling ingrammicro_get_invoice. |
| ingrammicro_get_invoiceA | Get full line-level detail for one invoice. |
| ingrammicro_search_renewalsA | Search upcoming or past subscription/support renewals by order, vendor, end customer, or opportunity status. Use this to find the renewal id before ingrammicro_get_renewal. |
| ingrammicro_get_renewalA | Get full detail for one renewal opportunity. |
| ingrammicro_search_dealsA | Search special-pricing deals (vendor discount bids) by vendor or end customer. A deal's id can be passed as special_bid_number when placing an order, or as deal_id when creating a quote. Use this to find the exact deal id before ingrammicro_get_deal. |
| ingrammicro_get_dealA | Get full detail for one special-pricing deal, including which products/vendors it covers. |
| ingrammicro_search_returnsA | Search return (RMA) requests by invoice, product, or status. Use this to find the exact case_request_number before calling ingrammicro_get_return. |
| ingrammicro_get_returnA | Get full detail and current status for one return (RMA) request. |
| ingrammicro_create_returnA | File one or more return (RMA) requests against already-invoiced product. Each entry needs the original invoice, a quantity, primary/secondary reason, box count, and a full ship-from address — Ingram rejects a request missing any of those. Confirm with a human before filing; a filed return cannot be un-filed through this API. |
| ingrammicro_get_freight_estimateA | Estimate freight/shipping cost for a set of SKUs and quantities before placing an order — check this when shipping cost matters to the customer's decision. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 24 tools
Each tool targets a distinct resource and action, with search/get pairs clearly separated by whether an exact ID is known. Potential overlaps like create_order vs create_cloud_order and get_product_detail vs get_product_detail_by_reference are explicitly disambiguated in the descriptions.
All tools follow the consistent ingrammicro_ prefix with verb_noun snake_case naming. Verbs like get, search, create, modify, cancel, and validate are used predictably across the set, making intent easy to infer.
At 24 tools, this is slightly above the typical well-scoped range, but the count is justified by the broad distribution domain covering products, orders, quotes, invoices, returns, renewals, deals, and freight. Each tool has a clear place, so the set feels substantial rather than bloated.
The toolset covers the core reseller workflow end-to-end: product search/detail/pricing, order placement with modification/cancellation, quote creation through validation and conversion, plus invoices, returns, renewals, deals, and freight estimates. No significant dead ends or missing lifecycle operations for the stated domain are apparent.