W3Ship MCP Server
# W3Ship Commerce MCP Server
> **Let AI shop for you โ with no passwords, no logins, just cryptographic identity.**
W3Ship is the first MCP (Model Context Protocol) server for **AI-powered commerce**. It gives AI agents like Claude, Cursor, and VS Code Copilot the ability to create shopping carts, place orders, track shipments, book sessions, **swap tokens via Uniswap**, **sell items P2P**, and **distribute promotional items with in-store pickup** โ all using cryptographic identity (SLH-DSA / ECDSA) instead of passwords.
Built on TMF Open API standards (TMF663, TMF622, TMF621) for interoperability.
---
## โก Quick Start
### Install via npx (recommended)
No installation required โ just configure your AI client:
**Claude Desktop** (`claude_desktop_config.json`):
```json
{
"mcpServers": {
"w3ship": {
"command": "npx",
"args": ["-y", "w3ship-mcp-server"],
"env": {
"VALKEY_HOST": "localhost",
"VALKEY_PORT": "6379"
}
}
}
}
```
**Cursor** (`.cursor/mcp.json`):
```json
{
"mcpServers": {
"w3ship": {
"command": "npx",
"args": ["-y", "w3ship-mcp-server"],
"env": {
"VALKEY_HOST": "localhost",
"VALKEY_PORT": "6379"
}
}
}
}
```
**VS Code** (`.vscode/mcp.json`):
```json
{
"servers": {
"w3ship": {
"type": "stdio",
"command": "npx",
"args": ["-y", "w3ship-mcp-server"],
"env": {
"VALKEY_HOST": "localhost",
"VALKEY_PORT": "6379"
}
}
}
}
```
### Prerequisites
- **Node.js** 18+
- **Redis / Valkey** instance (for cart, order, and shipment storage)
- Local: `docker run -p 6379:6379 redis:latest`
- Or any Redis-compatible service (AWS ElastiCache, Upstash, etc.)
---
## ๐ ๏ธ Tools (22 total)
### ๐ Shopping Cart (TMF663)
| Tool | Description |
|:---|:---|
| `create_cart` | Create a shopping cart. Uses `W3SHIP_PUBLIC_KEY` automatically if configured |
| `get_cart` | Retrieve a cart by its public key ID |
| `add_item` | Add an item (product offering + quantity) to a cart |
| `delete_cart` | Delete a shopping cart |
### ๐ฆ Orders (TMF622)
| Tool | Description |
|:---|:---|
| `create_order` | Convert a cart into a confirmed order and initiate fulfillment |
| `get_order` | Retrieve order details by order ID |
### ๐ Shipment Tracking (TMF621)
| Tool | Description |
|:---|:---|
| `track_shipment` | Track delivery status with simulated real-time updates |
### ๐
Session Booking
| Tool | Description |
|:---|:---|
| `get_available_slots` | Get available session time slots by location and date (VR, fitness, dining, salon, etc.) |
| `hold_slot` | Reserve a session slot (held for 10 minutes pending payment) |
| `list_bookings` | List confirmed bookings, optionally filtered by location/date |
### ๐ Identity Lookup
| Tool | Description |
|:---|:---|
| `ship_address` | Retrieve a physical shipping address using a public key + timed signature |
> Identity lookups are forwarded to the centralized W3Ship API (`w3ship.com/api/identity`). Signature verification and database access happen server-side โ no AWS credentials needed on your end.
### ๐งช Setup & Demo
| Tool | Description |
|:---|:---|
| `generate_demo_key` | Generate a demo ECDSA key pair for testing โ try the commerce flow without a wallet |
| `get_identity` | Show the currently configured identity or instructions on how to set one up |
### ๐ Uniswap Swap (NEW in v1.3.0)
| Tool | Description |
|:---|:---|
| `get_swap_quote` | Get a swap quote from Uniswap โ returns output amount, gas estimate, price impact, and routing path. Supports V2, V3, V4, and UniswapX. Default chain: Base (8453). |
| `check_token_approval` | Check if a token is approved for swapping on Uniswap. Returns approval transaction data if needed. |
> Requires `UNISWAP_API_KEY` โ get yours free at [developers.uniswap.org](https://developers.uniswap.org). Built-in token addresses for Base chain: ETH, USDC, USDT, DAI, WETH. Pass any ERC-20 contract address for other tokens.
### ๐ช P2P Marketplace (NEW in v1.4.0)
| Tool | Description |
|:---|:---|
| `create_listing` | Sell anything โ no merchant onboarding needed. Set title, price, currency, and your wallet address for payment. Listings expire after 30 days by default. |
| `search_listings` | Browse active listings by category (electronics, gifts, clothing, etc.) or keyword search. |
| `get_listing` | Get full details of a listing: description, price, seller, payment address, shipping regions. |
| `remove_listing` | Remove your own listing. Seller address must match. |
> Categories: `electronics`, `clothing`, `collectibles`, `home`, `sports`, `gifts`, `books`, `other`. Anyone with a wallet address is a merchant.
### ๐ณ Payment & Fulfillment (NEW in v1.4.0)
| Tool | Description |
|:---|:---|
| `confirm_payment` | Submit an on-chain transaction hash to verify payment. Supports Base (8453) and Tempo chains. Updates order to "paid". |
| `add_tracking` | Seller provides real carrier tracking (UPS, FedEx, USPS, DHL, etc.) after shipping the item. |
> P2P orders auto-detect listing items (LST-* prefix), fill in seller wallet address, and set payment status to `awaiting_payment`. After payment, sellers use `add_tracking` to provide shipping info.
### ๐ Promotional Items & Pickup (Updated in v1.6.0)
| Tool | Description |
|:---|:---|
| `claim_promo` | Claim a FREE promotional listing. Supports **shipping** or **in-store pickup**. One per wallet. |
> **New in v1.6.0: In-Store Pickup**
>
> Promo listings now support three fulfillment modes:
>
> | Mode | How It Works |
> |:---|:---|
> | `ship` | Customer pays shipping, item mailed (original flow) |
> | `pickup` | Customer picks up at a physical location โ **zero cost** |
> | `both` | Customer chooses shipping or pickup |
>
> Create a pickup promo:
> ```
> create_listing(
> isPromo: true,
> fulfillmentType: "pickup",
> pickupLocations: [{
> id: "qbm",
> name: "Quaker Bridge Mall",
> address: "3320 Brunswick Pike, Lawrenceville NJ",
> hours: "Mon-Sat 10am-9pm",
> instructions: "Visit the kiosk near the food court. Show your claim ID."
> }]
> )
> ```
>
> Claim with pickup:
> ```
> claim_promo(listingId: "...", fulfillmentChoice: "pickup", pickupLocationId: "qbm")
> ```
>
> The AI returns the pickup location, hours, and instructions. No address registration needed for pickup claims โ only wallet identity is required.
---
## ๐ Cryptographic Identity
W3Ship uses **cryptographic identity** โ no usernames, no passwords, no accounts. Three identity types are supported:
| Scheme | Key Size | Use Case |
|:---|:---|:---|
| **EVM Address** | 20 bytes (40 hex chars) | MetaMask / any Ethereum wallet |
| **ECDSA (P-256)** | 33 bytes (compressed) / 65 bytes (uncompressed) | Standard web3 wallets |
| **SLH-DSA** | 32 bytes (64 hex chars) | Post-quantum secure identity (Dah.mx) |
Your wallet address or public key IS your cart ID. No sign-up required.
---
## โ๏ธ Configuration
### Environment Variables
| Variable | Required | Default | Description |
|:---|:---|:---|:---|
| `W3SHIP_PUBLIC_KEY` | No | โ | Your wallet address or public key (hex). Set once and all tools use it automatically |
| `UNISWAP_API_KEY` | No | โ | Uniswap Trading API key for swap quotes. Get yours at [developers.uniswap.org](https://developers.uniswap.org) |
| `VALKEY_HOST` | No | `localhost` | Redis/Valkey host |
| `VALKEY_PORT` | No | `6379` | Redis/Valkey port |
| `VALKEY_PASSWORD` | No | โ | Redis/Valkey password (if auth enabled) |
| `W3SHIP_API_URL` | No | `https://w3ship.com` | Base URL for the W3Ship API (identity, session booking) |
### Getting Your Key
- **MetaMask users**: Just copy your Ethereum address (e.g. `0x1234...abcd`) โ it works directly
- **Dah.mx users**: Settings โ AI Assistant Setup โ Copy key
- **Demo/Testing**: Don't set a key โ use `generate_demo_key` in your AI assistant instead
---
## ๐๏ธ Architecture
The MCP server is a **thin client** that combines local cart/order storage with centralized W3Ship services:
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AI Client (Claude / Cursor / VS Code) โ
โ "Create a cart and book a fitness session" โ
โโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ stdio (MCP Protocol)
โโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ W3Ship MCP Server (your machine) โ
โ โ
โ Local Storage (Redis/Valkey): โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Cart โ โ Orders โ โ Shipment โ โ
โ โ (TMF663) โ โ (TMF622)โ โ (TMF621) โ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โ Centralized API (w3ship.com): โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Booking โ โ Identity Lookup โ โ
โ โ /api/slots โ โ /api/identity โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
- **Commerce** (cart, order, shipment) โ stored locally in your Redis
- **Identity** (address lookup) โ forwarded to `w3ship.com` API
- **Session Booking** โ forwarded to `w3ship.com` API
- **No AWS credentials** needed. No cloud config required.
---
## ๐ก Example Conversations
### Shopping & Booking
```
You: "I want to shop on W3Ship"
Claude: [calls get_identity โ no key configured]
[calls generate_demo_key โ creates a test identity]
[calls create_cart with the demo key]
"You're all set! I've created a shopping cart for you.
What would you like to buy?"
You: "Book me a VR session for this afternoon"
Claude: [calls get_available_slots for today]
"Here are today's sessions at Downtown VR:
โข 2:00 PM - $45 (3 spots left)
โข 4:00 PM - $45 (5 spots left)
Which time works?"
You: "4 PM"
Claude: [calls hold_slot โ add_item]
"Slot held for 10 minutes. Added to your cart."
You: "Place the order"
Claude: [calls create_order]
"Order confirmed! Tracking: TRK-8392751046"
```
### Claiming a Promo with Pickup (NEW in v1.6.0)
```
You: "Any free promos I can grab?"
Claude: [calls search_listings with category: promotional]
"There's a free VR Experience Card available!
You can pick it up at Quaker Bridge Mall."
You: "I'll take it"
Claude: [calls claim_promo with fulfillmentChoice: pickup]
"Claimed! Here's your pickup info:
๐ Quaker Bridge Mall, Lawrenceville NJ
๐ Mon-Sat 10am-9pm
๐๏ธ Claim ID: CLM-MMB1ZW3W-W98I
Show your claim ID at the VR kiosk near the food court."
```
> **Tip:** For production use, set your real wallet key via `W3SHIP_PUBLIC_KEY` in your MCP config. See [Getting Your Public Key](#getting-your-public-key) above.
---
## ๐ฐ Press
- **TechBullion**: [How W3Ship Works: The MCP Server That Turns Any AI Into a Merchant](https://techbullion.com/how-w3ship-works-the-mcp-server-that-turns-any-ai-into-a-merchant/)
- **Digital Journal**: [Quantum-Resistant Commerce Token Launches via Uniswap CCA on Unichain](https://www.digitaljournal.com/pr/news/vehement-media/quantum-resistant-commerce-token-launches-via-1883892375.html)
- Syndicated across **500+ outlets** โ [full coverage โ](https://w3ship.com/press)
---
## ๐ Links
- **Website**: [w3ship.com](https://w3ship.com)
- **Press**: [w3ship.com/press](https://w3ship.com/press)
- **GitHub**: [github.com/baskcart/w3ship](https://github.com/baskcart/w3ship)
- **W3SH Token**: [Uniswap CCA Auction](https://app.uniswap.org)
---
## ๐ License
MIT โ see [LICENSE](./LICENSE)
TDQS
Scored across 22 tools
Most tools have distinct purposes, but there is some overlap in the commerce flow (e.g., create_cart, add_item, get_cart, delete_cart are clearly related but could be confused for similar operations). The Uniswap tools (check_token_approval, get_swap_quote) are distinct from marketplace tools, but within domains, boundaries are generally clear with descriptions aiding differentiation.
Tool names follow a consistent verb_noun pattern throughout (e.g., add_item, create_cart, get_listing, remove_listing), with only minor deviations like 'ship_address' (which could be 'get_ship_address' for full consistency). The naming is predictable and readable across all tools.
With 22 tools, the count is borderline high for a server covering commerce, marketplace, bookings, and Uniswap integration. It feels slightly heavy, as some tools might be consolidated (e.g., cart operations), but it's not extreme and remains manageable given the broad scope.
The server covers multiple domains well: commerce (cart CRUD, order creation, payment), marketplace (listing CRUD, search), bookings (slots, bookings), and Uniswap (approval, quotes). Minor gaps exist, such as no tool for updating listings or canceling bookings, but core workflows are supported and agents can work around these omissions.