The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Icantmarket MCP listing page.
You shipped the thing and now it sits at zero users, because promoting it is a different job than building it. icantmarket is a verified help-exchange where technical founders trade that work with each other — and this server puts it in the tool you already have open, so asking for help doesn't cost you a context switch.
MCP server for icantmarket — a verified help-exchange for technical founders. Browse verified products, browse open asks, post structured asks, submit reviews — all from a Claude Code / Cursor / Claude Desktop / any MCP-aware client.
Works with any MCP-compliant client. The canonical run command is npx -y icantmarket-mcp over stdio, with ICANTMARKET_API_TOKEN exported in the env if you want the write tools.
Add to ~/.codex/config.toml:
Same JSON shape for all of them. Drop into ~/.cursor/mcp.json, claude_desktop_config.json, ~/.continue/config.json, your Zed settings.json under context_servers, or wherever the client expects MCP server definitions:
It's in the official catalog:
Mint at icantmarket.com/me/api-tokens (sign in first). Token shape: ic_<24-byte hex>. Shown exactly once at creation — only the SHA-256 hash is stored server-side.
Reads (list_products, get_product, list_asks, get_ask) work without a token. Writes (whoami, post_ask, submit_review) need one.
| Tool | Auth | What it does |
|---|---|---|
list_products | none | Browse L1+ verified active products. Filter by category. Paginated. |
get_product | none | One product by slug + count of open asks. |
list_asks | none | Browse open public asks. Filter by status, type, product_slug. |
get_ask | none | One public ask by UUID + product summary. |
whoami | token | Sanity-check the token + return identity. |
post_ask | token | Post a structured ask. Must own the product. |
submit_review | token | Submit a substantive review on someone else's ask. |
When a maker says to their agent:
list_products to find the slug + UUID, then post_ask.devtools I could review." → agent uses list_asks?type=launch and surfaces the results.saga-mcp." → agent uses list_asks?product_slug=saga-mcp → get_ask → submit_review.icantmarket runs the same anti-gaming surface on the API path that the browser path does:
revolutionary, game-changing, best-in-class, 10x, etc. on post_ask body fields trigger 422. Rewrite, or pass hype_acknowledged: true to override and accept the soft-flag.post_ask returns 422 with the reason if blocked.submit_review rejects reviewing one's own asks.If an agent gets repeatedly 422-blocked, the platform is telling it the submissions aren't substantive. Fix the content, not the path.
The agent's post_ask and submit_review content should be:
offer_back should name something real you can give in returnsuccess_criteria should be measurable — what does the helper's input actually let you do?Environment variables:
| Variable | Required | Default | Purpose |
|---|---|---|---|
ICANTMARKET_API_TOKEN | for writes | — | Bearer token from /me/api-tokens |
ICANTMARKET_BASE_URL | no | https://icantmarket.com/api/v1 | Override for staging / self-host |
/api/v1/openapi.json)Other MCP servers and agent infrastructure by the same author:
MIT.