forsale.xyz offers
Make price offers on Shopify products; get counters, single-use codes and checkout links.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"offers": {
"url": "https://mcp.forsale.xyz/mcp"
}
}
}Remote endpoints
https://mcp.forsale.xyz/mcpstreamable-httpWhat it can do
Tool inventory
Tools (5)
🟢search_offerable_products(query, storeId, maxPriceCents, limit)
Find products whose sellers accept price offers through forsale.xyz. Returns list prices in cents.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Words to match in the product title",
"type": "string",
"maxLength": 100
},
"storeId": {
"type": "string",
"maxLength": 64
},
"maxPriceCents": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000000
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"products": {
"type": "array",
"items": {
"type": "object",
"properties": {
"storeId": {
"type": "string"
},
"storeName": {
"type": "string"
},
"productId": {
"type": "string"
},
"variantId": {
"type": "string"
},
"title": {
"type": "string"
},
"variantTitle": {
"type": "string"
},
"listPriceCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"storeId",
"storeName",
"productId",
"variantId",
"title",
"variantTitle",
"listPriceCents",
"currency",
"url"
],
"additionalProperties": false
}
}
},
"required": [
"products"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_offer_terms(variantId)
Public offer rules for one product: list price, rounds allowed, and how long offers and codes last.
Input Schema
{
"type": "object",
"properties": {
"variantId": {
"type": "string",
"maxLength": 128
}
},
"required": [
"variantId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"variantId": {
"type": "string"
},
"listPriceCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string"
},
"acceptsOffers": {
"type": "boolean"
},
"maxRounds": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"offerTtlMinutes": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"codeTtlMinutes": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"maxQuantity": {
"type": "number",
"const": 1
},
"howItWorks": {
"type": "string"
}
},
"required": [
"variantId",
"listPriceCents",
"currency",
"acceptsOffers",
"maxRounds",
"offerTtlMinutes",
"codeTtlMinutes",
"maxQuantity",
"howItWorks"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}⚪make_offer(variantId, amountCents)
Offer a price (in cents) for one unit of a product. The seller accepts, counters, or declines. An accepted offer returns a single-use discount code and a checkout link.
Input Schema
{
"type": "object",
"properties": {
"variantId": {
"type": "string",
"maxLength": 128
},
"amountCents": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000000
}
},
"required": [
"variantId",
"amountCents"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"offerId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"countered",
"accepted",
"rejected",
"expired",
"withdrawn"
]
},
"round": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"roundsRemaining": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"yourLastOfferCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"counterCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"message": {
"type": "string"
},
"acceptance": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"finalPriceCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"codeExpiresAt": {
"type": "string"
},
"checkoutUrl": {
"type": "string"
},
"shopPayUrl": {
"type": "string"
}
},
"required": [
"finalPriceCents",
"checkoutUrl",
"shopPayUrl"
],
"additionalProperties": false
}
},
"required": [
"offerId",
"status",
"round",
"roundsRemaining",
"currency",
"expiresAt",
"message"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}⚪respond_to_counter(offerId, action, amountCents)
Answer the seller's counter: accept it, counter with a higher offer (amountCents required), or withdraw.
Input Schema
{
"type": "object",
"properties": {
"offerId": {
"type": "string",
"maxLength": 64
},
"action": {
"type": "string",
"enum": [
"accept",
"counter",
"withdraw"
]
},
"amountCents": {
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 100000000
}
},
"required": [
"offerId",
"action"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"offerId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"countered",
"accepted",
"rejected",
"expired",
"withdrawn"
]
},
"round": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"roundsRemaining": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"yourLastOfferCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"counterCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"message": {
"type": "string"
},
"acceptance": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"finalPriceCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"codeExpiresAt": {
"type": "string"
},
"checkoutUrl": {
"type": "string"
},
"shopPayUrl": {
"type": "string"
}
},
"required": [
"finalPriceCents",
"checkoutUrl",
"shopPayUrl"
],
"additionalProperties": false
}
},
"required": [
"offerId",
"status",
"round",
"roundsRemaining",
"currency",
"expiresAt",
"message"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}🟢get_offer(offerId)
Current state of an offer, including the code and checkout link once accepted.
Input Schema
{
"type": "object",
"properties": {
"offerId": {
"type": "string",
"maxLength": 64
}
},
"required": [
"offerId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"offerId": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"countered",
"accepted",
"rejected",
"expired",
"withdrawn"
]
},
"round": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"roundsRemaining": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"yourLastOfferCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"counterCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"currency": {
"type": "string"
},
"expiresAt": {
"type": "string"
},
"message": {
"type": "string"
},
"acceptance": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"finalPriceCents": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"codeExpiresAt": {
"type": "string"
},
"checkoutUrl": {
"type": "string"
},
"shopPayUrl": {
"type": "string"
}
},
"required": [
"finalPriceCents",
"checkoutUrl",
"shopPayUrl"
],
"additionalProperties": false
}
},
"required": [
"offerId",
"status",
"round",
"roundsRemaining",
"currency",
"expiresAt",
"message"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence