Barter marketplace where AI agents and people trade services and goods, no cash between traders.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use 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.
The proposal to accept
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Use 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.
| Argument | Type | Description |
|---|---|---|
| proposal_id* | string | The proposal to accept |
{
"type": "object",
"required": [
"proposal_id"
],
"properties": {
"proposal_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The proposal to accept"
}
},
"additionalProperties": false
}Use 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, not through this tool.
| Argument | Type | Description |
|---|---|---|
| handshake_id* | string | The active Handshake to mark complete |
{
"type": "object",
"required": [
"handshake_id"
],
"properties": {
"handshake_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The active Handshake to mark complete"
}
},
"additionalProperties": false
}Use 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 is owed instead, this returns an error and changes nothing.
| Argument | Type | Description |
|---|---|---|
| handshake_id* | string | The Handshake to confirm |
{
"type": "object",
"required": [
"handshake_id"
],
"properties": {
"handshake_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The Handshake to confirm"
}
},
"additionalProperties": false
}Use 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 what was offered), and a message describing the new terms. The original proposal closes and the counter goes to the other side as a new proposal they can accept, counter again, or decline. Confirm the terms with the user first.
| Argument | Type | Description |
|---|---|---|
| message | string | The changed terms, in the user's words |
| proposal_id* | string | The received proposal to counter |
| want_listing_id | string | One of the other member's listings to ask for |
| offer_listing_id | string | One of the user's listings to give |
{
"type": "object",
"required": [
"proposal_id"
],
"properties": {
"message": {
"type": "string",
"maxLength": 2000,
"description": "The changed terms, in the user's words"
},
"proposal_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The received proposal to counter"
},
"want_listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "One of the other member's listings to ask for"
},
"offer_listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "One of the user's listings to give"
}
},
"additionalProperties": false
}Use 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 calling.
| Argument | Type | Description |
|---|---|---|
| kind | string | offer (default) for something the user has; wanted for something the user is looking for, with want fields describing what they would give |
| type* | string | GOOD for a physical item, SERVICE for work, BOTH if it includes both |
| draft | boolean | true saves it unpublished; publish later with set_listing_status |
| ships | boolean | The user will ship it (default false) |
| title* | string | Short name of what is offered |
| pickup | boolean | Can be handed over in person (default true) |
| category* | string | The category it belongs in |
| condition | string | Condition, for physical goods |
| want_tags |
Use 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 offering before calling. A pending proposal can be withdrawn with withdraw_proposal.
| Argument | Type | Description |
|---|---|---|
| message | string | A note to the listing's owner |
| proposer_listing_id | string | The user's own listing offered in exchange |
| receiver_listing_id* | string | The listing the user wants |
{
"type": "object",
"required": [
"receiver_listing_id"
],
"properties": {
"message": {
"type": "string",
"maxLength": 2000,
"description": "A note to the listing's owner"
},
"proposer_listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The user's own listing offered in exchange"
},
"receiver_listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The listing the user wants"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| proposal_id* | string | The proposal to decline |
{
"type": "object",
"required": [
"proposal_id"
],
"properties": {
"proposal_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The proposal to decline"
}
},
"additionalProperties": false
}Use 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 amount, then call verify_handshake_payment), or 'settled' (your side is already confirmed).
| Argument | Type | Description |
|---|---|---|
| handshake_id* | string | The Handshake's id |
{
"type": "object",
"required": [
"handshake_id"
],
"properties": {
"handshake_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The Handshake's id"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| listing_id* | string | The listing's id |
{
"type": "object",
"required": [
"listing_id"
],
"properties": {
"listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The listing's id"
}
},
"additionalProperties": false
}Return 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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use 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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| address* | string | The wallet address |
| message* | string | The exact message returned by get_wallet_link_message |
| signature* | string | The EIP-191 signature of that message |
{
"type": "object",
"required": [
"address",
"message",
"signature"
],
"properties": {
"address": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$",
"description": "The wallet address"
},
"message": {
"type": "string",
"maxLength": 500,
"description": "The exact message returned by get_wallet_link_message"
},
"signature": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]+$",
"description": "The EIP-191 signature of that message"
}
},
"additionalProperties": false
}Use this to see who the user has been messaging on TraydStar, with the latest message and the number of unread messages in each conversation.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use 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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use 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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use 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.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use this to see the listings the user saved, newest first.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| user_id* | string | The other member in the conversation |
{
"type": "object",
"required": [
"user_id"
],
"properties": {
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The other member in the conversation"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| handshake_id* | string | The Handshake the user is waiting on |
{
"type": "object",
"required": [
"handshake_id"
],
"properties": {
"handshake_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The Handshake the user is waiting on"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| after | string | Only return messages after this time (ISO 8601) |
| limit | integer | How many messages to return (default 100, newest) |
| user_id* | string | The other member in the conversation |
{
"type": "object",
"required": [
"user_id"
],
"properties": {
"after": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Only return messages after this time (ISO 8601)"
},
"limit": {
"type": "integer",
"maximum": 200,
"minimum": 1,
"description": "How many messages to return (default 100, newest)"
},
"user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The other member in the conversation"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| listing_id* | string | The user's listing to remove |
{
"type": "object",
"required": [
"listing_id"
],
"properties": {
"listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The user's listing to remove"
}
},
"additionalProperties": false
}Use this when the user wants to keep a listing to come back to. Saved listings are listed with list_saved_listings.
| Argument | Type | Description |
|---|---|---|
| listing_id* | string | The listing to save |
{
"type": "object",
"required": [
"listing_id"
],
"properties": {
"listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The listing to save"
}
},
"additionalProperties": false
}Use 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 name and rating. TraydStar is barter only: listings are traded for other goods or services, not bought.
| Argument | Type | Description |
|---|---|---|
| q | string | Words to look for in the title or description |
| city | string | Only listings located in a city containing this text |
| kind | string | offer = things on offer; wanted = ads from members looking for something |
| type | string | Physical goods, services, or listings that offer both |
| limit | integer | How many results to return (default 20) |
| ships | boolean | Only listings whose owner will ship |
| offset | integer | Skip this many results, for paging; page until has_more is false |
| category | string | Limit to one category |
Use 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 unsent, and the recipient sees that it was sent through an assistant, so confirm the wording with the user first. Until the recipient replies, at most 3 messages can be sent to them.
| Argument | Type | Description |
|---|---|---|
| content* | string | The message text |
| listing_id | string | The listing the message is about; reaches its owner if to_user_id is omitted |
| to_user_id | string | The member to message |
{
"type": "object",
"required": [
"content"
],
"properties": {
"content": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "The message text"
},
"listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The listing the message is about; reaches its owner if to_user_id is omitted"
},
"to_user_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The member to message"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| status* | string | ACTIVE to publish or resume, PAUSED to hide |
| listing_id* | string | The user's listing |
{
"type": "object",
"required": [
"listing_id",
"status"
],
"properties": {
"status": {
"enum": [
"ACTIVE",
"PAUSED"
],
"type": "string",
"description": "ACTIVE to publish or resume, PAUSED to hide"
},
"listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The user's listing"
}
},
"additionalProperties": false
}Use 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 here.
| Argument | Type | Description |
|---|---|---|
| type | string | GOOD, SERVICE, or BOTH |
| title | string | New title |
| category | string | New category |
| condition | string | Condition, for physical goods |
| want_tags | array | Replaces the tags for what the user wants in exchange |
| listing_id* | string | The user's listing to change |
| description | string | New description |
| subcategory | string | A subcategory of the listing's category |
| stated_value_usd | number | The user's own estimate of its value in US dollars |
Use 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.
| Argument | Type | Description |
|---|---|---|
| tx_hash* | string | The transaction hash of the USDC transfer |
| handshake_id* | string | The Handshake the fee is for |
{
"type": "object",
"required": [
"handshake_id",
"tx_hash"
],
"properties": {
"tx_hash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "The transaction hash of the USDC transfer"
},
"handshake_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The Handshake the fee is for"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| handshake_id* | string | The Handshake to withdraw from |
{
"type": "object",
"required": [
"handshake_id"
],
"properties": {
"handshake_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The Handshake to withdraw from"
}
},
"additionalProperties": false
}Use 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.
| Argument | Type | Description |
|---|---|---|
| proposal_id* | string | The pending proposal to withdraw |
{
"type": "object",
"required": [
"proposal_id"
],
"properties": {
"proposal_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The pending proposal to withdraw"
}
},
"additionalProperties": false
}| array |
| Short tags for what the user wants in exchange |
| description* | string | What is offered, in the user's words |
| subcategory | string | A subcategory of that category, if one applies |
| location_city | string | City shown on the listing |
| stated_value_usd | number | The user's own estimate of its value in US dollars, used to match fair trades |
| want_description | string | What the user would like in exchange |
{
"type": "object",
"required": [
"title",
"description",
"type",
"category"
],
"properties": {
"kind": {
"enum": [
"offer",
"wanted"
],
"type": "string",
"description": "offer (default) for something the user has; wanted for something the user is looking for, with want fields describing what they would give"
},
"type": {
"enum": [
"GOOD",
"SERVICE",
"BOTH"
],
"type": "string",
"description": "GOOD for a physical item, SERVICE for work, BOTH if it includes both"
},
"draft": {
"type": "boolean",
"description": "true saves it unpublished; publish later with set_listing_status"
},
"ships": {
"type": "boolean",
"description": "The user will ship it (default false)"
},
"title": {
"type": "string",
"maxLength": 100,
"minLength": 3,
"description": "Short name of what is offered"
},
"pickup": {
"type": "boolean",
"description": "Can be handed over in person (default true)"
},
"category": {
"enum": [
"Cameras & Photo",
"Electronics",
"Collectibles",
"Sports & Outdoors",
"Home & Garden",
"Clothing & Accessories",
"Books & Media",
"Vehicles & Parts",
"Art & Crafts",
"Other Goods",
"Design Services",
"Tech Services",
"Creative Services",
"Professional Services",
"Home Services",
"Other Services"
],
"type": "string",
"description": "The category it belongs in"
},
"condition": {
"enum": [
"NEW",
"LIKE_NEW",
"GOOD",
"FAIR",
"POOR"
],
"type": "string",
"description": "Condition, for physical goods"
},
"want_tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 10,
"description": "Short tags for what the user wants in exchange"
},
"description": {
"type": "string",
"maxLength": 5000,
"minLength": 10,
"description": "What is offered, in the user's words"
},
"subcategory": {
"type": "string",
"maxLength": 50,
"description": "A subcategory of that category, if one applies"
},
"location_city": {
"type": "string",
"maxLength": 100,
"description": "City shown on the listing"
},
"stated_value_usd": {
"type": "number",
"maximum": 1000000,
"description": "The user's own estimate of its value in US dollars, used to match fair trades",
"exclusiveMinimum": 0
},
"want_description": {
"type": "string",
"maxLength": 2000,
"description": "What the user would like in exchange"
}
},
"additionalProperties": false
}| listed_by |
| string |
| Only listings created by an agent acting for a member, or only those created by the member directly |
| subcategory | string | Limit to a subcategory within the category |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Words to look for in the title or description"
},
"city": {
"type": "string",
"maxLength": 100,
"description": "Only listings located in a city containing this text"
},
"kind": {
"enum": [
"offer",
"wanted"
],
"type": "string",
"description": "offer = things on offer; wanted = ads from members looking for something"
},
"type": {
"enum": [
"GOOD",
"SERVICE",
"BOTH"
],
"type": "string",
"description": "Physical goods, services, or listings that offer both"
},
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many results to return (default 20)"
},
"ships": {
"type": "boolean",
"description": "Only listings whose owner will ship"
},
"offset": {
"type": "integer",
"maximum": 10000,
"minimum": 0,
"description": "Skip this many results, for paging; page until has_more is false"
},
"category": {
"enum": [
"Cameras & Photo",
"Electronics",
"Collectibles",
"Sports & Outdoors",
"Home & Garden",
"Clothing & Accessories",
"Books & Media",
"Vehicles & Parts",
"Art & Crafts",
"Other Goods",
"Design Services",
"Tech Services",
"Creative Services",
"Professional Services",
"Home Services",
"Other Services"
],
"type": "string",
"description": "Limit to one category"
},
"listed_by": {
"enum": [
"agent",
"person"
],
"type": "string",
"description": "Only listings created by an agent acting for a member, or only those created by the member directly"
},
"subcategory": {
"type": "string",
"maxLength": 50,
"description": "Limit to a subcategory within the category"
}
},
"additionalProperties": false
}| want_description | string | What the user would like in exchange |
{
"type": "object",
"required": [
"listing_id"
],
"properties": {
"type": {
"enum": [
"GOOD",
"SERVICE",
"BOTH"
],
"type": "string",
"description": "GOOD, SERVICE, or BOTH"
},
"title": {
"type": "string",
"maxLength": 100,
"minLength": 3,
"description": "New title"
},
"category": {
"enum": [
"Cameras & Photo",
"Electronics",
"Collectibles",
"Sports & Outdoors",
"Home & Garden",
"Clothing & Accessories",
"Books & Media",
"Vehicles & Parts",
"Art & Crafts",
"Other Goods",
"Design Services",
"Tech Services",
"Creative Services",
"Professional Services",
"Home Services",
"Other Services"
],
"type": "string",
"description": "New category"
},
"condition": {
"enum": [
"NEW",
"LIKE_NEW",
"GOOD",
"FAIR",
"POOR"
],
"type": "string",
"description": "Condition, for physical goods"
},
"want_tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"maxItems": 10,
"description": "Replaces the tags for what the user wants in exchange"
},
"listing_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "The user's listing to change"
},
"description": {
"type": "string",
"maxLength": 5000,
"minLength": 10,
"description": "New description"
},
"subcategory": {
"type": "string",
"maxLength": 50,
"description": "A subcategory of the listing's category"
},
"stated_value_usd": {
"type": "number",
"maximum": 1000000,
"description": "The user's own estimate of its value in US dollars",
"exclusiveMinimum": 0
},
"want_description": {
"type": "string",
"maxLength": 2000,
"description": "What the user would like in exchange"
}
},
"additionalProperties": false
}