Ecommerce Leads
com.getecommerceleads/ecommerce-leadsgetecommerceleads.comstreamable-httpv1.1.1Scanned
Ecommerce store metrics by domain: revenue, ad spend, traffic. Log in to search 600k+ stores.
21 tools: 6 can delete or cancel things, 1 do something that can't be undone, 4 change things and 10 only read.
- Reads private data · 1
- Reads text others write · 0
- Can send data out · 1
- 1 finding
Anlyon alternative
11 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
21 tools
Deletes or cancels 6Claude Code: deny
addToWatchlistAdd domains to a watchlist (merge, nothing is removed).No findings
Why it is in this group
- The name "addToWatchlist" says "add": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Add domains to a watchlist (merge, nothing is removed). THIS SPENDS CREDITS: 1 credit per domain that is new to the list. Before you call it, tell the user the cost of 1 credit per store and how many domains you will add, then ask the user to confirm. Never call it without the confirmation. If you have too few credits, the result shows the cost and your balance, and nothing is added. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
deleteSignalSetDelete one of your signal sets.No findings
Why it is in this group
- The name "deleteSignalSet" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete one of your signal sets. The set stops matching stores and disappears from listSignalSets and from the dashboard tabs. You cannot undo this. Ask the user to confirm before you call it. Say the name of the set in your question. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
deleteWatchlistDelete one of your watchlists with all its domains.No findings
Why it is in this group
- The name "deleteWatchlist" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete one of your watchlists with all its domains. The blacklist cannot be deleted. Ask the user to confirm before you call it. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
removeFromWatchlistRemove one domain from a watchlist or from the blacklist.1 finding
Why it is in this group
- The name "removeFromWatchlist" says "remove": a word for removing or ending something.
- The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.
Findings
- Warn
The server marks "removeFromWatchlist" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "removeFromWatchlist" says "remove": a word for removing or ending something.
Description, as the server wrote it Remove one domain from a watchlist or from the blacklist. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
revealStoresReveal data for stores.No findings
Why it is in this group
- The name "revealStores" says "store": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Reveal data for stores. THIS SPENDS CREDITS. Before you call it, call getRevealCost for the same selection and tell the user the cost, or state the cost of 1 credit per store, then ask the user to confirm. Never call it without the confirmation. details unlocks the profile links, buying signals and phone. ceo, marketing and ecommerce start a decision-maker contact search (1 credit per store, +1 for a store whose details are not revealed yet). A store you already revealed costs 0. If you have too few credits, the result shows the cost and your balance, and nothing is charged. Use getRevealStatus to follow a contact search.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
saveSignalSetCreate a signal set, or replace the criteria of an existing one.No findings
Why it is in this group
- The name "saveSignalSet" says "save": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a signal set, or replace the criteria of an existing one. Without setId it creates a new set (the plan limit applies). With setId it updates that set and replaces all its signals, legacy categories and ICP filters with the new criteria. Conditions that you did not set (saved custom SQL conditions) stay on the set, joined with AND. Then the reply has preservedConditions, the number of these conditions. Use previewSignalSet first to check that the criteria match enough stores. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- openWorldHint: false
Can't be undone 1Claude Code: ask
sendFeedbackSend a feedback message to the Ecommerce Leads team.Can send data outNo findings
Why it is in this group
- The name "sendFeedback" says "send": a word for sending, and what is sent cannot be taken back.
What it can reach
- outboundThe name "sendFeedback" says "send": it sends or publishes something to other people.
Description, as the server wrote it Send a feedback message to the Ecommerce Leads team. Limit: 5 messages per hour.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
Changes things 4Claude Code: ask
createWatchlistCreate an empty watchlist.No findings
Why it is in this group
- The name "createWatchlist" says "create": a word for a change.
Description, as the server wrote it Create an empty watchlist. You can have at most 10 lists, including the blacklist. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
exportStoresExport revealed stores as CSV text.No findings
Why it is in this group
- The name "exportStores" says "store": a word for a change.
Description, as the server wrote it Export revealed stores as CSV text. Stores you have not revealed are skipped. The result holds the header row and at most 200 data rows; it says when it cut the rows. For a larger export, narrow the selection or download the file in the dashboard. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
renameWatchlistRename one of your watchlists.No findings
Why it is in this group
- The name "renameWatchlist" says "rename": a word for a change.
Description, as the server wrote it Rename one of your watchlists. The blacklist cannot be renamed. Paid plans only.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
updateOutreachStatusSet the outreach status of one store that you revealed.No findings
Why it is in this group
- The name "updateOutreachStatus" says "update": a word for a change.
Description, as the server wrote it Set the outreach status of one store that you revealed. Use the storeId from a searchStores row. If you did not reveal the store, the tool returns an error. Use revealStores first. A store in a revealed group is accepted at no credit cost.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: false
Only reads 10Show 10 read-only tools
getRevealCostPreview the credit cost of a reveal.No findings
Why it is in this group
- The name "getRevealCost" says "get": a word for reading.
Description, as the server wrote it Preview the credit cost of a reveal. Nothing is charged and nothing is revealed. Returns the cost of each action (details, ceo, marketing, ecommerce) for the selected stores.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
getRevealStatusCheck the status of contact searches you started in the dashboard, and your credit balance.Reads private dataNo findings
Why it is in this group
- The name "getRevealStatus" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "contact": it reads contacts.
Description, as the server wrote it Check the status of contact searches you started in the dashboard, and your credit balance. Read only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
getSignalSetGet one of your signal sets, with its criteria.No findings
Why it is in this group
- The name "getSignalSet" says "get": a word for reading.
Description, as the server wrote it Get one of your signal sets, with its criteria. Paid plans only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
getStoreChartGet the latest 24 points of one metric for a store, for a chart.No findings
Why it is in this group
- The name "getStoreChart" says "get": a word for reading.
Description, as the server wrote it Get the latest 24 points of one metric for a store, for a chart. Values use your currency.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
getWatchlistGet the domains of one watchlist or the blacklist, 100 per page.No findings
Why it is in this group
- The name "getWatchlist" says "get": a word for reading.
Description, as the server wrote it Get the domains of one watchlist or the blacklist, 100 per page. To see store data for a watchlist, call searchStores with tab "watchlist:{id}". Paid plans only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
listSignalSetsList your signal sets, with the signal catalog and the ICP columns you can use in criteria.No findings
Why it is in this group
- The name "listSignalSets" says "list": a word for reading.
Description, as the server wrote it List your signal sets, with the signal catalog and the ICP columns you can use in criteria. Paid plans only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
listWatchlistsList your watchlists and your blacklist, with the domain count of each.No findings
Why it is in this group
- The name "listWatchlists" says "list": a word for reading.
Description, as the server wrote it List your watchlists and your blacklist, with the domain count of each. Paid plans only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
lookupStoreLook up one ecommerce store by domain.No findings
Why it is in this group
- The name "lookupStore" says "lookup": a word for reading.
Description, as the server wrote it Look up one ecommerce store by domain. The reply has company data, estimated revenue, marketing budget, traffic, Google and Meta ad spend, ad counts, a Conversion Rate Score, buying signals, the store phone number, and social and ad-library links. Decision-maker contact fields are not in the fields list. With OAuth access, the decisionMakers object shows the contacts that you revealed. When other active stores use the same base domain, the reply has sharedMetrics. Those stores show the same traffic and ad numbers, because the data belongs to the base domain. Limits: anonymous access, 20 lookups per hour per IP. OAuth access, 20 lookups per minute, and the call writes a lookup history row.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
previewSignalSetCheck whether candidate signal criteria match enough stores (80 or more).No findings
Why it is in this group
- The name "previewSignalSet" says "preview": a word for reading.
Description, as the server wrote it Check whether candidate signal criteria match enough stores (80 or more). Returns {"enough": true|false}. It does not save anything. Paid plans only.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
searchStoresSearch the store catalog like the Ecommerce Leads dashboard.No findings
Why it is in this group
- The name "searchStores" says "search": a word for reading.
Description, as the server wrote it Search the store catalog like the Ecommerce Leads dashboard. Returns 30 rows per page. Stores you have not revealed show masked values for the hidden fields; revealed stores show the real values. By default, each row has storeId, 9 key columns (Industry, Country, revenue, Total Traffic, Google and Meta ad spend, Buying Signals, Buying Signals List, Status) and a short "reveal" object (revealed, contactTypes, pendingTypes). Use the columns argument to choose other columns, or ["*"] for all columns and the full reveal object. The result has the column list only when includeColumns is true. The result has the exact total. If the count fails, the result has totalAtLeast (a lower bound that grows on each page) and a note. Use hasMore to decide whether to fetch the next page, and do not report totalAtLeast as the number of matches. When other active stores use the same base domain, the row has sharedMetrics {basedomain, relatedStoreCount}. Those stores show the same traffic and ad numbers, because the data belongs to the base domain.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged untrusted-input.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out1
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
The server marks "removeFromWatchlist" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "removeFromWatchlist" says "remove": a word for removing or ending something.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.1.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http ecommerce-leads https://getecommerceleads.com/api/mcpclaude mcp add --transport http ecommerce-leads https://getecommerceleads.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__ecommerce-leads__lookupStore",
"mcp__ecommerce-leads__searchStores",
"mcp__ecommerce-leads__getStoreChart",
"mcp__ecommerce-leads__listSignalSets",
"mcp__ecommerce-leads__getSignalSet",
"mcp__ecommerce-leads__previewSignalSet",
"mcp__ecommerce-leads__listWatchlists",
"mcp__ecommerce-leads__getWatchlist",
"mcp__ecommerce-leads__getRevealCost",
"mcp__ecommerce-leads__getRevealStatus"
],
"ask": [
"mcp__ecommerce-leads__createWatchlist",
"mcp__ecommerce-leads__renameWatchlist",
"mcp__ecommerce-leads__updateOutreachStatus",
"mcp__ecommerce-leads__sendFeedback",
"mcp__ecommerce-leads__exportStores"
],
"deny": [
"mcp__ecommerce-leads__revealStores",
"mcp__ecommerce-leads__saveSignalSet",
"mcp__ecommerce-leads__deleteSignalSet",
"mcp__ecommerce-leads__deleteWatchlist",
"mcp__ecommerce-leads__removeFromWatchlist",
"mcp__ecommerce-leads__addToWatchlist"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as ecommerce-leads. Review it before you use it.
Capability tags behind 2 rules
- mcp__ecommerce-leads__getRevealStatus private-data
- mcp__ecommerce-leads__sendFeedback outbound
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/com.getecommerceleads/ecommerce-leads/verify?hash=41ad081001ae74d9bc6eb93c82627d29d0027a253cd4d1126b7eef16ee1dbf16" | jq -e '.changed == false'Pinned hash 41ad081001ae, from Nov 4, 2026, 10:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/com.getecommerceleads/ecommerce-leads/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/com.getecommerceleads/ecommerce-leads)Source: MCP Registry · repository. Synced Nov 4, 2026, 11:17 UTC.