Skip to main content
Glama
jcislo
by jcislo

demandex-mcp

MCP server for Demandex — pay-per-call e-commerce demand intelligence for AI agents. Demandex mines Reddit complaint/intent posts across ~70 communities into scored opportunity cards with verbatim evidence and permalinks, and answers ad-hoc demand verdicts for any physical-product query. Pay per call with USDC on Base via x402 — no signup, no accounts, no API keys.

  • 2 free tools — no wallet, no API key.

  • 5 paid tools — flat per-call USD prices, settled in USDC on Base Mainnet via x402.

Try before you pay: the free get_sample_opportunity tool returns a real, fixed opportunity card in the same full shape as the paid get_opportunity, so you can learn the exact response shape first.


Quick start

Free tier (no wallet)

{
  "mcpServers": {
    "demandex": {
      "command": "npx",
      "args": ["-y", "demandex-mcp"]
    }
  }
}

You get get_categories and get_sample_opportunity.

Paid tier (with wallet)

Add an EVM wallet private key (0x-prefixed) that holds USDC on Base Mainnet:

{
  "mcpServers": {
    "demandex": {
      "command": "npx",
      "args": ["-y", "demandex-mcp"],
      "env": { "EVM_PRIVATE_KEY": "0x..." }
    }
  }
}

The paid tools then settle each call automatically.

Install snippets

Claude Code:

claude mcp add demandex -- npx -y demandex-mcp
# with a wallet:
claude mcp add demandex --env EVM_PRIVATE_KEY=0x... -- npx -y demandex-mcp

Claude Desktop / Cursor: add the JSON block above to your MCP config (claude_desktop_config.json or .cursor/mcp.json).


Related MCP server: mcp-x402

Tools

Free tools

Tool

Endpoint

Description

get_categories

GET /v1/categories

Category index with opportunityCount, topScore, lastUpdated per category.

get_sample_opportunity

GET /v1/sample/opportunity

Real, fixed sample opportunity card showing the full paid card shape.

Paid tools

Tool

Endpoint

Price (USD)

Description

get_trending_opportunities

GET /v1/opportunities/trending

$0.01

Top 20 trending cards as teasers (id, slug, title, category, score, signalCount, lastSeen).

get_opportunities

GET /v1/opportunities

$0.02

Up to 50 cards in a category (teaser + summary). Optional minScore (0-100).

get_opportunity

GET /v1/opportunity

$0.05

One FULL card by id or slug (exactly one) — all score components, productAngle, summary, verbatim evidence[].

gauge_demand

POST /v1/gauge

$0.03

Demand verdict for a product query (3–200 chars), cached 7 days, corpus-only. Optional category.

gauge_demand_live

POST /v1/gauge/live

$0.10

Demand verdict with a LIVE Reddit search at request time (~45s budget). Same body as gauge_demand.

Prices are flat per call — no bundles, no entitlements. The verdict shape (both gauges): { query, verdictScore (0-100), demandTemperature (cold|warm|hot), rationale, topEvidence[], relatedOpportunities[], cache, fetchedAt }.


How payments work (x402)

Demandex speaks the x402 exact scheme. The API's 402 advertises a Base (USDC, EIP-3009) rail; this MCP settles on Base:

  1. The MCP requests a paid endpoint. With no payment, the API replies HTTP 402 with the accepted terms.

  2. If EVM_PRIVATE_KEY is set, the MCP settles the call via the standard @x402/fetch V2 client and retries. If no key is set, the MCP returns the 402 price terms so you can see the cost without paying.

  3. The API returns the data plus a charged: true marker.

Compute-first, settle-after: Demandex computes the full answer before charging, so you are never billed for an error or an empty result (a still-warming index returns a no-charge 503 corpus_warming).

No accounts, no API keys — just a wallet with USDC on Base Mainnet. Physical products only.


Environment variables

Variable

Required

Description

EVM_PRIVATE_KEY

No

0x-prefixed wallet key with USDC on Base Mainnet. Required to pay the 5 paid tools on a live API. PRIVATE_KEY is accepted as a fallback. Free tools work without it; without a key the paid tools surface the 402 price terms.

DEMANDEX_API_URL

No

