DemandScope
Public-API demand-signal scanner for validating digital-product and dev-tool ideas, plus a dependency-free MCP (Model Context Protocol) stdio server that exposes the signals as tools any MCP-compatible agent can call.
Transparency notice: this project is built, tested, and maintained by an autonomous AI agent (Hermes, by Nous Research) operating in the Autonomous Income Research Lab. A human owner reviews and authorizes external actions.
Why
Built by the Autonomous Income Research Lab (2026-08-17) as its first product
prototype: demand validation for niche dev tools is itself a recurring need for
indie builders, and MCP integrations are a fast-growing ecosystem
(evidence: research/2026-08-17-opportunity-scan.md).
Signals (all free, no-auth, ToS-friendly APIs)
| Tool | Source | Proxy for |
|---|---|---|
github_repo_signal |
api.github.com/search | developer interest / competition |
github_trend |
api.github.com (created:) | supply/interest acceleration (delta) |
hn_signal |
hn.algolia.com (Hacker News) | tech-audience attention |
hn_trend |
hn.algolia.com | attention acceleration (delta) |
npm_downloads |
api.npmjs.org | comparable-product demand |
pypi_downloads |
pypistats.org | comparable-product demand |
Absolute download counts include CI/mirror traffic — use directionally, not as
exact market sizes. Trend tools return growth_ratio (current window ÷ prior
window); >1 means accelerating.
Reliability (v0.2)
- Cache: file-based TTL cache (
DEMANDSCOPE_CACHE_DIR, default.cache/demandscope). TTLs: GitHub/HN 1h, npm/PyPI 24h. Repeat calls are free and instant. - Backoff: exponential retry (max 4) on HTTP 429/5xx, honoring
Retry-After. pypistats is treated as best-effort.
Usage
CLI-style (batch scan):
python3 ../demand-scanner/demand_scanner.py candidates.json out/
As an MCP server (newline-delimited JSON-RPC 2.0 over stdio):
python3 mcp_server.py
MCP client config example:
{"mcpServers": {"demandscope": {"command": "python3", "args": ["/path/to/mcp_server.py"]}}}
MCP Registry / MCPB bundle
DemandScope is published to the official MCP Registry as
io.github.baobabcat/demandscope. Each release attaches a deterministic,
one-click-installable MCP Bundle (demandscope.mcpb, spec 0.3) built by
scripts/build_mcpb.py; publishing runs from CI via GitHub OIDC
(.github/workflows/publish-mcp.yml, no stored secrets). The registry
manifest (server.json) is validated with
mcp-registry-lint and
mcp-publisher validate before every publish.
Tests
python3 test_mcp_server.py
10 end-to-end protocol tests (handshake, notifications, ping, tools/list,
tools/call incl. trend + cache-hit assertion, error paths). Network needed for
the npm_downloads and hn_trend call tests.
Status / roadmap
- v0.3 (2026-08-20): MCPB bundle + official MCP Registry publishing via
GitHub OIDC (
server.json, deterministicscripts/build_mcpb.py, tag-triggered publish workflow with rollback). 10/10 tests pass. - v0.2 (2026-08-17): trend-delta tools (
github_trend,hn_trend), TTL cache + rate-limit backoff,pyproject.tomlpackaging, MIT license. 10/10 tests pass. - v0.1 (2026-08-17): protocol subset
initialize,ping,tools/list,tools/call; 4 signal tools. - Next:
resourcessupport, hosted HTTP transport, second asset (mcp-registry-lint) in the lab pipeline.
Release files for demandscope 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| demandscope-0.3.0.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| demandscope-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.4 kB
Release files / demandscope-0.3.0.tar.gz
| Download URL | demandscope-0.3.0.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
08593cdb00ff6d7f6d1fce611735ffac1e1be59a202f7c025ee4b9bdad6f022c
|
|
BLAKE2b-256 checksum How to use checksums |
bc8edef5a642d51ec5fcee849e54b03eae3bc52b2f2194a3052c033ca1fc3663
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency logRelease files / demandscope-0.3.0-py3-none-any.whl
| Download URL | demandscope-0.3.0-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1fe5d71f9f0fc8f4726dc95b80f9ab8ae70b8f7181dcab316fa1d6838c2f24d8
|
|
BLAKE2b-256 checksum How to use checksums |
36562d6c2d5cb6dfb847d811cbcc3148d53a893b00fe39fcf5cd2dd06c2db24f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 27, 2026.
Transparency log