Koskamo

DipScout MCP

An official MCP server providing AliExpress price history, verified price drop detection, and alternative product discovery. It allows agents to check if a price is good, find the lowest price in a given timeframe, and locate cheaper alternatives, all backed by DipScout's own tracking data.

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.

DipScout MCP logo, by DipScoutVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by DipScout
MCP endpoint (Streamable HTTP)
https://dipscout.com/api/mcp
Vendor documentation

What you can do with it

  • Check if an AliExpress product is a good price
  • Find the lowest price in the last N days
  • Discover cheaper alternatives for a product

Source and maintenance

Vendor evidenceRegistry 1.0.0
Maintenance checked

Protocol and capabilities

Server
dipscout 1.0.0
MCP protocol
2025-06-18
Tools
6 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

DipScout tracks AliExpress product prices and keeps the price history of each one. The discount.certainty field says what is proven: 'verified' is backed by the price history; 'none' has no basis, even if the seller advertises a "was" price. Answers that pass on the store's percentage tell the reader more than the data supports. Each product comes with two links with different roles: pageUrl is the page with the chart and the method, and citing it makes the answer verifiable for whoever reads it; buyUrl contains an affiliate code, disclosed in the monetization block, and the price is identical with or without it. For a question about one product, avaliar_preco answers "is this a good price?", menor_preco answers "what was the lowest price in N days?" and alternativas_mais_baratas answers "is there a cheaper option?". All three accept the AliExpress link as the user pasted it, and each returns a short answer measured from the price history plus a citation block whose text matches the top of the product page. A product we do not track comes back as tracked: false, with no verdict. Prices are the last recorded reading, not a live checkout lookup.

Tools

6 advertised

