# market.waxed/mcp (remote · mcp.waxed.market)

WAXED vinyl marketplace: record/catalog search, price history, and dealer store management.

- Trust score: 65/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `mcp.waxed.market`: 65/100 (this document), [markdown](https://verifymcp.io/servers/market-waxed-mcp/mcp.md), [page](https://verifymcp.io/servers/market-waxed-mcp/mcp)

## Channel facts

- Endpoint: `https://mcp.waxed.market`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_listing).
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 73/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 6018 tokens (~139/item across 43 items; 43 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 17/100
  - Stability observed for 5 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http market-waxed-mcp https://mcp.waxed.market/
```

### Codex

```toml
[mcp_servers.market-waxed-mcp]
url = "https://mcp.waxed.market/"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "market-waxed-mcp": {
      "type": "remote",
      "url": "https://mcp.waxed.market/",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add market-waxed-mcp --url https://mcp.waxed.market/ --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  market-waxed-mcp:
    url: "https://mcp.waxed.market/"
```

### Other

```json
{
  "mcpServers": {
    "market-waxed-mcp": {
      "type": "http",
      "url": "https://mcp.waxed.market/"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 64, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 63, −1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 64)

First indexed and scored.

## MCP tools (43)

### `search` (~91 tokens)

Search the WAXED vinyl marketplace and catalog. Returns mixed results (records, artists, stores, labels, genres, crates) ranked by relevance. Record results include listing counts and minimum price when copies are for sale. Catalog numbers also match.

Input parameters:

- `limit` (integer): Max results (default 20).
- `query` (string, required): Free-text search, e.g. an artist, album title, or label.

### `get_release` (~107 tokens)

Get full detail for a release by its catalog release id: artist, title, year, label, formats, genres/styles, cover art, other pressings/versions of the same master, and every copy currently for sale on WAXED with price, media/sleeve condition, and seller info. Prices are in USD cents.

Input parameters:

- `release_id` (string, required): Catalog release id, e.g. "249504" — as returned by search, lookup_barcode, and get_release.

### `browse_marketplace` (~114 tokens)

Browse active vinyl listings on WAXED with filters. Returns paginated listings with title, artist, price (USD cents), condition, genre, year, format, and cover art.

Input parameters:

- `format` (string): Filter by format, e.g. "LP".
- `genre` (string): Filter by genre, e.g. "Jazz".
- `page` (integer): Zero-based page number (48 per page).
- `sort` (string): Sort order; "newest" (default) or price-based sorts.

### `get_price_estimate` (~113 tokens)

Estimate the market price (USD) of a release by catalog release id, optionally adjusted for media condition (1=Poor … 5=Mint) and buyer country. Returns price_usd, confidence tier, and the adjustment factors used.

Input parameters:

- `condition` (integer): Media condition 1–5 (5 = Mint).
- `country` (string): ISO country code for geo pricing, e.g. "US".
- `release_id` (string, required): Catalog release id, as returned by search or get_release.

### `get_price_history` (~95 tokens)

Get real historical sales for a release by catalog release id: individual past sales (price, currency, date, condition) plus aggregate stats and the Discogs low/median/high range. mode "exact" = this pressing only; "all_versions" = every pressing of the master.

Input parameters:

- `mode` (string): Default "exact".
- `release_id` (string, required): Catalog release id, as returned by search or get_release.

### `get_store` (~95 tokens)

Get a WAXED dealer storefront by store slug, username, or profile id: store profile, follower stats, and its active listings (paginated, prices in USD cents).

Input parameters:

- `limit` (integer): Max listings (default 48, max 100).
- `offset` (integer): Pagination offset.
- `slug` (string, required): Store slug (from waxed.market/stores/<slug>), username, or profile UUID.

### `get_shared_wishlist` (~69 tokens)

Read a publicly shared WAXED want-list by its share token: the wants (artist/title/label/year) and which of them currently have copies for sale on WAXED with prices.

Input parameters:

- `token` (string, required): Share token from a waxed.market/wishlist/<token> link.

### `get_artist` (~77 tokens)

Get a WAXED artist page by name: bio, verified flag, tags, full discography, and copies currently for sale on WAXED with prices in USD cents.

Input parameters:

- `limit` (integer): Max listings (default 48, max 100).
- `name` (string, required): Artist name, e.g. "Miles Davis".

### `get_label` (~78 tokens)

Get a WAXED record label page by name: profile/bio, sublabels, full discography, and copies currently for sale on WAXED with prices in USD cents.

Input parameters:

- `limit` (integer): Max listings (default 48, max 100).
- `name` (string, required): Label name, e.g. "Blue Note".

### `get_crate` (~88 tokens)

Get a WAXED crate by id: a dealer-curated bundle of records sold together. Returns the full item list (each record with artist, title, release id, and price), the total bundle price in USD cents, item count, genres, and the country the crate ships from.

Input parameters:

- `id` (string, required): Crate id (marketplace listing id or bundle_crate_id).

### `discogs_search` (~159 tokens)

Search the full Discogs catalog via WAXED's proxy — at least one param required. Use for finding the right release/version to list or match, e.g. before create_listing or update_listing's release_id rematch.

Input parameters:

- `format` (string): Filter by format, e.g. "LP".
- `genre` (string): Filter by genre, e.g. "Jazz".
- `limit` (integer): Max results per page.
- `page` (integer): Zero-based page number.
- `q` (string): Free-text search, e.g. an artist, album title, or catalog number.
- `year_from` (integer): Earliest release year, inclusive.
- `year_to` (integer): Latest release year, inclusive.

### `lookup_barcode` (~70 tokens)

Scan-to-list: resolve a UPC/EAN barcode to a catalog release id, title, artist, and year via WAXED's proxy. Use the result for create_listing or update_listing's release_id rematch.

Input parameters:

- `barcode` (string, required): UPC/EAN barcode, 8–14 digits.

### `create_checkout_link` (~162 tokens)

Build a link for a human to review and pay for a cart of WAXED listings. This does NOT purchase anything, move money, create a Stripe session, or collect any payment/address/shipping info — it only returns a checkout_url that pre-loads WAXED's cart. The human opens that link, signs in, enters their shipping address, picks a shipping option per seller, and pays through WAXED's existing checkout — all of that happens on the website, not here. Multi-seller carts are normal: WAXED checkout splits payment per seller automatically. Hand this link to your human; do not try to complete the purchase yourself.

Input parameters:

- `listing_ids` (array, required): Listing ids to include in the cart, 1-20.

### `my_listings` (~134 tokens)

List the authenticated dealer's own marketplace listings (requires an agent key). Returns a compact projection per listing: id, title, artist, price (USD cents), status, condition, sleeve_condition, quantity, release_id, created_at, sync_state ('listed'/'unlisted'/'removed'/null — the listing's cross-platform sync state; null when the dealer doesn't sync externally). Optionally filter by status and cap the count.

Input parameters:

- `limit` (integer): Max listings to return.
- `status` (string): Filter to this listing status, e.g. 'active', 'removed', 'sold', 'collection'.

### `create_listing` (~303 tokens)

Create a new marketplace listing for the authenticated dealer (requires an agent key). price_cents is an integer number of USD cents (e.g. 1500 = $15.00); active listings require at least 50 cents. condition and sleeve_condition are Goldmine grades: 'Mint', 'Near Mint', 'VG+', 'VG', 'Good+', 'Good', 'Fair', 'Poor' (sleeve_condition also accepts 'Generic' for a plain/missing jacket). status defaults to 'active' (for sale); use 'collection' for a non-selling catalog entry.

Input parameters:

- `artist` (string, required): Artist name.
- `condition` (string, required): Media (vinyl) condition, Goldmine grade.
- `description` (string): Optional free-text listing description (max 5000 chars).
- `discogs_release_id` (string): Deprecated alias for release_id. Prefer release_id.
- `price_cents` (integer, required): Price in USD cents. Minimum 50 for active listings.
- `quantity` (integer): Number of copies available.
- `release_id` (string): Optional catalog release id to link this listing to — the same id get_release, search results, and lookup_barcode return.
- `sleeve_condition` (string): Sleeve condition, Goldmine grade or 'Generic'.
- `status` (string): 'active' (for sale, default) or 'collection' (not for sale).
- `title` (string, required): Release title.

### `update_listing` (~285 tokens)

Update fields on one of the authenticated dealer's existing listings (requires an agent key). Only provided fields are changed. price_cents is an integer number of USD cents; active listings require at least 50 cents. condition/sleeve_condition are Goldmine grades (sleeve_condition also accepts 'Generic'). This does not change listing status (delisted/relisted) — use set_listing_status for that — and does not cascade to Discogs or Square.

Input parameters:

- `accept_offers` (boolean): Whether buyers can submit offers below the listed price.
- `condition` (string): Media condition, Goldmine grade.
- `description` (string): Free-text listing description (max 5000 chars).
- `discogs_release_id` (string): Deprecated alias for release_id. Prefer release_id.
- `listing_id` (string, required): The listing id to update.
- `location` (string): Storage/location note for the dealer.
- `price_cents` (integer): New price in USD cents.
- `quantity` (integer): Number of copies available.
- `release_id` (string): Rematch this listing to a different pressing/version (get_release returns versions[] to choose from). The numeric catalog release id. Blocked for listings synced from an external platform. Cover art…
- `sleeve_condition` (string): Sleeve condition, Goldmine grade or 'Generic'.

### `set_listing_status` (~145 tokens)

Delist or relist one of the authenticated dealer's listings (requires an agent key). action 'delist' removes the listing from WAXED and, when linked, deletes the corresponding Discogs listing (irreversible on the Discogs side — Discogs has no un-delete) and decrements Square inventory. action 'relist' brings it back for sale on WAXED and re-increments linked Square inventory, but does NOT restore a deleted Discogs listing; relisting also requires the dealer to have completed Stripe payouts onboarding.

Input parameters:

- `action` (string, required): 'delist' or 'relist'.
- `listing_id` (string, required): The listing id to change.

### `delete_listing` (~103 tokens)

Permanently delete one of the authenticated dealer's listings (requires an agent key). This is irreversible: the WAXED row is deleted outright and, when linked, the corresponding Discogs listing (or collection instance) is also deleted upstream. Requires confirm: true or the call is rejected before anything is deleted.

Input parameters:

- `confirm` (boolean, required): Must be true to proceed — this is a permanent, irreversible delete.
- `listing_id` (string, required): The listing id to delete.

### `bulk_update_listings` (~362 tokens)

Run one bulk operation across up to 100 of the authenticated dealer's listings at once (requires an agent key). action 'price_update' with mode 'set' sets every listing to value (integer USD cents; the $0.50 floor applies to active listings), or mode 'percent' adjusts each listing's current price by value percent (e.g. -10 lowers price 10%; same floor on active listings). action 'auto_price' runs the WAXED pricing engine per listing from its linked catalog release id — capped at 25 listing ids per call (estimatePrice can live-fetch and run long); listings without a linked release are skipped. action 'status_change' moves listings to status 'active', 'removed', or 'collection' — 'removed' cascades a best-effort Discogs delist + Square inventory decrement for linked listings. action 'mark_sold' marks listings sold and cascades the same best-effort delist/decrement. action 'export_csv' returns the listings as CSV text (no mode/value/status needed). Bulk delete is deliberately not offered here — use delete_listing per item to permanently remove a listing.

Input parameters:

- `action` (string, required): The bulk operation to run.
- `listing_ids` (array, required): Listing ids to act on, 1–100 items. auto_price is further capped at 25.
- `mode` (string): For action 'price_update' only: 'set' (fixed price) or 'percent' (relative adjustment).
- `status` (string): For action 'status_change' only: the new status.
- `value` (number): For action 'price_update' only: integer USD cents (mode 'set') or a percent like -10 (mode 'percent').

### `my_crates` (~81 tokens)

List the authenticated dealer's own crates and lots (requires an agent key). Returns a compact projection per crate: id, name, color, type ('crate'|'lot'), item_count, total_value (USD cents, sum of member listing prices), item_ids (member listing ids).

Input parameters:

- `type` (string): Filter to this type; default 'crate'.

### `create_crate` (~119 tokens)

Create a new crate or lot for the authenticated dealer (requires an agent key). type 'crate' (default) is a dealer-curated bundle sold together; 'lot' is a private grouping. Use modify_crate_items afterward to add listings, and publish_crate to put it up for sale.

Input parameters:

- `color` (string): Optional display color (hex or theme name).
- `name` (string, required): Crate name, e.g. 'Jazz Deep Cuts'.
- `type` (string): 'crate' (default) or 'lot'.

### `update_crate` (~85 tokens)

Rename or recolor one of the authenticated dealer's crates (requires an agent key). Only provided fields are changed; does not touch membership (use modify_crate_items) or publish state (use publish_crate).

Input parameters:

- `color` (string): New display color.
- `crate_id` (string, required): The crate id to update.
- `name` (string): New crate name.

### `delete_crate` (~112 tokens)

Permanently delete one of the authenticated dealer's crates (requires an agent key). This is irreversible: the crate row and all its item memberships are deleted (member listings themselves are untouched). If the crate was published, its public bundle listing is left orphaned — unpublish first. Requires confirm: true or the call is rejected before anything is deleted.

Input parameters:

- `confirm` (boolean, required): Must be true to proceed — this is a permanent, irreversible delete.
- `crate_id` (string, required): The crate id to delete.

### `modify_crate_items` (~105 tokens)

Add or remove listings from one of the authenticated dealer's crates (requires an agent key). action 'add' upserts the given listing ids as crate members (no error on duplicates); 'remove' drops them from the crate without deleting the listings themselves.

Input parameters:

- `action` (string, required): 'add' or 'remove'.
- `crate_id` (string, required): The crate id to modify.
- `listing_ids` (array, required): Listing ids to add to or remove from the crate.

### `publish_crate` (~163 tokens)

Publish or unpublish one of the authenticated dealer's crates (requires an agent key; needs at least 2 member listings to publish). action 'publish' activates every member listing priced at or above $0.50 and creates (or updates) a public bundle page at waxed.market/crates/{crate_id}, priced as the sum of member prices. action 'unpublish' moves member listings back to 'collection' (not for sale) and removes the public bundle listing. Re-running publish recalculates the crate price from current member prices — to reprice a crate, update_listing its members then publish again.

Input parameters:

- `action` (string, required): 'publish' or 'unpublish'.
- `crate_id` (string, required): The crate id to publish or unpublish.

### `my_orders` (~229 tokens)

List the authenticated dealer's orders (requires an agent key), merging native WAXED checkout orders (marketplace_transactions) with Square POS sales (square_orders). Returns a compact projection per order: id (Square rows are prefixed 'square:'), source ('waxed'|'square'), status, total_cents (integer USD cents), created_at, and — when available — buyer_name, listing_title, listing_id. role defaults to 'seller'; Square POS rows only ever appear for role 'seller' (they're POS sales, never a buyer's own order). role 'buyer' returns only the caller's own WAXED purchases. Optionally filter by the unified status field and cap the count (default 50, max 200); results are sorted newest first.

Input parameters:

- `limit` (integer): Max orders to return (default 50, max 200).
- `role` (string): 'seller' (default) or 'buyer'.
- `status` (string): Filter to this unified order status, e.g. 'pending', 'confirmed', 'shipped', 'completed'.

### `get_order` (~135 tokens)

Get full detail for one order by id (requires an agent key; the authenticated dealer must be the buyer or seller on it, else 403). WAXED-native orders only — Square POS sales aren't queryable here. Returns the order row, its order_events history, listing, the other party's profile, and any seller review. Shipping addresses are redacted by role: sellers see the buyer's full address; buyers see only the seller's city/state/country. Pickup orders are the exception — both parties see the full public pickup address plus the seller's pickup instructions.

Input parameters:

- `order_id` (string, required): The order id.

### `update_order_status` (~340 tokens)

Advance an order's status, or attach a note without changing status (requires an agent key; the authenticated dealer must be the buyer or seller on it). Legal status transitions: confirmed→shipped (seller only; pass tracking_number/carrier — registers tracking for delivery webhooks), confirmed→canceled (either party), shipped→delivered (buyer only, except a seller may mark a pickup order delivered themselves), delivered→return_requested (buyer only), return_requested→returned (seller only). event_type 'note' can be attached at any status by either party and never changes status. Any other transition is rejected with a 422. NOTE: returned→refunded is a real transition in the app, but it fires a DB trigger that auto-issues store credit to the buyer. The refunded transition is dashboard-only because it issues store credit to the buyer; it is blocked for agent keys (403) even though this tool accepts other transitions.

Input parameters:

- `carrier` (string): Carrier name, e.g. 'USPS', 'UPS'. Only meaningful with event_type 'shipped'; carried in the event's metadata.
- `event_type` (string, required): The transition (or note) to apply — see tool description for the legal transition table. 'refunded' is intentionally not offered here (dashboard-only, issues store credit).
- `note` (string): Optional free-text note stored on the event, alongside a transition or standalone with event_type "note".
- `order_id` (string, required): The order id.
- `tracking_number` (string): Shipment tracking number. Only meaningful with event_type 'shipped'; carried in the event's metadata.

### `discogs_sync` (~94 tokens)

Queue a full Discogs sync for the authenticated dealer (requires an agent key, and the dealer must have already connected Discogs in Settings — otherwise this returns a clear 'Discogs not connected' error). The sync runs on a background worker and this call returns immediately (HTTP 202, queued: true) rather than waiting for completion; poll discogs_status to watch progress via last_listings_sync_at / sync_pending.

### `discogs_status` (~72 tokens)

Get the authenticated dealer's Discogs connection and sync status (requires an agent key). Returns connected flag, discogs username, listings_for_sale count, last_listings_sync_at, listings_sync_error, sync_pending/force_sync_requested, and paused. If Discogs isn't connected, returns { connected: false }.

### `discogs_pause` (~75 tokens)

Pause or resume the authenticated dealer's automatic Discogs sync (requires an agent key and an already-connected Discogs account). Pausing stops the background worker from picking up sync requests for this dealer until resumed; it does not affect data already synced.

Input parameters:

- `paused` (boolean, required): true to pause automatic sync, false to resume it.

### `square_status` (~72 tokens)

Get the authenticated dealer's Square POS connection and health (requires an agent key). Returns connected flag, merchantId, connectedAt, lastSyncAt, tokenHealthy, integrationHealth ('healthy' or an error state from the last token-refresh/webhook), and lastErrorMessage. If Square isn't connected, connected is false.

### `square_push` (~119 tokens)

Push up to 20 of the authenticated dealer's listings to their connected Square catalog (requires an agent key, and the dealer must have already connected Square — otherwise this returns a clear 'No Square account connected' error). Creates or updates the matching Square catalog item and variation for each listing id and sets Square inventory (1 if the listing is active, else 0). Pull sync (Square -> WAXED) is dashboard-only and not exposed here.

Input parameters:

- `listing_ids` (array, required): Listing ids to push to Square, 1–20 items.

### `my_analytics` (~145 tokens)

Cross-platform sales/inventory aggregate for the authenticated dealer (requires an agent key), merging WAXED, Discogs, and Square activity. Defaults to the last 30 days when from/to are omitted. platform filters to a single connected platform ('waxed'|'discogs'|'square') or 'all' (default). from/to are ISO 8601 date-times.

Input parameters:

- `from` (string): Range start, ISO 8601 date-time. Default: 30 days before `to`.
- `platform` (string): Platform to scope to; default 'all'.
- `to` (string): Range end, ISO 8601 date-time. Default: now.

### `hot_items` (~107 tokens)

Demand-scored items for the authenticated dealer's own listings (requires an agent key), ranked by views, favorites, sales velocity, and price competitiveness. mode 'hot' (default) returns the top items to prioritize; 'underperforming' returns competitively-priced items not getting enough engagement; 'full' returns complete scoring data with all metrics.

Input parameters:

- `limit` (integer): Max items to return (default 10, max 50).
- `mode` (string): Default 'hot'.

### `market_trends` (~108 tokens)

Market-wide trends across the whole WAXED marketplace (all sellers, not dealer-specific), comparing the current vs previous 30-day period. mode 'full' (default) returns trending genres, artists, and price movement together; 'genres' or 'artists' returns just that trend category. Requires an agent key.

Input parameters:

- `limit` (integer): Max items for 'genres'/'artists' mode (default 10, max 50).
- `mode` (string): Default 'full'.

### `my_profile` (~81 tokens)

Get the authenticated dealer's own storefront profile (requires an agent key). Returns a compact projection only: id, store_name, display_name, username, store_slug, bio, store_location, is_verified, seller_rating, seller_rating_count, discogs_username, discogs_connected, square_connected. Never includes email, Stripe ids, tax fields, or settings blobs.

### `update_profile` (~326 tokens)

Update your public storefront profile: bio, display/store name, location, featured genres, social links, currency, and publish/unpublish (`is_published: false` hides your storefront — closest thing to vacation mode). Store policies are not a WAXED feature yet. Requires an agent key; updates only your own profile row, all fields optional.

Input parameters:

- `bio` (string): Storefront bio/about text (max 2000 chars). Empty string clears it.
- `default_currency` (string): Default storefront display currency.
- `display_name` (string): Public display name (max 80 chars). Cannot be blank.
- `featured_genres` (array): Up to 10 featured genres, each max 40 chars. Blank entries are dropped.
- `is_published` (boolean): false hides your storefront from the public marketplace (vacation mode); true publishes it.
- `social_bandcamp` (string): Bandcamp URL, must start with https:// (empty string clears it).
- `social_instagram` (string): Instagram URL, must start with https:// (empty string clears it).
- `social_twitter` (string): Twitter/X URL, must start with https:// (empty string clears it).
- `social_youtube` (string): YouTube URL, must start with https:// (empty string clears it).
- `store_location` (string): Storefront location, e.g. "Portland, OR" (max 120 chars). Empty string clears it.
- `store_name` (string): Storefront name (max 80 chars). Cannot be blank.

### `my_conversations` (~172 tokens)

List your buyer/seller message conversations with unread status and last message. role/counterpart/last_message.from are computed relative to you (requires an agent key). Returns a compact projection per conversation: id, role ('seller'|'buyer'), counterpart {id, name, store_name}, listing {id, title, price} or null, last_message {from ('you'|'them'), body, created_at} or null, unread, status, last_message_at.

Input parameters:

- `limit` (integer): Max conversations to return (default 25, max 100).
- `offset` (integer): Pagination offset (default 0).
- `role` (string): Filter to conversations where you're the seller or the buyer; default 'all'.
- `status` (string): Filter by conversation status; default 'open'.

### `get_conversation` (~176 tokens)

Get a message thread by conversation id (requires an agent key; you must be the seller or buyer on it). Returns the conversation (id, role relative to you, status, last_message_at) and its messages, newest last, each projected to id, from ('you'|'them'), body, created_at. Pass before (ISO 8601 date-time) to page further back in history. mark_read: true marks the thread read on your side as of now.

Input parameters:

- `before` (string): ISO 8601 date-time — return messages created before this time.
- `conversation_id` (string, required): The conversation id.
- `limit` (integer): Max messages to return (default 50, max 200).
- `mark_read` (boolean): If true, marks the thread read on your side as of now.

### `send_message` (~166 tokens)

Sends a real message the other party sees immediately in their inbox. There is no undo. Pass conversation_id to reply in an existing thread, or omit it and pass buyer_id (optionally listing_id) to start a new conversation with that buyer and send the first message in one call (you are the seller). Requires an agent key.

Input parameters:

- `body` (string, required): Message text, up to 4000 characters.
- `buyer_id` (string): The buyer's profile id to start a new conversation with. Required when conversation_id is omitted.
- `conversation_id` (string): Existing conversation id to reply in. Omit to start a new conversation instead.
- `listing_id` (string): Optional listing id to associate with a new conversation. Only used when conversation_id is omitted.

### `get_shipping_quote` (~115 tokens)

Estimate shipping cost for a listing to a destination. Quotes only — labels cannot be purchased via agents.

Input parameters:

- `city` (string): Destination city.
- `country` (string, required): Destination ISO 3166-1 alpha-2 country code, e.g. "US".
- `listing_id` (string, required): The listing id to quote shipping for.
- `postal` (string): Destination postal/zip code.
- `quantity` (integer): Number of copies (default 1).
- `state` (string): Destination state/province.

### `get_order_shipping_rates` (~57 tokens)

Get live carrier rate quotes for a confirmed order you're selling. Read-only: purchasing the label happens in the dashboard.

Input parameters:

- `order_id` (string, required): The order id. Must be status 'confirmed' and you must be the seller.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/market-waxed-mcp/mcp#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 64
- 2026-07-31: 64
- 2026-07-30: 63
- 2026-07-29: 64

## Links

- Remote endpoint: https://mcp.waxed.market/
- Changelog RSS feed: https://verifymcp.io/servers/market-waxed-mcp/mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/market-waxed-mcp/mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/market-waxed-mcp/mcp
