ClearList MCP Server

AI agent interface to ClearList, an AI resale manager. Any MCP-compatible agent (Claude, ChatGPT, Gemini, Manus, custom agents) can create listings, publish sale pages, and manage reservations โ all through the same API routes the web UI uses.
Users never need to visit clearlist.me. The agent handles account creation, photo processing, listing generation, and publishing entirely through conversation.
Quick Start
cd mcp-server
npm install
npm run build
CLI
The package also ships a clearlist command-line tool for scripting seller
actions directly against the REST API โ no MCP host required:
npm install -g @clearlist/mcp-server
clearlist login you@example.com
clearlist verify you@example.com 123456
clearlist items
clearlist publish --city "Austin"
clearlist reservations
clearlist reply <conversationId> "Yes, still available"
clearlist picked-up <itemId>
clearlist status
Every command prints JSON (pipe to jq for scripting). CLEARLIST_API_KEY
overrides the stored key; CLEARLIST_API_URL overrides the default
https://clearlist.me. Run clearlist help for the full reference.
MCP Apps (interactive UI)
get_listings, publish_page, and get_reservations declare an
MCP Apps view
(ui://clearlist/app.html) via _meta.ui.resourceUri. Hosts that render MCP
Apps (ChatGPT, Claude.ai) show a listings gallery, a publish success card, or
a reservations summary inline; hosts without UI support ignore the metadata
and get the same JSON as before. View sources live in src/ui/views/ and are
bundled into src/ui/generated-views.ts with npm run build:ui.
Two Ways to Connect
Option A: New user (no account yet)
No API key needed. The agent creates the account through conversation:
{
"mcpServers": {
"clearlist": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"CLEARLIST_API_URL": "https://clearlist.me"
}
}
}
}
The agent uses send_verification_code + verify_code to authenticate. An API key is generated automatically and stored in memory for the session.
Option B: Returning user (has API key)
If the agent already has a key from a previous session:
{
"mcpServers": {
"clearlist": {
"command": "node",
"args": ["/absolute/path/to/mcp-server/dist/index.js"],
"env": {
"CLEARLIST_API_URL": "https://clearlist.me",
"CLEARLIST_API_KEY": "cl_your_api_key_here"
}
}
}
}
All tools work immediately โ no onboarding needed.
How It Works (The Grandma Flow)
Grandma โ ChatGPT: "I'm moving, help me sell my stuff"
ChatGPT: "Sure! What's your email?"
Grandma: "grandma@gmail.com"
[agent calls send_verification_code({ email: "grandma@gmail.com" })]
ChatGPT: "I sent you a 6-digit code. Check your email."
Grandma: "482019"
[agent calls verify_code({ email: "grandma@gmail.com", code: "482019" })]
โ account created, API key returned, all tools unlocked
ChatGPT: "Account created! Now send me photos of everything you want to sell."
Grandma: [sends 20 photos]
[agent calls bulk_create_listings({ photos: [...20 photos] })]
โ AI groups by item, generates listings, researches prices, validates
ChatGPT: "I found 12 items. Here's what I got:
1. IKEA Kallax Shelf โ $45 (Good condition)
2. KitchenAid Mixer โ $120 (Like New)
...
Want me to publish your sale page?"
Grandma: "Yes! I'm in Austin."
[agent calls publish_page({ city: "Austin", state: "TX" })]
ChatGPT: "Done! Your sale page is live at clearlist.me/grandmas-sale
Share this link on Facebook or Nextdoor."
Grandma never visited a website. Never generated an API key. Never created an account manually.
| Tool | Description |
|---|
send_verification_code | Send a 6-digit code to an email address |
verify_code | Verify the code, create account if new, get API key |
| Tool | Description |
|---|
create_listing | Send 1-5 photos โ AI generates listing โ saves to account |
bulk_create_listings | Send up to 50 photos โ AI groups, generates, prices, QA-checks โ saves all |
edit_listing | Update any field on a listing |
delete_listing | Permanently remove a listing |
publish_page | Publish sale page with city, get shareable URL |
unpublish_page | Take sale page offline |
get_listings | List all items with status, price, queue count |
get_reservations | See buyer reservations, messages, timer status |
get_conversation | Get full message thread with a specific buyer |
reply_to_buyer | Send message to a buyer |
mark_picked_up | Mark item as sold |
confirm_pickup | Confirm a scheduled pickup |
get_page_stats | Page views, item count, reservation stats |
prepare_crosspost | Generate cross-posting content for Craigslist/Facebook |
set_availability | Configure pickup scheduling windows |
get_profile | Get account profile and tier info |
check_tier_status | Check subscription tier and limits |
generate_payment_link | Generate Stripe payment link for upgrades |
| Tool | Description |
|---|
search_items | Search items across all sales by keyword, city, category, price |
get_sales_near | Find active sales near a location |
get_city_sales | Browse all sales in a city |
Architecture
User (via any AI agent)
โ
โผ
Agent (ChatGPT, Claude, Gemini, Manus, etc.)
โ
โผ
ClearList MCP Server (this package)
โ stdio transport
โ
โผ
ClearList API Routes (/api/*)
โ HTTP + X-ClearList-API-Key header
โ
โผ
Firebase (Firestore, Auth, Storage) + Gemini AI
The MCP server is a thin protocol adapter. Zero business logic โ everything lives in the API routes.
Authentication Flow
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Agent starts (no API key) โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ send_verification_code โ
โ POST /api/auth/send-code โ
โ { email: "user@email.com" } โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ โ email sent with 6-digit code
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ verify_code โ
โ POST /api/auth/verify-code โ
โ { email, code, agent: true } โ
โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโ
โ โ creates account + returns API key
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ API key stored in memory โ
โ All subsequent calls use it โ
โ X-ClearList-API-Key: cl_xxx โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Development
npm run type-check
npm run build
CLEARLIST_API_URL=http://localhost:3000 npm run dev