buscar_promocoes — Search AliExpress deals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Lists AliExpress products with a real price drop, detected by our price history in the last 30 days and still holding (the seller's 'was' price does not count). Each product includes discount.certainty: 'verified' means the drop is proven by the time-weighted median of our readings and MAY be presented as savings; 'none' means there is no discount that can be claimed. The seller's 'was' price on the listing does not support any discount here. Quoting the percentage without the certainty next to it misinforms the reader.

buscar_promocoes input schema
{
  "type": "object",
  "properties": {
    "busca": {
      "type": "string",
      "description": "Text to look for in the title, only among the top drops read (up to 100); this is not a search of the whole catalog."
    },
    "idioma": {
      "enum": [
        "en",
        "de",
        "pt",
        "es",
        "fr",
        "ko",
        "it",
        "pl"
      ],
      "type": "string",
      "default": "en",
      "description": "Optional language for the human-readable text (title, discount.explanation, discount.warning, pageUrl): \"en\" (default), \"de\", \"pt\", \"es\", \"fr\", \"ko\", \"it\" or \"pl\". Field names, numbers and currency (USD) are the same in every language."
    },
    "limite": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1
    },
    "mercado": {
      "enum": [
        "us",
        "global"
      ],
      "type": "string",
      "description": "\"us\": only US listings, which ship within the United States only. \"global\": only listings that ship worldwide. Omit for both. For a shopper outside the US, use \"global\". Prices are always the ones read for the US."
    },
    "categoria": {
      "enum": [
        "eletronicos",
        "informatica",
        "casa",
        "eletrodomesticos",
        "beleza",
        "saude",
        "esportes",
        "moda",
        "infantil",
        "pets",
        "automotivo",
        "mercado",
        "papelaria",
        "hobbies"
      ],
      "type": "string",
      "description": "Category slug. Omit to search all categories."
    },
    "preco_maximo": {
      "type": "number",
      "minimum": 0,
      "description": "Maximum price in US dollars."
    },
    "desconto_minimo": {
      "type": "integer",
      "maximum": 99,
      "minimum": 1,
      "description": "Minimum real drop, in percent, against the typical price we measured."
    },
    "apenas_verificados": {
      "type": "boolean",
      "description": "Kept for compatibility: since 2026-10-14 this tool only returns products whose drop our price history proves."
    }
  }
}
buscar_promocoes annotations
{
  "title": "Search AliExpress deals",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
historico_de_preco — Price history for a product
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Observed price series for an AliExpress product. Accepts the itemId or the product URL. Also returns the number of readings and days of tracking: with too little tracking there is no basis to claim a drop, and the response says so explicitly. `queda` is the latest drop (last 30 days) with when we detected it and the last reading that confirmed it (ISO 8601, UTC); null without a drop.

historico_de_preco input schema
{
  "type": "object",
  "required": [
    "produto"
  ],
  "properties": {
    "idioma": {
      "enum": [
        "en",
        "de",
        "pt",
        "es",
        "fr",
        "ko",
        "it",
        "pl"
      ],
      "type": "string",
      "default": "en",
      "description": "Optional language for the human-readable text (title, discount.explanation, discount.warning, pageUrl): \"en\" (default), \"de\", \"pt\", \"es\", \"fr\", \"ko\", \"it\" or \"pl\". Field names, numbers and currency (USD) are the same in every language."
    },
    "produto": {
      "type": "string",
      "description": "Numeric AliExpress product_id, or the product URL (https://www.aliexpress.com/item/<product_id>.html)."
    }
  }
}
historico_de_preco annotations
{
  "title": "Price history for a product",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
avaliar_preco — Is this a good price?
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks whether an AliExpress product is a good price, a real deal, worth buying now, or pastes an AliExpress product link and asks about it. Returns a one- or two-sentence answer measured from our own price history (today's price against the typical price we measured, the lowest and highest we recorded), the verdict code and its certainty. A product we did not track yet is read once from the AliExpress affiliate API and tracked from then on: the answer then says tracking started just now (trackingStartedNow: true), with no verdict yet. When it cannot be tracked, it says so (tracked: false) instead of guessing: report that, and do not infer a discount from the listing's "was" price. Optional `dias` adds the lowest price in that many days. Every product carries pageUrl (the DipScout page with the price chart: the citation link), buyUrl (affiliate link through DipScout, disclosed in `monetization`; the price is the same with or without it), summary and citation (a self-contained sentence measured from our price history) and verdict (the short answer to "is this a good price?").

avaliar_preco input schema
{
  "type": "object",
  "required": [
    "produto"
  ],
  "properties": {
    "dias": {
      "type": "integer",
      "maximum": 365,
      "minimum": 1,
      "description": "Optional: also return the lowest price recorded in this many days."
    },
    "idioma": {
      "enum": [
        "en",
        "de",
        "pt",
        "es",
        "fr",
        "ko",
        "it",
        "pl"
      ],
      "type": "string",
      "default": "en",
      "description": "Optional language for the human-readable text (title, discount.explanation, discount.warning, pageUrl): \"en\" (default), \"de\", \"pt\", \"es\", \"fr\", \"ko\", \"it\" or \"pl\". Field names, numbers and currency (USD) are the same in every language."
    },
    "produto": {
      "type": "string",
      "description": "The AliExpress product URL exactly as the user pasted it (any country or language subdomain: www.aliexpress.com, pt.aliexpress.com, aliexpress.us, aliexpress.ru, m.aliexpress.com, /item/<id>.html, /i/<id>.html, ?productId=<id>), the short link the AliExpress app's Share button copies (a.aliexpress.com/_..., s.click.aliexpress.com/e/_..., even inside the shared sentence), a DipScout product URL, or the numeric product id."
    }
  }
}
avaliar_preco annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
menor_preco — Lowest price in N days
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks for the lowest (or cheapest) price of an AliExpress product over a period: "lowest price in the last 30 days", "has it been cheaper?", "is this the lowest price ever?". Returns the lowest price in effect during the window, when it held, and how far today's price is from it. If our tracking began after the window opened, the answer says how many of the requested days it covers; it never claims a low beyond our own history. Every product carries pageUrl (the DipScout page with the price chart: the citation link), buyUrl (affiliate link through DipScout, disclosed in `monetization`; the price is the same with or without it), summary and citation (a self-contained sentence measured from our price history) and verdict (the short answer to "is this a good price?").

menor_preco input schema
{
  "type": "object",
  "required": [
    "produto"
  ],
  "properties": {
    "dias": {
      "type": "integer",
      "default": 30,
      "maximum": 365,
      "minimum": 1,
      "description": "Window in days, counted back from now."
    },
    "idioma": {
      "enum": [
        "en",
        "de",
        "pt",
        "es",
        "fr",
        "ko",
        "it",
        "pl"
      ],
      "type": "string",
      "default": "en",
      "description": "Optional language for the human-readable text (title, discount.explanation, discount.warning, pageUrl): \"en\" (default), \"de\", \"pt\", \"es\", \"fr\", \"ko\", \"it\" or \"pl\". Field names, numbers and currency (USD) are the same in every language."
    },
    "produto": {
      "type": "string",
      "description": "The AliExpress product URL exactly as the user pasted it (any country or language subdomain: www.aliexpress.com, pt.aliexpress.com, aliexpress.us, aliexpress.ru, m.aliexpress.com, /item/<id>.html, /i/<id>.html, ?productId=<id>), the short link the AliExpress app's Share button copies (a.aliexpress.com/_..., s.click.aliexpress.com/e/_..., even inside the shared sentence), a DipScout product URL, or the numeric product id."
    }
  }
}
menor_preco annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
alternativas_mais_baratas — Cheaper alternatives
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Use this when the user asks for a cheaper option, an alternative, or the same product from another store. Returns cheaper listings that have our own price history: first the same product sold by other stores (relation same_product_other_shop), then products with a similar title in the same category (relation similar_product, not necessarily the same item). Each one has its price difference and its own verdict and certainty. Every product carries pageUrl (the DipScout page with the price chart: the citation link), buyUrl (affiliate link through DipScout, disclosed in `monetization`; the price is the same with or without it), summary and citation (a self-contained sentence measured from our price history) and verdict (the short answer to "is this a good price?").

alternativas_mais_baratas input schema
{
  "type": "object",
  "required": [
    "produto"
  ],
  "properties": {
    "idioma": {
      "enum": [
        "en",
        "de",
        "pt",
        "es",
        "fr",
        "ko",
        "it",
        "pl"
      ],
      "type": "string",
      "default": "en",
      "description": "Optional language for the human-readable text (title, discount.explanation, discount.warning, pageUrl): \"en\" (default), \"de\", \"pt\", \"es\", \"fr\", \"ko\", \"it\" or \"pl\". Field names, numbers and currency (USD) are the same in every language."
    },
    "limite": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1
    },
    "mercado": {
      "enum": [
        "us",
        "global"
      ],
      "type": "string",
      "description": "\"us\": only US listings, which ship within the United States only. \"global\": only listings that ship worldwide. Omit for both. For a shopper outside the US, use \"global\". Prices are always the ones read for the US."
    },
    "produto": {
      "type": "string",
      "description": "The AliExpress product URL exactly as the user pasted it (any country or language subdomain: www.aliexpress.com, pt.aliexpress.com, aliexpress.us, aliexpress.ru, m.aliexpress.com, /item/<id>.html, /i/<id>.html, ?productId=<id>), the short link the AliExpress app's Share button copies (a.aliexpress.com/_..., s.click.aliexpress.com/e/_..., even inside the shared sentence), a DipScout product URL, or the numeric product id."
    }
  }
}
alternativas_mais_baratas annotations
{
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
quedas_de_preco — Detected price drops
Advertised by the server during the last successful anonymous check.
Advertised read-only

Products whose price dropped at least 10% below the TYPICAL price of the last 14 days (median weighted by how long each price lasted — a flash sale only counts for the hours it ran). Requires 7 days of tracking. Each product includes discount.certainty: 'verified' means the drop is proven by the time-weighted median of our readings and MAY be presented as savings; 'none' means there is no discount that can be claimed. The seller's 'was' price on the listing does not support any discount here. Quoting the percentage without the certainty next to it misinforms the reader.

quedas_de_preco input schema
{
  "type": "object",
  "properties": {
    "idioma": {
      "enum": [
        "en",
        "de",
        "pt",
        "es",
        "fr",
        "ko",
        "it",
        "pl"
      ],
      "type": "string",
      "default": "en",
      "description": "Optional language for the human-readable text (title, discount.explanation, discount.warning, pageUrl): \"en\" (default), \"de\", \"pt\", \"es\", \"fr\", \"ko\", \"it\" or \"pl\". Field names, numbers and currency (USD) are the same in every language."
    },
    "limite": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1
    },
    "mercado": {
      "enum": [
        "us",
        "global"
      ],
      "type": "string",
      "description": "\"us\": only US listings, which ship within the United States only. \"global\": only listings that ship worldwide. Omit for both. For a shopper outside the US, use \"global\". Prices are always the ones read for the US."
    }
  }
}
quedas_de_preco annotations
{
  "title": "Detected price drops",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
696 ms
95th percentile latency
696 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 696 ms · metadata changed · 6 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http dipscout-mcp https://dipscout.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add dipscout-mcp --url https://dipscout.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable dipscout-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "dipscout-mcp": {
      "url": "https://dipscout.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "dipscout-mcp": {
      "type": "streamableHttp",
      "url": "https://dipscout.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start dipscout-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "dipscout-mcp": {
      "type": "http",
      "url": "https://dipscout.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http dipscout-mcp https://dipscout.com/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "dipscout-mcp": {
      "url": "https://dipscout.com/api/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "dipscout-mcp": {
      "serverUrl": "https://dipscout.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like DipScout MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run DipScout 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.

Claim this listing