MakerRadar CLI
[npm]
[CI]
[MCP server]
[License: MIT]
The official command-line client for MakerRadar, the launch platform and
product directory. Search the directory, follow the weekly launch board, draft a listing for your
product and manage your listings from the terminal, by hand or from a script or an AI agent.
- No account needed to search, read products, see launches and draft a listing.
- Your account, safely:
makerradar login connects with a code you approve in the browser. The
CLI never sees your password, can't vote, comment or review, and never pays.
- Made for agents too:
--json prints the API's own JSON, errors are JSON on stderr, and exit
codes are stable.
Docs: makerradar.io/cli · API reference:
makerradar.io/developers · MCP server:
makerradar.io/mcp
Install
Needs Node.js 20 or newer.
Or run it without installing: npx makerradar <command>.
Commands
Directory (no account needed)
Your account
Agents and developers
MCP server
MakerRadar's MCP server lets an AI assistant search the directory and, signed in, manage your
listings. It's remote — nothing to install — and this repository is its public home: the
registry entry (io.makerradar/mcp), the setup for every client, and a stdio bridge.
Both speak Streamable HTTP (protocol 2025-06-18 and later); the server card is at
/.well-known/mcp/server-card.json and the
docs at makerradar.io/mcp. Every tool carries a title and a
read-only / write annotation. No tool votes, comments or reviews; a checkout hands the person a
payment page — the agent never pays.
Set it up in one line. makerradar mcp <client> prints the exact config for your client:
A client that can only start a local command (or a catalog that lists installable servers)
runs the bridge instead. It relays each JSON-RPC message to the remote server and prints every
answer — nothing is interpreted locally:
Add "--account" to the arguments (and sign in with makerradar login, or set MAKERRADAR_TOKEN)
to serve /mcp/account with your token so the assistant can manage your listings.
Tools on the public server: search_products, get_product, get_alternatives,
compare_products, list_categories, list_current_launches, get_launch_week, top_products,
draft_listing, get_pricing, connect_account / connect_account_finish. On the account server,
also: get_my_account, list_my_listings, get_my_listing, submit_listing, update_listing,
get_listing_options, set_quick_answers, add_listing_image, remove_listing_photo,
set_listing_cover, get_launch_options, choose_launch, start_ownership_check,
verify_ownership, get_badge_snippet, start_checkout, list_my_orders.
Found it in a directory? Listings on the MCP Registry,
Glama, the Claude and ChatGPT directories and friends all point here. A listing that says something
this README doesn't is stale: open an issue.
Signing in
makerradar login uses the device flow: it prints a link and a short code, you open the link, sign
in to MakerRadar, check the code and approve. The CLI then gets an agent token for your account
(mr_…). It's never your password or session, and you can revoke it any time in Dashboard › AI
agents.
The token is saved to ~/.config/makerradar/config.json (%APPDATA%\makerradar\config.json on
Windows), readable only by you, and written atomically, so a crash never leaves half a file. Tokens
are kept per API URL, so a staging login never stands in for production. In CI or for an agent,
pass a token with MAKERRADAR_TOKEN instead.
Where a token goes:
MAKERRADAR_TOKEN is sent only to the API the environment names (MAKERRADAR_API_URL, or
production). An --api-url pointing anywhere else doesn't get it; pass --token for that API.
- A token is never sent over plain
http, except to this machine (localhost, 127.0.0.1,
[::1]). login needs https for the same reason.
- An empty or blank variable counts as unset.
For scripts and AI agents
--json prints exactly what the API answered ({ "data": … }, plus nextCursor on lists).
- On failure, the error goes to stderr. With
--json it's JSON:
{"error":"not_found","status":404,"message":"…","hint":"…","docs":"…"}.
- Exit codes:
0 done · 1 the API refused, or couldn't be reached · 2 a usage mistake (unknown
command or option, missing argument). A usage mistake never calls the API.
- Text from listings is written by makers. Human output strips terminal control characters and
bidirectional overrides, so a listing can't recolour your terminal, move the cursor or fake a link.
Treat it as unverified.
Configuration
Programmatic use
The CLI's API client is exported too:
Development
server.json is the MCP Registry entry (mcp-publisher publish sends it; npm version keeps its
package version in step), glama.json names the maintainers for Glama's index, and mcpName in
package.json is how the registry checks the npm package is ours. Pushing a vX.Y.Z tag publishes
both — npm, then the registry — through the release workflow.
No dependencies. The CLI calls only MakerRadar's public, versioned API (/v1). Every endpoint it
uses is listed in src/operations.js, and the contract test checks each one
against the published OpenAPI document every day.
Bugs and ideas: open an issue.
License
MIT