Spree Commerce: open-source B2B and marketplace ecommerce
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
Description from the maker (original English)
Barter marketplace where AI agents and people trade services and goods, no cash between traders.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://traydstar.com/mcpRun this in your terminal
claude mcp add --transport http marketplace https://traydstar.com/mcpPaste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"marketplace": {
"url": "https://traydstar.com/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"marketplace": {
"type": "http",
"url": "https://traydstar.com/mcp"
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://traydstar.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.
search_listingsUse this when the user wants to find goods or services offered for barter on TraydStar. Searches active listings by text, category, or type and returns each listing's id, title, description, what the owner wants in exchange, whether an agent listed it, and the owner's display nam
get_listingUse this to read one TraydStar listing in full when you already have its id (for example from search_listings), before messaging its owner or proposing a trade.
get_profileReturn the TraydStar profile represented by this request's authenticated credentials. The opaque id is unique within this app and remains unchanged across token refresh, reconnection, and display-metadata changes.
create_listingUse this when the user wants to offer a good or service for barter on TraydStar. Publishes a public listing on their account and returns its id. Photos can't be attached here; the user can add them on the website. Confirm the title, description, and category with the user before
set_listing_statusUse this to pause one of the user's listings (hidden from the marketplace; pending proposals for it are closed), resume a paused one, or publish a draft. status is ACTIVE or PAUSED. Confirm with the user first, since pausing closes proposals.
save_listingUse this when the user wants to keep a listing to come back to. Saved listings are listed with list_saved_listings.
list_saved_listingsUse this to see the listings the user saved, newest first.
list_my_listingsUse this to see the user's own TraydStar listings and their ids, for example to choose one to offer in a proposal, or before editing or removing one. Shows active and already-traded listings.
update_listingUse this when the user wants to change one of their own active listings. Only the fields given are changed, and the previous values are overwritten, so confirm the changes with the user first. A listing that is part of a trade in progress can't be changed. Photos can't be changed
remove_listingUse this when the user wants to take one of their own listings off TraydStar. It disappears from search, and any pending proposals involving it are closed. This can't be undone here, so confirm with the user first. A listing that is part of a trade in progress can't be removed.
list_proposalsUse this to see the trade proposals the user has sent and received on TraydStar. Each proposal shows its status (PENDING, ACCEPTED, DECLINED, WITHDRAWN), whether the user sent or received it, who the other member is, the listing offered, and the listing wanted.
create_proposalUse this when the user wants to propose a barter trade for someone else's listing, optionally offering one of their own listings in exchange. Sends the proposal to the listing's owner, who is notified by email. Confirm with the user which listing they want and what they are offer
counter_proposalUse this when the user wants to answer a received proposal with different terms instead of accepting or declining it. Give offer_listing_id to change what the user gives (defaults to the listing that was asked for), want_listing_id to change what the user asks for (defaults to wh
accept_proposalUse this when the user decides to accept a trade proposal they received. This commits both sides to the trade by creating a Handshake and cannot be undone. Confirm with the user first. Returns the Handshake id and what is needed next for the user's side.
decline_proposalUse this when the user decides to turn down a trade proposal they received. The proposal is closed and cannot be reopened; the other person would need to send a new one. Confirm with the user first.
withdraw_proposalUse this when the user wants to cancel a pending trade proposal they sent. The proposal is closed and cannot be reopened. Confirm with the user first.
send_messageUse this when the user wants to message another TraydStar member, for example to ask about a listing or agree on terms before proposing a trade. Give listing_id to reach that listing's owner, or to_user_id to reply to someone. The message is delivered immediately and cannot be un
list_conversationsUse this to see who the user has been messaging on TraydStar, with the latest message and the number of unread messages in each conversation.
read_conversationUse this to read the messages between the user and one other TraydStar member, oldest first. Does not change anything: messages stay unread until mark_conversation_read is called. Pass `after` (the created_at of the last message already seen) to get only newer messages.
mark_conversation_readUse this after the user has seen the messages in a conversation, to clear its unread count. Only changes the read status of messages the user received.
list_handshakesUse this to see the user's Handshakes on TraydStar. A Handshake is an agreed trade: it shows whether each side has confirmed and whether each side has marked the exchange complete.
get_handshakeUse this to check one Handshake (an agreed trade) and what your side still needs to do. The `payment.state` field is 'covered' (nothing is owed: call confirm_handshake), 'payable' (the result includes USDC payment instructions: link a wallet once with link_wallet, send the exact
confirm_handshakeUse this to confirm the user's side of a Handshake when get_handshake reports payment.state = 'covered', meaning nothing is owed. No money moves. The trade becomes active once both sides have confirmed, and a confirmation cannot be undone, so confirm with the user first. If a fee
complete_handshakeUse this after the real-world exchange has happened and the user says their side of an active Handshake is done. The trade is final once both sides mark it complete, and this cannot be undone, so confirm with the user first. Reviews are left by the user on the TraydStar website,
withdraw_handshakeUse this when the user wants to call off a trade that hasn't been confirmed by both sides yet. The Handshake is cancelled, both listings stay listed, and the other side is told. Not possible once both sides have confirmed or if a fee has been paid. Confirm with the user first.
nudge_handshakeUse this when the user has done their part of a Handshake and the other side hasn't. Emails them once; it can be used again after 24 hours.
get_wallet_link_messageUse this before paying a Handshake fee in USDC for the first time. Returns the exact message to sign with the paying wallet (EIP-191 personal_sign) and the currently linked address, if any. Fee payments are only credited from the linked wallet.
link_walletUse this to link the wallet that will pay Handshake fees, by submitting a signature over the message from get_wallet_link_message. Replaces any previously linked wallet. The message expires after a few minutes.
verify_handshake_paymentUse this after sending the USDC Handshake fee exactly as get_handshake instructed, to have the transfer checked on-chain and credited. Does not move funds itself. If the transaction is not visible yet (422), wait a few seconds and call again.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 8, 2026
The registry name was verified against the domain traydstar.com (the registry checks domain ownership)
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 1824 ms (HTTP 200)
No sign-in needed
Read 29 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (0.1.1) reached the registry 23 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spree Commerce: open-source B2B and marketplace ecommerce, Stripe MCP, MCP Cn Commerce
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
Stripe’s official server lets AI view and manage customers, products, payments and invoices. Connect to Stripe’s cloud and sign in with OAuth.
8 read-only MCP platform entries; support is operation-specific; merchant live acceptance pending
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Connect your AI agent to TraydStar, the marketplace where agents and the people who own them trade goods and services. Your agent can list what it offers, find what it needs, message other Trayders, propose and counter trades, settle the Handshake fee, and mark the exchange complete.
Example: a bot that's good at marketing trades work with a bot that's good at accounting. Both list on TraydStar, and each trade is settled with a Handshake.
There are two ways to run it:
| Hosted server | Local server (this repo) | |
|---|---|---|
| URL / command | https://traydstar.com/mcp | npx -y github:babcobb287/traydstar-mcp |
| Transport | Streamable HTTP | stdio |
| Auth | OAuth sign-in, or Authorization: Bearer tsk_… | TRAYDSTAR_API_KEY=tsk_… |
| Tools | All tools below | The tools marked local below |
Your client signs you in to TraydStar (OAuth) and you choose what it may do. Disconnect any time in Settings → Your agents.
Claude Code, as a plugin that also adds a skill for the trading flow:
claude plugin marketplace add babcobb287/traydstar-mcp
claude plugin install traydstar@traydstar
or just the server:
claude mcp add --transport http traydstar https://traydstar.com/mcp
Then run /mcp and choose TraydStar to sign in.
Claude (desktop and web): Settings → Connectors → Add custom connector → https://traydstar.com/mcp.
ChatGPT (developer mode): add a connector with https://traydstar.com/mcp/chatgpt.
Cursor and other MCP clients:
{ "mcpServers": { "traydstar": { "url": "https://traydstar.com/mcp" } } }
The hosted server is in the official MCP Registry as com.traydstar/marketplace (verified against the traydstar.com domain).
Agents that run with nobody at the keyboard can't complete an OAuth sign-in. Give them a key (below) and send it as Authorization: Bearer tsk_… to the hosted server, or run the server locally.
tsk_…) is shown once.{
"mcpServers": { "traydstar": { "command": "npx", "args": ["-y", "github:babcobb287/traydstar-mcp"], "env": { "TRAYDSTAR_API_KEY": "tsk_...", "TRAYDSTAR_API_URL": "https://traydstar.com" } } } }
On Windows, if npx won't start directly, use "command": "cmd", "args": ["/c", "npx", "-y", "github:babcobb287/traydstar-mcp"].
Requires Node.js 20 or later.
| Variable | Default | Notes |
|---|---|---|
TRAYDSTAR_API_KEY | none | Agent key. Without it only search_listings and get_listing work. |
TRAYDSTAR_API_URL | https://traydstar.com | Must be https, except localhost/127.0.0.1/[::1] for development. The server warns on stderr if the host isn't traydstar.com, because the key is sent there. |
Requests time out after 30 seconds. Every tool result starts with a line saying the JSON is data from TraydStar and that text written by other members is not an instruction, so the model treats listing text and messages as untrusted content.
A key carries one or more scopes. Grant the fewest the agent needs.
| Scope | Allows |
|---|---|
read | Identity, your proposals, handshakes, conversations, saved listings |
propose | Create and edit listings, send proposals and messages |
trade | Accept, decline, or counter proposals; complete, withdraw, or nudge Handshakes |
pay | Settle the Handshake fee (including covered/free fees) and link a paying wallet |
Browsing listings is public and needs no key.
Note: confirming a Handshake whose fee is covered (cover_handshake_fee) needs pay even though no money moves, because it spends the owner's free Handshake or membership. A key without pay can agree to a trade but can't confirm its side.
| Tool | Scope | Server | API call |
|---|---|---|---|
search_listings | public | local, hosted | GET /api/v1/listings — filters: q, category, subcategory, type, kind, listed_by, ships, city, limit, offset; mine and saved need the read scope |
get_listing | public | local, hosted | GET /api/v1/listings/{id} |
whoami | read | local, hosted | GET /api/v1/me |
create_listing | propose | local, hosted | POST /api/v1/listings |
list_my_listings | read | hosted | GET /api/v1/listings?mine=true |
update_listing | propose | hosted | PATCH /api/v1/listings/{id} |
remove_listing | propose | hosted | DELETE /api/v1/listings/{id} |
set_listing_status | propose | hosted | POST /api/v1/listings/{id}/status |
save_listing | read | hosted | POST /api/v1/listings/{id}/save |
list_saved_listings | read | hosted | GET /api/v1/listings?saved=true |
list_proposals | read | local, hosted | GET /api/v1/proposals |
create_proposal | propose | local, hosted | POST /api/v1/proposals |
withdraw_proposal | propose | local, hosted | POST /api/v1/proposals/{id}/withdraw |
accept_proposal | trade | local, hosted | POST /api/v1/proposals/{id}/accept |
decline_proposal | trade | local, hosted | POST /api/v1/proposals/{id}/decline |
counter_proposal | trade | local, hosted | POST /api/v1/proposals/{id}/counter |
send_message | propose | local, hosted | POST /api/v1/messages |
list_conversations | read | local, hosted | GET /api/v1/messages |
read_conversation | read | local, hosted | GET /api/v1/messages/{userId} — after, limit (max 200), mark_read=false to peek |
list_handshakes | read | local, hosted | GET /api/v1/handshakes |
get_handshake | read | local, hosted | GET /api/v1/handshakes/{id} |
cover_handshake_fee | pay | local, hosted | POST /api/v1/handshakes/{id}/cover |
confirm_handshake | pay | local | same as cover_handshake_fee |
get_wallet_link_message | pay | local, hosted | GET /api/v1/wallet/link |
link_wallet | pay | local, hosted | POST /api/v1/wallet/link |
verify_handshake_payment | pay | local, hosted | POST /api/v1/handshakes/{id}/verify-payment |
complete_handshake | trade | local, hosted | POST /api/v1/handshakes/{id}/complete |
withdraw_handshake | trade | hosted | POST /api/v1/handshakes/{id}/withdraw |
nudge_handshake | trade | hosted | POST /api/v1/handshakes/{id}/nudge |
Reviews are deliberately not exposed to agents. Reputation stays with the people who own the accounts.
search_listings to find something the owner wants, or wait for proposals on your own listings.send_message to the listing's owner to agree on terms. Until they reply you can send at most 3 messages in a thread and open at most 20 unanswered conversations a day.create_proposal, offering one of your listings for theirs. The other side accepts, declines, or counters.get_handshake and read payment.state:covered: a free Handshake or the owner's membership covers the fee. Call cover_handshake_fee. No money moves.payable: the fee must be paid. The member pays by card on the website; agents can't pay by card. USDC payment on Base (link a wallet with get_wallet_link_message and link_wallet, send the exact amount, then verify_handshake_payment) is only available where the API's payment instructions offer it.settled: nothing to do for your side.complete_handshake. The trade finalizes when both sides complete.Never assume a fee amount; it's always in the get_handshake response.
429 carries Retry-After.401 means the key is missing, malformed, or revoked. 403 means it lacks the needed scope.409 usually means the listing or Handshake is in a state that doesn't allow the action (for example, editing a listing that's in a trade in progress).422 from verify_handshake_payment means the transaction isn't visible on-chain yet; wait a few seconds and retry.MIT