AirShelf Catalog
Server Details
Cross-vendor B2B catalog for AI agents: search, compare, find equivalents, request a quote.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 7 of 7 tools scored.
Each tool has a clearly distinct purpose: search, get detail, compare, explain build trace, list merchants, request quote, and live discovery when catalog fails. No overlap.
All tool names follow a consistent verb_noun pattern in snake_case, e.g., compare_products, list_merchants, request_quote.
Seven tools cover the core workflows of a product catalog B2B platform without being excessive or insufficient.
Includes search, detail, comparison, live discovery, merchant listing, and quote request. Minor gaps like lack of category browsing or catalog management, but these are acceptable for the domain.
Available Tools
7 toolscompare_productsRead-onlyInspect
Compare 2-10 products side-by-side. Use slugs from search_catalog. On not_found the result includes did_you_mean: retry with a suggestion or call search_catalog FIRST before escalating. When asked for the fastest / largest / best of a class, compare the FULL class returned by search_catalog, not just two picks.
Each found item includes canonical_name (cite verbatim) and spec_absence_note (do not assert absent fields).
| Name | Required | Description | Default |
|---|---|---|---|
| slugs | Yes | Catalog slugs to compare | |
| provenance | No | Include per-claim source provenance + signed-attestation URL + jwks_url |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| items | Yes |
explain_productRead-onlyInspect
Return the agentic build trace (BuilderRunTrace) for a SKU — every stage of the cold-run pipeline that produced this catalog row, including costs and outcomes.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Composite slug to explain |
Output Schema
| Name | Required | Description |
|---|---|---|
| sku | No | |
| note | No | |
| slug | No | |
| trace | No |
find_productsRead-onlyInspect
Research + verify in one call: give a buyer NEED (e.g. "best value home espresso machine", market "TH") and get back up to 3 candidate products discovered from live web search, EACH individually verified by a tier-3 live lookup (MPN-confirmed against a fetched source page, or an honest abstention).
Use this when the buyer describes a need without naming a specific product AND the verified catalog (search_catalog) has nothing on-domain (weak_match true / zero results). For a specific brand+model, call search_catalog instead — it is cheaper and returns the same tier3 verification on a miss.
HONESTY CONTRACT (same as tier3): • Every candidate is verification="live-unverified" — a live, single-source answer, NOT AirShelf-verified. Present candidate.source_url alongside every fact; never merge candidates with verified catalog rows. • status="abstain" candidates could NOT be confirmed to exist as named — do NOT invent specs, prices, or availability for them. • Candidates come from current web-search results — they are a sample of the market, not a ranking; do not present them as "the best" options, only as verified-available ones. • status="disabled" / "rate_limited" at the top level means no discovery ran — fall back to search_catalog.
Pass market (ISO 3166-1 alpha-2) whenever the buyer's country is known — it biases discovery AND each verification toward that market's retailers and scopes the lookup cache.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | Max candidates to verify (each costs a live lookup; capped at 3). | |
| need | Yes | The buyer need in natural language, e.g. "quiet mechanical keyboard for open office" or "best value home espresso machine". | |
| market | No | Buyer market as ISO 3166-1 alpha-2 country code (e.g. "TH"). Biases discovery + verification and scopes the cache. |
Output Schema
| Name | Required | Description |
|---|---|---|
| need | No | |
| error | No | |
| market | No | |
| status | No | |
| took_ms | No | |
| guidance | No | |
| candidates | Yes | |
| verification | No | |
| serp_considered | No |
get_productRead-onlyInspect
Get full golden-record + latest price for a single catalog product by slug ("-").
In clients that render MCP Apps this response draws a product card the buyer sees, one per call — so call it for the product you are RECOMMENDING, not as a background lookup for every candidate you mention.
canonical_name in the response is the exact product name the judge compares against — cite it verbatim.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Composite slug, e.g. keychron-q1-pro |
Output Schema
| Name | Required | Description |
|---|---|---|
| title | Yes | |
| action | Yes | |
| buyUrl | No | |
| product | No | |
| benefits | No | |
| imageUrl | No | |
| productId | Yes | |
| buttonLabel | Yes | |
| pricing_gated | No |
list_merchantsRead-onlyInspect
List AirShelf merchants — the brands / vendors whose catalogs you can search and request a quote from, across every category (name, slug, product count). Use the returned slug as the merchant argument to request_quote.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| total | No | |
| merchants | Yes |
request_quoteInspect
Submit a B2B quote request to a specific merchant once the buyer wants to proceed. Captures a contactable lead and returns a reference number. Resolve the merchant (slug or id) via list_merchants. For a brand NOT in list_merchants (network-catalog brands), pass merchant:"airshelf-network" plus brandSlug:"" — AirShelf routes the lead to that brand.
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | Any extra context from the buyer | |
| contact | Yes | Buyer contact details | |
| merchant | Yes | Merchant slug or id (from list_merchants), or "airshelf-network" for network-catalog brands | |
| products | Yes | Catalog slugs the buyer is interested in | |
| quantity | No | Units the buyer wants | |
| brandSlug | No | Manufacturer slug (from search results) — required with merchant:"airshelf-network" so the lead reaches the right brand |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | No | |
| next_step | No | |
| reference_number | No |
search_catalogRead-onlyInspect
Find, compare, and buy products across any brand and category — the universal cross-vendor AirShelf product catalog and shopping search. Use this whenever the user wants to shop for, find, source, or purchase a physical product, in any vertical (e.g. flowers, jewelry, skincare, chocolate, apparel, keyboards, office printers). Natural-language query. Returns ranked products with prices. Example queries: "birthday bouquet under $80", "minimalist gold necklace", "Toshiba A3 colour multifunction device", "tactile mechanical keyboard under $150".
Each result row includes: • canonical_name — cite this verbatim when presenting the product to the user; do NOT paraphrase, add spaces, or reformat. • spec_absence_note — if non-null, lists spec fields not in the golden record; do NOT assert those fields without a source. • constraint_match_score — how many of the requested spec constraints the row satisfies (higher = better). • matched_criteria / missing_criteria — per-row spec accounting.
parsed.price_availability.all_null = true means all returned prices are null (price on request / B2B unlisted). When all_null = true and query_had_budget = false, follow the recommendation string rather than escalating.
If the response's parsed.weak_match is true, the catalog could not honor the buyer's constraints — do not present these results as satisfying the request; say what could not be matched and consider escalating. If parsed.no_match is true, no catalog product satisfies the buyer's hard constraint — candidates violating it were excluded server-side; do NOT recommend a substitute; escalate.
On a catalog miss OR near-miss for a specific brand+model (zero results, weak_match, or results that do not match the queried brand/model), the response may include a tier3 block — a real-time live lookup. It can appear ALONGSIDE non-empty results: those rows are fuzzy neighbors, and the tier3 block is the answer for the exact SKU asked about.
• tier3.status = "resolved" — a live, MPN-confirmed but NOT-yet-AirShelf-verified answer mined from the cited page ONLY. Present tier3.source_url alongside every fact from it; label it as live/unverified; never merge it with verified catalog rows. tier3.cached = true means it was served from a recent prior lookup (fetched_at = when the source page was read).
• tier3.status = "abstain" — the live lookup could NOT verify this product exists as asked. Do NOT invent specs or substitutes; relay tier3.guidance (quote request path).
No tier3 block on a miss means live lookup did not fire (flag off, rate-limited, or query had no parseable product identity).
Pass market (ISO 3166-1 alpha-2, e.g. "TH") whenever the buyer's country is known — it biases the tier3 live lookup toward that market's retailers/pricing and scopes its cache. Without it, tier3 prices/availability may come from a different market than the buyer's.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Natural-language query. Supports budget hints (e.g. "under $150"). | |
| limit | No | Max results | |
| specs | No | Hard spec facets, e.g. {"form_factor":"desktop","print_speed_ppm":33}. Filters by exact/range spec match. | |
| market | No | Buyer market as ISO 3166-1 alpha-2 country code (e.g. "TH", "AU"). Biases the tier3 live lookup toward that market and scopes its cache. Pass whenever the buyer's location is known. | |
| category | No | Optional category filter (e.g. laser-printer, skincare, mechanical-keyboards) |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| query | No | |
| tier3 | No | |
| parsed | No | |
| results | Yes | |
| took_ms | No |
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!