Unmet shopper demand: products people ask for and can't buy, checked against 2M+ retail listings.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional workspace key: 'Bearer <key>'. Keyless calls get 1,000 free credits a month.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Start here. Check whether people have asked for a product and could not buy it. Returns matching exNiche gaps at summary level (verdict, score band, class, trend, source counts, one linked ask) and records your ask as one AI agent search. 1 credit. Never send personal details or synthetic asks.
Short product idea, e.g. 'waterproof dog backpack'.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http search https://exniche.com/mcp
Headers
Authorization (optional, not in the config above): Optional workspace key: 'Bearer <key>'. Keyless calls get 1,000 free credits a month.Start here. Check whether people have asked for a product and could not buy it. Returns matching exNiche gaps at summary level (verdict, score band, class, trend, source counts, one linked ask) and records your ask as one AI agent search. 1 credit. Never send personal details or synthetic asks.
| Argument | Type | Description |
|---|---|---|
| query* | string | Short product idea, e.g. 'waterproof dog backpack'. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Short product idea, e.g. 'waterproof dog backpack'."
}
},
"additionalProperties": false
}Full dossier for a scored gap: product-by-product checks, live closest products, supplier candidates and a suggested spec. Needs a workspace key. Unlocking costs 19,000 credits once per account; an already unlocked dossier costs 0. Ask the user before unlocking.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1
}
},
"additionalProperties": false
}Get one gap by id or slug. detail=summary costs 1 credit; detail=full (exact score parts, every ask with link and attribution, requirements, 8-week ask counts) costs 100 credits. Unscored leads only return summary.
| Argument | Type | Description |
|---|---|---|
| id* | string | Gap id or slug from list_gaps or check_demand. |
| detail | string | summary = L0 (1 credit per call); full = L1 (1 + 10 credits per scored row). |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Gap id or slug from list_gaps or check_demand."
},
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"default": "summary",
"description": "summary = L0 (1 credit per call); full = L1 (1 + 10 credits per scored row)."
}
},
"additionalProperties": false
}Free. Return exNiche install commands for MCP clients, the agent guide, and the signup and prepaid-credit links to hand the user when free credits run out. Free: 1,000 credits a month. Credits: A$10 = 10,000. No automatic charges.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List the exNiche gap ledger with filters. detail=summary costs 1 credit per call; detail=full adds exact scores, all linked asks and requirements for 10 credits per scored row. Scores mean 'worth a closer look', not verified demand.
| Argument | Type | Description |
|---|---|---|
| q | string | Words that must appear in the gap label or requirements. |
| sort | string | |
| class | string | Comma list of absent, exists_hard_to_find, unverified. |
| limit | integer | |
| since | string | ISO date or epoch ms; only gaps with an ask since then. |
| trend | string | Comma list of rising, steady, cooling. |
| cursor | string | next_cursor from the previous page. |
| detail | string | summary = L0 (1 credit per call); full = L1 (1 + 10 credits per scored row). |
| source | string | Comma list of community_ask, agent_search, store_search, bot_research. |
Free. Report a genuine shopper mismatch after a search. Do not send synthetic reports or personal details. Response states whether the agent observation was saved; it is not verified human demand.
| Argument | Type | Description |
|---|---|---|
| query* | string |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1
}
},
"additionalProperties": false
}Search recorded retail listings across stores using explicit budget, currency, size, color and stock filters. 1 credit. Returns ranked purchase links with observed availability; unknown facts stay unknown. Misses may be saved as agent observations, never verified human demand.
| Argument | Type | Description |
|---|---|---|
| size | string | Required recorded size, e.g. M. |
| sort | string | |
| color | string | Required recorded color, e.g. black. |
| limit | integer | |
| query* | string | Short product category or name, e.g. keyboards, shoes or coffee. Put constraints in separate fields. |
| currency | string | Three-letter currency code, e.g. AUD. |
| in_stock | boolean | Filter recorded availability. Availability must be checked at retailer. |
| max_price | number | Maximum recorded price. Supply currency too; no currency conversion. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 1, 2026.
| include | string | Also return unscored leads (L0 only, verdict null). |
| verdict | string | Comma list of go, maybe, no-go. |
| category | string |
| min_score | integer |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 200,
"description": "Words that must appear in the gap label or requirements."
},
"sort": {
"enum": [
"score",
"newest",
"asks",
"rising"
],
"type": "string",
"default": "score"
},
"class": {
"type": "string",
"description": "Comma list of absent, exists_hard_to_find, unverified."
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 50,
"minimum": 1
},
"since": {
"type": "string",
"description": "ISO date or epoch ms; only gaps with an ask since then."
},
"trend": {
"type": "string",
"description": "Comma list of rising, steady, cooling."
},
"cursor": {
"type": "string",
"description": "next_cursor from the previous page."
},
"detail": {
"enum": [
"summary",
"full"
],
"type": "string",
"default": "summary",
"description": "summary = L0 (1 credit per call); full = L1 (1 + 10 credits per scored row)."
},
"source": {
"type": "string",
"description": "Comma list of community_ask, agent_search, store_search, bot_research."
},
"include": {
"enum": [
"unscored"
],
"type": "string",
"description": "Also return unscored leads (L0 only, verdict null)."
},
"verdict": {
"type": "string",
"description": "Comma list of go, maybe, no-go."
},
"category": {
"type": "string"
},
"min_score": {
"type": "integer",
"maximum": 100,
"minimum": 0
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"query"
],
"properties": {
"size": {
"type": "string",
"description": "Required recorded size, e.g. M."
},
"sort": {
"enum": [
"relevance",
"price_asc",
"price_desc"
],
"type": "string",
"default": "relevance"
},
"color": {
"type": "string",
"description": "Required recorded color, e.g. black."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"minLength": 1,
"description": "Short product category or name, e.g. keyboards, shoes or coffee. Put constraints in separate fields."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "Three-letter currency code, e.g. AUD."
},
"in_stock": {
"type": "boolean",
"description": "Filter recorded availability. Availability must be checked at retailer."
},
"max_price": {
"type": "number",
"minimum": 0,
"description": "Maximum recorded price. Supply currency too; no currency conversion."
}
},
"additionalProperties": false
}