Forage Shopping
AI shopping comparison — search 50M+ products, compare prices, find deals
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": {
"forage-shopping": {
"url": "https://forageshopping.com/mcp"
}
}
}Remote endpoints
https://forageshopping.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (7)
🟢search_products(query, max_results, session_id)
Search for products across merchants and return comparison results. Returns structured product listings with prices, merchants, and checkout links. Searches Shopify's global catalogue (50M+ products across all Shopify merchants) and Channel3's affiliate network. Results include direct checkout links.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "What to search for, e.g. 'running shoes under £120'",
"title": "Query",
"type": "string"
},
"max_results": {
"default": 10,
"description": "Maximum number of results to return",
"title": "Max Results",
"type": "integer"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional session identifier to link tool calls in one conversation. Pass a stable string (e.g. conversation ID) across multiple tool calls.",
"title": "Session Id"
}
},
"required": [
"query"
],
"title": "search_productsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "search_productsOutput"
}⚪compare_prices(product_name, session_id)
Compare prices for a specific product across multiple merchants. Finds the same product at different retailers and shows price differences.
Input Schema
{
"type": "object",
"properties": {
"product_name": {
"description": "Specific product to compare prices for, e.g. 'Nike Pegasus 41'",
"title": "Product Name",
"type": "string"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional session identifier to link tool calls in one conversation.",
"title": "Session Id"
}
},
"required": [
"product_name"
],
"title": "compare_pricesArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "compare_pricesOutput"
}🟢find_deals(category, budget, session_id)
Find the best current deals in a product category. Searches for discounted, on-sale, or best-value products.
Input Schema
{
"type": "object",
"properties": {
"category": {
"description": "Product category, e.g. 'headphones', 'running shoes', 'coffee machines'",
"title": "Category",
"type": "string"
},
"budget": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional budget limit, e.g. '£100', '$50'",
"title": "Budget"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional session identifier to link tool calls in one conversation.",
"title": "Session Id"
}
},
"required": [
"category"
],
"title": "find_dealsArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "find_dealsOutput"
}🟢start_checkout(product_url, quantity, session_id)
Start a UCP checkout session for a product. Discovers the merchant's UCP capabilities, creates a checkout session, and attaches content attribution data from the current session's search and comparison activity. Returns the checkout status and any information the merchant still needs (email, shipping address, etc).
Input Schema
{
"type": "object",
"properties": {
"product_url": {
"description": "URL of the product to purchase. The merchant's domain is used for UCP discovery.",
"title": "Product Url",
"type": "string"
},
"quantity": {
"default": 1,
"description": "Number of items to purchase",
"title": "Quantity",
"type": "integer"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Session identifier to link checkout with earlier search telemetry.",
"title": "Session Id"
}
},
"required": [
"product_url"
],
"title": "start_checkoutArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "start_checkoutOutput"
}🟡update_checkout_info(checkout_id, buyer_email, buyer_name, shipping_address, discount_code)
Update a checkout session with buyer information. Provide the information the merchant requested (email, name, shipping address, discount codes). Call this after start_checkout when the merchant indicates what information is still needed. If the response has status 'requires_escalation', share the continue_url with the user so they can complete payment in their browser.
Input Schema
{
"type": "object",
"properties": {
"checkout_id": {
"description": "The checkout session ID from start_checkout",
"title": "Checkout Id",
"type": "string"
},
"buyer_email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Buyer's email address",
"title": "Buyer Email"
},
"buyer_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Buyer's full name",
"title": "Buyer Name"
},
"shipping_address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Shipping address as a single string (the merchant will parse it)",
"title": "Shipping Address"
},
"discount_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Discount or promo code to apply",
"title": "Discount Code"
}
},
"required": [
"checkout_id"
],
"title": "update_checkout_infoArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "update_checkout_infoOutput"
}⚪complete_purchase(checkout_id, session_id)
Complete a checkout and place the order. Only call this when the checkout status is 'ready_for_complete'. Records the purchase as a conversion in telemetry and ends the attribution session. Returns the order confirmation with order ID and receipt link.
Input Schema
{
"type": "object",
"properties": {
"checkout_id": {
"description": "The checkout session ID to complete",
"title": "Checkout Id",
"type": "string"
},
"session_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Session identifier for telemetry. Use the same one from search/checkout.",
"title": "Session Id"
}
},
"required": [
"checkout_id"
],
"title": "complete_purchaseArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "complete_purchaseOutput"
}🟢check_order(checkout_id)
Check the status of a checkout session or order. Use this after the user has completed an escalation step (e.g. payment in the browser) to see if the checkout can now proceed, or to check on a completed order's status.
Input Schema
{
"type": "object",
"properties": {
"checkout_id": {
"description": "The checkout session ID to check",
"title": "Checkout Id",
"type": "string"
}
},
"required": [
"checkout_id"
],
"title": "check_orderArguments"
}Output Schema
{
"type": "object",
"properties": {
"result": {
"title": "Result",
"type": "string"
}
},
"required": [
"result"
],
"title": "check_orderOutput"
}Community
Evidence