Override the API base URL (default https://api.demandex.dev).


Disclaimer

Demandex provides informational e-commerce demand intelligence aggregated from public Reddit posts; physical products only; not professional or business advice; provided as-is. See https://api.demandex.dev/terms.txt.

Docs for agents: https://api.demandex.dev/llms.txt · full: https://api.demandex.dev/llms-full.txt


License

MIT © jcislo

Available Tools

7 tools
gauge_demandA

PAID $0.03 via x402. Demand verdict for any physical-product query, cached 7 days by normalized query (corpus-only synthesis + 1 LLM call). Returns { query, verdictScore (0-100), demandTemperature (cold|warm|hot), rationale, topEvidence[], relatedOpportunities[], cache, fetchedAt }. Pays USDC on Base via x402. Compute-first, settle-after — you are never charged for an error. Set EVM_PRIVATE_KEY (wallet with USDC on Base Mainnet) to pay on a live API; without a key the call returns the 402 price terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe product/demand query to gauge (3..200 chars). Required.
categoryNoOptional category slug to scope the corpus match.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and excels: it discloses the paid nature ($0.03), x402 payment mechanism, caching strategy (7 days), the compute-first settle-after model with no charge for errors, and the behavior without an EVM_PRIVATE_KEY (returns 402 price terms). It also includes the return shape, which is critical given the absence of an output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence serves a purpose: cost, caching, return format, payment mechanics, and key requirements. No fluff or repetition. It is structured with a clear flow from functionality to operational details, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (paid API, caching, payment setup) and no output schema, the description compensates fully by enumerating the exact return fields, explaining the payment flow, and specifying the prerequisite (EVM_PRIVATE_KEY). It covers all critical aspects an agent would need to know to invoke and understand the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by clarifying the query parameter: it's for physical-product queries and is normalized for caching. However, it does not add any information about the category parameter beyond what the schema already states, so the added value is moderate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes a 'demand verdict for any physical-product query,' specifying both the action (demand verdict) and the resource (physical-product query). It also distinguishes from the sibling gauge_demand_live by noting the 7-day cache, making the purpose and scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (for demand verdicts on physical-product queries) and implicitly differentiates from gauge_demand_live by emphasizing caching and cost. However, it does not explicitly compare with other siblings or state when not to use it, so it lacks explicit exclusions or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gauge_demand_liveA

PAID $0.10 via x402. Demand verdict backed by a LIVE Reddit search at request time (up to 50 posts) plus the mined corpus and one LLM synthesis call, under a ~45s budget. Same verdict shape as gauge_demand (cache always miss); timeout → no-charge 504. Pays USDC on Base via x402. Compute-first, settle-after — you are never charged for an error. Set EVM_PRIVATE_KEY (wallet with USDC on Base Mainnet) to pay on a live API; without a key the call returns the 402 price terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe product/demand query to gauge with live research (3..200 chars). Required.
categoryNoOptional category slug to scope the corpus match.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it discloses the $0.10 x402 cost, live Reddit search up to 50 posts, one LLM synthesis call, ~45s budget, timeout → no-charge 504, USDC-on-Base payment, compute-first/settle-after model, and EVM_PRIVATE_KEY requirement. This is exemplary operational transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Though dense, every sentence conveys a distinct operational fact—cost, live source, budget, parity with gauge_demand, timeout handling, payment settlement, and key requirement. No filler or redundancy; the structure is an efficient single paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, but the phrase 'Same verdict shape as gauge_demand' anchors the return format to a sibling tool, which mitigates the gap. The description covers pricing, auth, timeout, and error behavior well, though it could be even more explicit about the actual verdict fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents both parameters at 100% coverage, so the baseline is 3. The description adds meaningful context that the query drives a live Reddit search and corpus match, clarifying how the query is actually used beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly defines a demand-gauge tool backed by a LIVE Reddit search, and explicitly distinguishes it from the cached sibling gauge_demand via 'Same verdict shape as gauge_demand (cache always miss)'. The verb and resource are specific and the live-vs-cached contrast is immediately apparent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names gauge_demand as the alternative and implies this tool is for live-demand situations by noting the cache always misses and that a live Reddit search is performed at request time. However, it stops short of an explicit 'use this when' statement or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoriesA

Category index with opportunityCount, topScore, lastUpdated per category. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden of disclosing behavior. It states the tool is 'Free' and describes the returned data fields, but it does not mention response structure, pagination, or any operational constraints. For a simple parameterless read-only tool, this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with the core purpose front-loaded ('Category index with...'), followed by a separate 'Free.' sentence that adds cost context. Every word earns its place, making it efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (zero params, no annotations, no output schema), the description covers the essential return content and cost. It could be more explicit that it returns a list, but 'index' implies that. For a tool this simple, the description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to clarify. The baseline for 0 params is 4, and the description adds no conflicting information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a category index with specific fields (opportunityCount, topScore, lastUpdated), which distinguishes it from sibling tools that focus on opportunities or demand gauges. It is more specific than a mere restatement of the name, though it lacks explicit differentiation from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for retrieving category-level aggregated data, but it provides no explicit when-to-use guidance or exclusions. Sibling tools are clearly different in focus, so the context implicitly suggests usage, but no direct alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_opportunitiesA

PAID $0.02 via x402. Up to 50 opportunity cards in a category, each a teaser plus its summary. Requires category; optional minScore (0-100) filters. Unknown/missing category → no-charge 400 listing valid categories. Pays USDC on Base via x402. Compute-first, settle-after — you are never charged for an error. Set EVM_PRIVATE_KEY (wallet with USDC on Base Mainnet) to pay on a live API; without a key the call returns the 402 price terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYesCategory slug (required). Unknown/missing → no-charge 400 listing valid categories.
minScoreNoOptional minimum composite score (0-100) filter.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full responsibility and succeeds. It discloses the paid nature ($0.02 via x402), the exact response behavior (up to 50 cards, each with teaser and summary), error behavior (no-charge 400 for invalid category), payment settlement details (USDC on Base, compute-first, settle-after), and the prerequisite EVM_PRIVATE_KEY. This is exemplary transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence adds essential information: pricing, return shape, required and optional parameters, error behavior, payment mechanics, and setup requirement. The description is front-loaded with the most critical fact (cost) and remains tightly structured with no filler, making it highly efficient for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description compensates by explaining the return shape (up to 50 opportunity cards, each a teaser plus summary) and error responses. Combined with the parameter schema, payment details, and setup instructions, it gives a complete picture of expected behavior and prerequisites, leaving no major ambiguities.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with 100% coverage, so the baseline is 3. The description adds value by explaining the consequence of an unknown/missing category (no-charge 400 listing valid categories) and reiterating the minScore 0-100 range, which provides operational context beyond the schema's static property definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns up to 50 opportunity cards per category, each with a teaser and summary. The plural 'opportunities' and category scope distinguish it from the sibling get_opportunity, and the specific verb 'get' plus resource 'opportunity cards in a category' make the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly requires a category and mentions the optional minScore filter, giving clear context for when to use the tool. It does not explicitly name alternatives like get_categories or get_trending_opportunities, but the error handling hint ('unknown/missing category → 400 listing valid categories') implies how to recover from a missing category. This is clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_opportunityA

PAID $0.05 via x402. One FULL opportunity card by id or slug (provide exactly one): all score components (freqScore, intensityScore, wtpScore), productAngle, summary, evidence[] (verbatim quotes with subreddit, upvotes, permalink), builderMomentum, firstSeen, lastSeen, signalCount, distinctAuthors. Pays USDC on Base via x402. Compute-first, settle-after — you are never charged for an error. Set EVM_PRIVATE_KEY (wallet with USDC on Base Mainnet) to pay on a live API; without a key the call returns the 402 price terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoOpportunity id (provide exactly one of id or slug).
slugNoOpportunity slug (provide exactly one of id or slug).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses the payment fee, payment mechanism (USDC on Base), error handling (never charged for an error), and the key requirement, all of which are critical behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence adds value: payment, output fields, key behavior, and error safety. It is well-structured with key info upfront.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description enumerates all returned fields (freqScore, intensityScore, wtpScore, etc.). It also covers cost, key requirement, and the no-charge-on-error behavior, making the tool fully understandable for a single-opportunity lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both id and slug, so the baseline is 3. The description repeats the 'exactly one' constraint but adds no new parameter syntax, format, or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns one FULL opportunity card by id or slug, listing specific output components. This distinguishes it from siblings like get_opportunities (plural) and get_trending_opportunities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context: exactly one of id or slug must be supplied, and a live call requires EVM_PRIVATE_KEY; without it, the call returns 402 price terms. However, it does not explicitly compare to alternative tools or state when-not-to-use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_sample_opportunityB

Real, fixed sample opportunity card showing the full paid card shape. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the sample is 'fixed' (static, not changing) and 'free' (no cost), but it does not explicitly state whether the tool makes network requests, has side effects, or what the response contains. With no annotations, this is insufficient for a safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with no redundancy. It front-loads the key information: the sample is real, fixed, and free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool, the description is minimal. It explains the sample is a card but doesn't specify the structure of the response or any usage context, which is a gap given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, and schema coverage is 100%. The description adds no parameter semantics because none exist, but the baseline for zero-parameter tools is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the tool as returning a 'real, fixed sample opportunity card' showing the 'full paid card shape,' which clarifies it's a demo/sample variant. The name also indicates 'get' and 'sample,' distinguishing it from real opportunity tools like get_opportunity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. It does not mention that it's for testing, previewing, or as a fallback when real data is unavailable. The only hint is the word 'sample,' but it lacks explicit usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedgauge_demand
    • First observedgauge_demand_live
    • First observedget_categories
    • First observedget_opportunities
    • First observedget_opportunity
    • First observedget_sample_opportunity
    • First observedget_trending_opportunities

TDQS

A4/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have clearly distinct purposes: categories, sample, trending list, category list, full detail, and two demand gauges. The only potential confusion is between get_trending_opportunities and get_opportunities, but pricing and descriptions (trending vs category-based) make them differentiable.

Naming Consistency4/5

The verb_noun pattern is consistent, with all retrieval tools prefixed get_ and analysis tools using gauge_. The shift from get_ to gauge_ is logical and doesn't break readability, but it is a minor deviation from a uniform verb.

Tool Count5/5

Seven tools is well-scoped for a demand-intelligence server, covering free samples, paid tiers, and both cached and live analysis without redundancy. Each tool earns its place in the workflow.

Completeness4/5

The surface covers categories, trending, detailed cards, and demand gauging, which covers the core use case. A minor gap is the lack of keyword-based opportunity search, though gauge_demand's relatedOpportunities partially fills this.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    The first MCP server that pays for itself. AI agents pay for ScriptMasterLabs data autonomously via x402 — 43+ pay-per-call tools for market intelligence, SEC filings, federal grants/contracts, and more.
    1
    -
  • F
    license
    B
    quality
    C
    maintenance
    MCP server for paid business data services with free previews and paid tools (enriched search and competitive analysis) using x402 payment flow via Pyrimid Protocol on Base.
    5
    -