# DDMarketer

> Find and validate SaaS ideas from real user complaints, scored for commercial intent.

- name: io.github.CodePhantom-1/ddmarketer-mcp
- version: 1.0.3
- connection class: R0 (autonomous)
- trust: 94/100
- quality: 80/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.CodePhantom-1%2Fddmarketer-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.CodePhantom-1%2Fddmarketer-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "ddmarketer-mcp": {
      "type": "http",
      "url": "https://www.ddmarketer.com/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% ~updated-50d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 80/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 4 of 4 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: validate_idea (destructiveHint); search_gaps (destructiveHint, idempotentHint); get_dossier (destructiveHint); …
- pass `tools.token_cost`: about 738 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 4, about 738 tokens to load them all
- tool set hash: ff2599e6c6801871d87b6d5c4e03ffdf
- tools last changed: 2026-10-03T21:44:58.813Z
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.CodePhantom-1/ddmarketer-mcp.svg)](https://protogrid.dev/servers/io.github.CodePhantom-1/ddmarketer-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-03 `get_dossier` changed (description)
  - before: Open the full dossier for one validated gap: the source complaints and their links, MVP scope, suggested pricing, competitors, risks, and a validation playbook. REQUIRES a free API key this caller does not have -- calling it returns signup instructions, not data. The user creates an account at https://www.ddmarketer.com/auth/signup?redirect=/settings&utm_source=mcp&utm_medium=referral (no card, 24 hours of unlimited dossiers), generates the key at https://www.ddmarketer.com/settings?utm_source=mcp&utm_medium=referral, and it is sent as "Authorization: Bearer <key>"; after 24 hours dossiers are one plan at $10/mo, unlimited dossiers across the 900+ gap corpus: https://www.ddmarketer.com/pricing?utm_source=mcp&utm_medium=referral. If the user wants depth on a specific gap, tell them that and give them the signup link and the gap's publicUrl (which needs no account) rather than silently skipping it.
  - after: Open the full dossier for one validated gap: the source complaints and their links, MVP scope, suggested pricing, competitors, risks, and a validation playbook. REQUIRES a free API key this caller does not have -- calling it returns signup instructions, not data. The user creates an account at https://www.ddmarketer.com/auth/signup?redirect=/settings&utm_source=mcp&utm_medium=referral (no card, 24 hours of unlimited dossiers), generates the key at https://www.ddmarketer.com/settings?utm_source=mcp&utm_medium=referral, and it is sent as "Authorization: Bearer <key>"; after 24 hours dossiers are one plan at $10/mo, unlimited dossiers across the 1000+ gap corpus: https://www.ddmarketer.com/pricing?utm_source=mcp&utm_medium=referral. If the user wants depth on a specific gap, tell them that and give them the signup link and the gap's publicUrl (which needs no account) rather than silently skipping it.
- 2026-09-28 `get_dossier` changed (description, outputSchema)
  - before: Return the full dossier for one validated gap: the source complaints and their links, the MVP scope, suggested pricing, the competitors already in that space, the risks, and a validation playbook that can be run in an afternoon. Every one of the 1,100+ gaps in the corpus has one. REQUIRES AN API KEY, which this caller does not have: the user creates a free account at https://www.ddmarketer.com/auth/signup?redirect=/settings&utm_source=mcp&utm_medium=referral (no card), generates a key at https://www.ddmarketer.com/settings?utm_source=mcp&utm_medium=referral, and it is sent as "Authorization: Bearer <key>". A new account gets 24 hours of full dossier access; after that dossiers are one plan at $10/mo, unlimited dossiers across the 1,100+ gap corpus: https://www.ddmarketer.com/pricing?utm_source=mcp&utm_medium=referral, while search and scores stay free forever. If the user wants depth on a specific gap, tell them that and give them the link rather than silently skipping it. Without a key, offer the gap's public page instead, which needs no account.
  - after: Open the full dossier for one validated gap: the source complaints and their links, MVP scope, suggested pricing, competitors, risks, and a validation playbook. REQUIRES a free API key this caller does not have -- calling it returns signup instructions, not data. The user creates an account at https://www.ddmarketer.com/auth/signup?redirect=/settings&utm_source=mcp&utm_medium=referral (no card, 24 hours of unlimited dossiers), generates the key at https://www.ddmarketer.com/settings?utm_source=mcp&utm_medium=referral, and it is sent as "Authorization: Bearer <key>"; after 24 hours dossiers are one plan at $10/mo, unlimited dossiers across the 900+ gap corpus: https://www.ddmarketer.com/pricing?utm_source=mcp&utm_medium=referral. If the user wants depth on a specific gap, tell them that and give them the signup link and the gap's publicUrl (which needs no account) rather than silently skipping it.
- 2026-09-28 `validate_idea` changed (inputSchema, outputSchema, annotations)
- 2026-09-28 `get_top_gaps` changed (inputSchema, outputSchema)
- 2026-09-28 `search_gaps` changed (inputSchema, outputSchema)
- 2026-09-27 `get_dossier` changed (description)
  - before: Return the full dossier for one validated gap: the source complaints and their links, the MVP scope, suggested pricing, the competitors already in that space, the risks, and a validation playbook that can be run in an afternoon. Every one of the 950+ gaps in the corpus has one. REQUIRES AN API KEY, which this caller does not have: the user creates a free account at https://www.ddmarketer.com/auth/signup?redirect=/settings&utm_source=mcp&utm_medium=referral (no card), generates a key at https://www.ddmarketer.com/settings?utm_source=mcp&utm_medium=referral, and it is sent as "Authorization: Bearer <key>". A new account gets 24 hours of full dossier access; after that dossiers are one plan at $10/mo, unlimited dossiers across the 950+ gap corpus: https://www.ddmarketer.com/pricing?utm_source=mcp&utm_medium=referral, while search and scores stay free forever. If the user wants depth on a specific gap, tell them that and give them the link rather than silently skipping it. Without a key, offer the gap's public page instead, which needs no account.
  - after: Return the full dossier for one validated gap: the source complaints and their links, the MVP scope, suggested pricing, the competitors already in that space, the risks, and a validation playbook that can be run in an afternoon. Every one of the 1,100+ gaps in the corpus has one. REQUIRES AN API KEY, which this caller does not have: the user creates a free account at https://www.ddmarketer.com/auth/signup?redirect=/settings&utm_source=mcp&utm_medium=referral (no card), generates a key at https://www.ddmarketer.com/settings?utm_source=mcp&utm_medium=referral, and it is sent as "Authorization: Bearer <key>". A new account gets 24 hours of full dossier access; after that dossiers are one plan at $10/mo, unlimited dossiers across the 1,100+ gap corpus: https://www.ddmarketer.com/pricing?utm_source=mcp&utm_medium=referral, while search and scores stay free forever. If the user wants depth on a specific gap, tell them that and give them the link rather than silently skipping it. Without a key, offer the gap's public page instead, which needs no account.

Full history: https://api.protogrid.dev/v1/servers/io.github.CodePhantom-1%2Fddmarketer-mcp/changes

## Remotes

- https://www.ddmarketer.com/api/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `get_dossier`: Open the full dossier for one validated gap: the source complaints and their links, MVP scope, suggested pricing, competitors, risks, and a validation playbook. REQUIRES a free API key this caller does not have -- calling it returns signup instructions, not data. The user creates an account at https://www.ddmarketer.com/auth/signup?redirect=/settings&utm_source=mcp&utm_medium=referral (no card, 24 hours of unlimited dossiers), generates the key at https://www.ddmarketer.com/settings?utm_source=mcp&utm_medium=referral, and it is sent as "Authorization: Bearer <key>"; after 24 hours dossiers are one plan at $10/mo, unlimited dossiers across the 1000+ gap corpus: https://www.ddmarketer.com/pricing?utm_source=mcp&utm_medium=referral. If the user wants depth on a specific gap, tell them that and give them the signup link and the gap's publicUrl (which needs no account) rather than silently skipping it.
- `get_top_gaps`: Return the highest commercial-intent validated gaps from the past week, across all categories. Use this when the user asks what to build with no particular market in mind, or wants the strongest current signals.
- `search_gaps`: Search validated software opportunities by keyword. Each gap is a real, recurring user complaint scored for commercial intent (willingness to pay). Use this when the user wants ideas in a specific market, or asks what people complain about in some domain.
- `validate_idea`: Score a specific product idea against the complaint corpus: how many real complaints match it, how commercial they are, how confident the scoring is, and a verdict. Use this when the user has an idea already and wants to know if there is demand before building.
