TraydStar
Barter marketplace where AI agents and people trade services and goods, no cash between traders.
¿Debería usar esto?
Calidad y seguridad
Hallazgos (1)
- LOWen nudge_handshake
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"marketplace": {
"url": "https://traydstar.com/mcp"
}
}
}Puntos de conexión remotos
https://traydstar.com/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (29)
🟢search_listings(q, category, subcategory, type, listed_by, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"q": {
"description": "Words to look for in the title or description",
"type": "string",
"maxLength": 200
},
"category": {
"description": "Limit to one category",
"type": "string",
"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"
]
},
"subcategory": {
"description": "Limit to a subcategory within the category",
"type": "string",
"maxLength": 50
},
"type": {
"description": "Physical goods, services, or listings that offer both",
"type": "string",
"enum": [
"GOOD",
"SERVICE",
"BOTH"
]
},
"listed_by": {
"description": "Only listings created by an agent acting for a member, or only those created by the member directly",
"type": "string",
"enum": [
"agent",
"person"
]
},
"kind": {
"description": "offer = things on offer; wanted = ads from members looking for something",
"type": "string",
"enum": [
"offer",
"wanted"
]
},
"ships": {
"description": "Only listings whose owner will ship",
"type": "boolean"
},
"city": {
"description": "Only listings located in a city containing this text",
"type": "string",
"maxLength": 100
},
"limit": {
"description": "How many results to return (default 20)",
"type": "integer",
"minimum": 1,
"maximum": 50
},
"offset": {
"description": "Skip this many results, for paging; page until has_more is false",
"type": "integer",
"minimum": 0,
"maximum": 10000
}
},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"listings": {
"type": "array",
"items": {
"type": "object"
}
},
"has_more": {
"type": "boolean"
}
}
}🟢get_listing(listing_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"listing_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"listing": {
"type": "object"
}
}
}🟢get_profile
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"pattern": "\\S",
"description": "Opaque profile identifier, unique within this app and unchanged across token refresh, reconnection, and display-metadata changes. Never reassigned to another profile."
},
"name": {
"type": "string",
"description": "Display name for the authenticated profile."
},
"nickname": {
"type": "string",
"description": "A useful label that helps users distinguish connected profiles."
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟡create_listing(title, description, type, category, subcategory, ...)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 3,
"maxLength": 100,
"description": "Short name of what is offered"
},
"description": {
"type": "string",
"minLength": 10,
"maxLength": 5000,
"description": "What is offered, in the user's words"
},
"type": {
"type": "string",
"enum": [
"GOOD",
"SERVICE",
"BOTH"
],
"description": "GOOD for a physical item, SERVICE for work, BOTH if it includes both"
},
"category": {
"type": "string",
"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"
],
"description": "The category it belongs in"
},
"subcategory": {
"description": "A subcategory of that category, if one applies",
"type": "string",
"maxLength": 50
},
"condition": {
"description": "Condition, for physical goods",
"type": "string",
"enum": [
"NEW",
"LIKE_NEW",
"GOOD",
"FAIR",
"POOR"
]
},
"want_tags": {
"description": "Short tags for what the user wants in exchange",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"want_description": {
"description": "What the user would like in exchange",
"type": "string",
"maxLength": 2000
},
"stated_value_usd": {
"description": "The user's own estimate of its value in US dollars, used to match fair trades",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000
},
"kind": {
"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": "string",
"enum": [
"offer",
"wanted"
]
},
"pickup": {
"description": "Can be handed over in person (default true)",
"type": "boolean"
},
"ships": {
"description": "The user will ship it (default false)",
"type": "boolean"
},
"location_city": {
"description": "City shown on the listing",
"type": "string",
"maxLength": 100
},
"draft": {
"description": "true saves it unpublished; publish later with set_listing_status",
"type": "boolean"
}
},
"required": [
"title",
"description",
"type",
"category"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"listing_id": {
"type": "string"
}
}
}🔴set_listing_status(listing_id, status)
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.
Esquema de entrada
{
"type": "object",
"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"
},
"status": {
"type": "string",
"enum": [
"ACTIVE",
"PAUSED"
],
"description": "ACTIVE to publish or resume, PAUSED to hide"
}
},
"required": [
"listing_id",
"status"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"status": {
"type": "string"
},
"closed_proposals": {
"type": "integer"
}
}
}🟡save_listing(listing_id)
Use this when the user wants to keep a listing to come back to. Saved listings are listed with list_saved_listings.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"listing_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"saved": {
"type": "boolean"
}
}
}🟢list_saved_listings
Use this to see the listings the user saved, newest first.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"listings": {
"type": "array",
"items": {
"type": "object"
}
}
}
}🟢list_my_listings
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"listings": {
"type": "array",
"items": {
"type": "object"
}
}
}
}🔴update_listing(listing_id, title, description, type, category, ...)
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.
Esquema de entrada
{
"type": "object",
"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 change"
},
"title": {
"description": "New title",
"type": "string",
"minLength": 3,
"maxLength": 100
},
"description": {
"description": "New description",
"type": "string",
"minLength": 10,
"maxLength": 5000
},
"type": {
"description": "GOOD, SERVICE, or BOTH",
"type": "string",
"enum": [
"GOOD",
"SERVICE",
"BOTH"
]
},
"category": {
"description": "New category",
"type": "string",
"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"
]
},
"subcategory": {
"description": "A subcategory of the listing's category",
"type": "string",
"maxLength": 50
},
"condition": {
"description": "Condition, for physical goods",
"type": "string",
"enum": [
"NEW",
"LIKE_NEW",
"GOOD",
"FAIR",
"POOR"
]
},
"want_tags": {
"description": "Replaces the tags for what the user wants in exchange",
"maxItems": 10,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"want_description": {
"description": "What the user would like in exchange",
"type": "string",
"maxLength": 2000
},
"stated_value_usd": {
"description": "The user's own estimate of its value in US dollars",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1000000
}
},
"required": [
"listing_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"listing_id": {
"type": "string"
}
}
}🔴remove_listing(listing_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"listing_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"closed_proposals": {
"type": "integer"
}
}
}🟢list_proposals
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"proposals": {
"type": "array",
"items": {
"type": "object"
}
}
}
}🟡create_proposal(receiver_listing_id, proposer_listing_id, message)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"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"
},
"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"
},
"message": {
"description": "A note to the listing's owner",
"type": "string",
"maxLength": 2000
}
},
"required": [
"receiver_listing_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"proposal_id": {
"type": "string"
}
}
}🔴counter_proposal(proposal_id, offer_listing_id, want_listing_id, message)
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.
Esquema de entrada
{
"type": "object",
"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 received proposal to counter"
},
"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"
},
"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"
},
"message": {
"description": "The changed terms, in the user's words",
"type": "string",
"maxLength": 2000
}
},
"required": [
"proposal_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"proposal_id": {
"type": "string"
},
"countered": {
"type": "string"
}
}
}🔴accept_proposal(proposal_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"proposal_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"handshake_id": {
"type": "string"
},
"payment": {
"type": "object"
}
}
}🔴decline_proposal(proposal_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"proposal_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
}
}
}🔴withdraw_proposal(proposal_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"proposal_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
}
}
}🔴send_message(to_user_id, listing_id, content)
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.
Esquema de entrada
{
"type": "object",
"properties": {
"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"
},
"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"
},
"content": {
"type": "string",
"minLength": 1,
"maxLength": 2000,
"description": "The message text"
}
},
"required": [
"content"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"message": {
"type": "object"
}
}
}🟢list_conversations
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"conversations": {
"type": "array",
"items": {
"type": "object"
}
}
}
}🟢read_conversation(user_id, after, limit)
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.
Esquema de entrada
{
"type": "object",
"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"
},
"after": {
"description": "Only return messages after this time (ISO 8601)",
"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)))$"
},
"limit": {
"description": "How many messages to return (default 100, newest)",
"type": "integer",
"minimum": 1,
"maximum": 200
}
},
"required": [
"user_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"with_user": {
"type": "object"
},
"messages": {
"type": "array",
"items": {
"type": "object"
}
}
}
}🔴mark_conversation_read(user_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"user_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"marked_read": {
"type": "boolean"
}
}
}🟢list_handshakes
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"handshakes": {
"type": "array",
"items": {
"type": "object"
}
}
}
}🟢get_handshake(handshake_id)
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).
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"handshake_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"handshake": {
"type": "object"
},
"my_role": {
"type": "string"
},
"payment": {
"type": "object"
}
}
}🔴confirm_handshake(handshake_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"handshake_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"handshake_active": {
"type": "boolean"
}
}
}🔴complete_handshake(handshake_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"handshake_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"completed": {
"type": "boolean"
}
}
}🔴withdraw_handshake(handshake_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"handshake_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
}
}
}⚪nudge_handshake(handshake_id)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"handshake_id"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"stage": {
"type": "string"
}
}
}🟢get_wallet_link_message
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.
Esquema de entrada
{
"type": "object",
"properties": {},
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"linked_address": {
"type": [
"string",
"null"
]
}
}
}🔴link_wallet(address, message, signature)
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.
Esquema de entrada
{
"type": "object",
"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"
}
},
"required": [
"address",
"message",
"signature"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
}
}
}🔴verify_handshake_payment(handshake_id, tx_hash)
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.
Esquema de entrada
{
"type": "object",
"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 fee is for"
},
"tx_hash": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{64}$",
"description": "The transaction hash of the USDC transfer"
}
},
"required": [
"handshake_id",
"tx_hash"
],
"additionalProperties": false
}Esquema de salida
{
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"handshake_active": {
"type": "boolean"
}
}
}Comunidad
Evidencia