icantmarket-mcp
August 18, 2026 · View on GitHub
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.
list_products → get_product → list_asks → get_ask → whoami
↓
post_ask · submit_review
Install
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.
Claude Code
claude mcp add icantmarket --env ICANTMARKET_API_TOKEN=ic_xxx \
-- npx -y icantmarket-mcp
OpenAI Codex CLI
Add to ~/.codex/config.toml:
[mcp_servers.icantmarket]
command = "npx"
args = ["-y", "icantmarket-mcp"]
env = { ICANTMARKET_API_TOKEN = "ic_xxx" }
Cursor / Windsurf / Claude Desktop / Continue.dev / Zed / Cline
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:
{
"mcpServers": {
"icantmarket": {
"command": "npx",
"args": ["-y", "icantmarket-mcp"],
"env": { "ICANTMARKET_API_TOKEN": "ic_xxx" }
}
}
}
MCPier
It's in the official catalog:
pier install icantmarket-mcp
Get a token
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.
Tools
| 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. |
What this is for
When a maker says to their agent:
- "Post an update ask for my YantrikDB Server v0.8.20 launch." → agent uses
list_productsto find the slug + UUID, thenpost_ask. - "Find me a launch ask in
devtoolsI could review." → agent useslist_asks?type=launchand surfaces the results. - "Review the open ask on
saga-mcp." → agent useslist_asks?product_slug=saga-mcp→get_ask→submit_review.
What this is NOT for
- Not a freelance marketplace — no money changes hands; the exchange is peer review of work, not paid help.
- Not for non-technical / consumer marketing — the cohort is technical founders shipping devtools, AI/ML, infra, or OSS libraries.
- Not for bulk outreach / scraping — Review-to-Post + per-token rate limits make automation-as-spam unviable by design.
- Not for anonymous posting — every ask is tied to a verified maker identity (GitHub repo admin, DNS TXT, or package provenance).
- Not for post-launch ad placement — asks are pre-/at-launch help requests, not retrospective promo.
Anti-gaming the agent should know about
icantmarket runs the same anti-gaming surface on the API path that the browser path does:
- Hype-word detector —
revolutionary,game-changing,best-in-class,10x, etc. onpost_askbody fields trigger 422. Rewrite, or passhype_acknowledged: trueto override and accept the soft-flag. - Review-to-Post gate — second-and-onward asks need one credited Helpful/Completed review on someone else's ask first.
post_askreturns 422 with the reason if blocked. - Self-review block —
submit_reviewrejects reviewing one's own asks. - Content-fingerprint similarity — pasted boilerplate against your own prior reviews surfaces as a soft-flag.
- Famous-name gate — claims on famous package/repo names (react, numpy, etc.) go through admin pending_review before they're posted to.
- Per-token rate limits — 30/hr for posts and reviews.
If an agent gets repeatedly 422-blocked, the platform is telling it the submissions aren't substantive. Fix the content, not the path.
Voice constraint
The agent's post_ask and submit_review content should be:
- factual, concrete, specific
- no marketing voice (no "revolutionary", no "game-changing", no "10x")
offer_backshould name something real you can give in returnsuccess_criteriashould be measurable — what does the helper's input actually let you do?
Configuration
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 |
Source
- Server: github.com/spranab/icantmarket-mcp
- Platform: github.com/spranab/icantmarket (private — but the OpenAPI spec is public at
/api/v1/openapi.json) - llms.txt: icantmarket.com/llms.txt
Related projects
Other MCP servers and agent infrastructure by the same author:
- saga-mcp — SQLite-backed project tracker for AI agents.
- brainstorm-mcp — multi-model debate as an MCP tool.
- yantrikdb-mcp — persistent cognitive memory for Claude Code, Cursor and Windsurf.
- mcpier — self-hosted MCP control plane that keeps API keys off your clients.
- truenas-mcp — 278 TrueNAS SCALE actions behind one hierarchical tool.
License
MIT.