Botsket MCP
An MCP server that indexes independent US online stores and provides tools for AI shopping agents to search products, retrieve live offers, and determine if a store's checkout process is accessible to automated agents.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://botsket.com/mcpWhat you can do with it
- Search for products across indexed independent US stores
- Retrieve live price and stock information for specific offers
- Check if a store's checkout process allows automated agent purchases
Source and maintenance
Protocol and capabilities
- Server
- botsket 0.1.0
- MCP protocol
- 2025-06-18
- Tools
- 3 advertised
- Resources
- 0 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
search_products — Search products
Search products across independent US stores. At most three offers per store.
{
"type": "object",
"title": "search_productsArguments",
"required": [
"query"
],
"properties": {
"sort": {
"enum": [
"relevance",
"price"
],
"type": "string",
"title": "Sort",
"default": "relevance"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"title": "Query",
"description": "What to look for, e.g. 'beeswax tealight wicks'"
},
"max_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Max Price",
"default": null,
"description": "Highest price in USD"
},
"min_price": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Min Price",
"default": null,
"description": "Lowest price in USD"
},
"in_stock_only": {
"type": "boolean",
"title": "In Stock Only",
"default": true
},
"agent_checkout": {
"enum": [
"any",
"not_blocked",
"clean"
],
"type": "string",
"title": "Agent Checkout",
"default": "any",
"description": "'not_blocked' drops stores where our test agent could not reach the card form; 'clean' keeps only stores where it went through cleanly"
}
}
}{
"type": "object",
"$defs": {
"Offer": {
"type": "object",
"title": "Offer",
"required": [
"id",
"name",
"price",
"currency",
"in_stock",
"url",
"categories",
"store",
"price_checked_at"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"description": "Pass to get_offer: store domain / product id"
},
"sku": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sku",
"default": null
},
"url": {
"type": "string",
"title": "Url",
"description": "The product page at the store"
},
"live": {
"type": "boolean",
"title": "Live",
"default": false,
"description": "True when the price was re-checked for this call"
},
"name": {
"type": "string",
"title": "Name"
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand",
"default": null
},
"image": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Image",
"default": null
},
"price": {
"type": "number",
"title": "Price",
"description": "Lowest price an agent can pay, USD"
},
"store": {
"$ref": "#/$defs/StoreRef"
},
"currency": {
"type": "string",
"title": "Currency"
},
"in_stock": {
"type": "boolean",
"title": "In Stock"
},
"price_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Price Max",
"default": null,
"description": "Highest variant price, when it differs"
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"title": "Categories"
},
"price_checked_at": {
"type": "string",
"title": "Price Checked At",
"description": "When the price came from the store (UTC)"
},
"matched_all_words": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Matched All Words",
"default": null,
"description": "In search results: false when the offer matches only some query words"
}
}
},
"StoreRef": {
"type": "object",
"title": "StoreRef",
"required": [
"domain",
"name",
"agent_checkout",
"page"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"page": {
"type": "string",
"title": "Page",
"description": "Botsket page about this store"
},
"domain": {
"type": "string",
"title": "Domain"
},
"agent_checkout": {
"type": "string",
"title": "Agent Checkout"
}
}
}
},
"title": "SearchResult",
"required": [
"query",
"count",
"offers"
],
"properties": {
"count": {
"type": "integer",
"title": "Count"
},
"query": {
"type": "string",
"title": "Query"
},
"offers": {
"type": "array",
"items": {
"$ref": "#/$defs/Offer"
},
"title": "Offers"
}
}
}{
"title": "Search products",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}get_offer — Re-check an offer
Re-check one offer's price and stock with the store right now, and return it.
{
"type": "object",
"title": "get_offerArguments",
"required": [
"offer_id"
],
"properties": {
"offer_id": {
"type": "string",
"title": "Offer Id",
"description": "The id from search_products, e.g. 'candlewic.com/10001660'"
}
}
}{
"type": "object",
"$defs": {
"StoreRef": {
"type": "object",
"title": "StoreRef",
"required": [
"domain",
"name",
"agent_checkout",
"page"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"page": {
"type": "string",
"title": "Page",
"description": "Botsket page about this store"
},
"domain": {
"type": "string",
"title": "Domain"
},
"agent_checkout": {
"type": "string",
"title": "Agent Checkout"
}
}
}
},
"title": "Offer",
"required": [
"id",
"name",
"price",
"currency",
"in_stock",
"url",
"categories",
"store",
"price_checked_at"
],
"properties": {
"id": {
"type": "string",
"title": "Id",
"description": "Pass to get_offer: store domain / product id"
},
"sku": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Sku",
"default": null
},
"url": {
"type": "string",
"title": "Url",
"description": "The product page at the store"
},
"live": {
"type": "boolean",
"title": "Live",
"default": false,
"description": "True when the price was re-checked for this call"
},
"name": {
"type": "string",
"title": "Name"
},
"brand": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Brand",
"default": null
},
"image": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Image",
"default": null
},
"price": {
"type": "number",
"title": "Price",
"description": "Lowest price an agent can pay, USD"
},
"store": {
"$ref": "#/$defs/StoreRef"
},
"currency": {
"type": "string",
"title": "Currency"
},
"in_stock": {
"type": "boolean",
"title": "In Stock"
},
"price_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Price Max",
"default": null,
"description": "Highest variant price, when it differs"
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"title": "Categories"
},
"price_checked_at": {
"type": "string",
"title": "Price Checked At",
"description": "When the price came from the store (UTC)"
},
"matched_all_words": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "Matched All Words",
"default": null,
"description": "In search results: false when the offer matches only some query words"
}
}
}{
"title": "Re-check an offer",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}get_store — Look up a store
What Botsket knows about a store, including whether an AI agent can check out there.
{
"type": "object",
"title": "get_storeArguments",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"title": "Domain",
"description": "Store domain, e.g. 'candlewic.com'"
}
}
}{
"type": "object",
"title": "StoreInfo",
"required": [
"domain",
"name",
"url",
"products",
"agent_checkout",
"agent_checkout_meaning",
"agent_checkout_note",
"agent_checkout_tested_at",
"blocks_agents",
"catalog_crawled_at",
"page"
],
"properties": {
"url": {
"type": "string",
"title": "Url"
},
"name": {
"type": "string",
"title": "Name"
},
"page": {
"type": "string",
"title": "Page"
},
"domain": {
"type": "string",
"title": "Domain"
},
"products": {
"type": "integer",
"title": "Products"
},
"blocks_agents": {
"type": "array",
"items": {
"type": "string"
},
"title": "Blocks Agents",
"description": "Shopping agents the store turns away"
},
"agent_checkout": {
"type": "string",
"title": "Agent Checkout"
},
"catalog_crawled_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Catalog Crawled At"
},
"agent_checkout_note": {
"type": "string",
"title": "Agent Checkout Note"
},
"agent_checkout_meaning": {
"type": "string",
"title": "Agent Checkout Meaning"
},
"agent_checkout_tested_at": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Agent Checkout Tested At"
}
}
}{
"title": "Look up a store",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}Prompts
0 advertised
Resources
0 advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1062 ms
- 95th percentile latency
- 1062 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1062 ms · metadata changed · 3 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http botsket-mcp https://botsket.com/mcpCodex
codex mcp add botsket-mcp --url https://botsket.com/mcpCursor
{
"mcpServers": {
"botsket-mcp": {
"url": "https://botsket.com/mcp"
}
}
}Cline
{
"mcpServers": {
"botsket-mcp": {
"type": "streamableHttp",
"url": "https://botsket.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"botsket-mcp": {
"type": "http",
"url": "https://botsket.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http botsket-mcp https://botsket.com/mcpClaude Desktop
{
"mcpServers": {
"botsket-mcp": {
"url": "https://botsket.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"botsket-mcp": {
"serverUrl": "https://botsket.com/mcp"
}
}
}Let your agent find its tools
Find servers like Botsket MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other commerce servers
Do you run Botsket MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.