LaunchSignal

Public, no-auth Streamable HTTP MCP server for browsing approved product launches, retrieving product details, and submitting products for review.

Hosted MCP Server

npx add-mcp 'https://launchsignal.ai/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

Public JSON API

Machine-readable listing API. Prefer these endpoints over the HTML form — the form at /submit stays for humans. OpenAPI: /openapi.json. Public MCP: /mcp (Streamable HTTP).

Base

https://launchsignal.ai · JSON request/response · CORS: public GET (*); POST allows browser/agent Origins with Content-Type / Accept.

POST /api/v1/products

Submit a listing (pending review). Fields: name, url, description, category, email, optional logo_url. Categories: SaaS, AI, Developer Tools, Design, Marketing, Productivity, Other.

curl -sS -X POST https://launchsignal.ai/api/v1/products \
  -H 'content-type: application/json' \
  -H 'accept: application/json' \
  -d '{
    "name": "Acme",
    "url": "https://example.com",
    "description": "Does one useful thing.",
    "category": "AI",
    "email": "you@example.com"
  }'

GET /api/v1/products

List approved products. Query: limit (1–100, default 50), cursor or offset, optional category.

curl -sS 'https://launchsignal.ai/api/v1/products?limit=10&category=AI'

GET /api/v1/products/:slug

Detail for an approved listing. 404 if missing or not approved.

curl -sS https://launchsignal.ai/api/v1/products/acme

POST /api/v1/products/:slug/boost

Boost an approved listing. Body: {"plan":"priority"|"featured"} (no amounts — server-side only). Submit stays free; boost after approve (or on an existing approved slug). Same logic as POST /api/checkout.

curl -sS -X POST https://launchsignal.ai/api/v1/products/acme/boost   -H 'content-type: application/json'   -H 'accept: application/json'   -d '{"plan":"priority"}'

Backlink perk (text or badge)

Flow for agents: submit → wait for approved → add any <a href> to launchsignal.ai on the product homepage (plain text link is enough; image badge optional) → verify. First success grants 7 days of free Priority placement once; while verified the listing shows “Verified”. Snippets use rel="nofollow" (any rel passes verification); listing outbound links are always rel="ugc nofollow", or rel="sponsored" for paid boosts. Rechecked weekly; if the link disappears, verification is removed (Priority is kept). Submit responses include hint and next_steps.

Preferred text snippet:

<a href="https://launchsignal.ai/l/acme?utm_source=backlink">Listed on LaunchSignal</a>

Optional image badge: GET /badge/:slug.svg (light) · GET /badge/:slug.svg?theme=dark — approved slugs only.

<a href="https://launchsignal.ai/l/acme?utm_source=badge"><img src="https://launchsignal.ai/badge/acme.svg" alt="Listed on LaunchSignal" width="200" height="54"></a>

POST /api/v1/products/:slug/verify-backlink

Fetches the listing url only (5s timeout, 512KB, text/html, ≤3 redirects, public hosts only) and looks for a link to launchsignal.ai / www.launchsignal.ai. Limit 3 checks per slug per UTC day.

curl -sS -X POST https://launchsignal.ai/api/v1/products/acme/verify-backlink -H 'accept: application/json'

Legacy

POST /api/submit still works (form redirects or JSON). Prefer /api/v1/products.

Error codes

  • missing_fields — required field empty
  • invalid_url / invalid_logo_url
  • invalid_email / invalid_category
  • invalid_cursor / invalid_limit
  • invalid_plan — plan must be priority or featured
  • not_found — missing or not approved
  • not_approved — boost requires approved status
  • rate_limited — verify-backlink limit (3/slug/day)
  • stripe_not_configured — stripe mode without keys
  • server_error

MCP — https://launchsignal.ai/mcp

Public, authless Model Context Protocol server (Streamable HTTP, JSON). Same listing logic as the REST API — no OAuth this round. Tools: submit_product, list_products, get_product, boost_product (slug + plan; demo / no charge when PAYMENTS_MODE=mock), verify_backlink (slug — same as the verify-backlink endpoint).

{
  "mcpServers": {
    "launchsignal": {
      "url": "https://launchsignal.ai/mcp"
    }
  }
}

Notes

Submit is always free; Priority/Featured use the boost endpoint after approve (not on submit). MCP OAuth deferred. See also /llms.txt and /openapi.json.