check_launch_readiness
A preflight audit of any URL. Scores the site, names every reason a listing would be sent back, and hands back the fix.
This is the tool worth wiring into an agent first. Give it a URL and it does, in one call, what a reviewer would do by hand: read the page, look for the backlink badge, check whether the product is already listed or eligible for a relaunch, draft a listing from the site's own copy, and report which launch weeks still have room.
Nothing is created. It is a read only audit, so it is safe to run on a competitor's site, on a staging URL, or on something you are only thinking about launching.
Parameters
urlstringrequiredThe product URL to audit. Bare hosts are fine, example.com is normalised to https://example.com. The site has to
be reachable from the public internet: a URL behind a login or an anti bot interstitial fails fast with a clear
message rather than guessing.
Response
urlstringThe normalised URL that was actually fetched, after redirects.
scorenumberA 0 to 100 roll up of the checks below. Treat it as a summary for a human, not as a gate: the individual checks are what you act on.
checksobject[]One entry per check.
+Fields on each check
idstringStable identifier, safe to branch on in code.
labelstringHuman readable name of the check.
statuspass | warn | failpass means nothing to do. warn means it will not block you but a reviewer will notice. fail means fix it
before submitting.
detailstringWhat was actually found.
fixstringPresent when there is something to do. Written to be actionable on its own, including the exact HTML to paste for the badge check.
suggestedListingobjectA draft listing generated from the site: name, tagline, description and pricing. Pass it straight into
submit_product, or edit it first.
suggestedCategoriesstring[]Up to three categories that fit the product.
nextFreeWeeksobject[]Upcoming launch weeks that still have slots, so an agent can tell you when you could realistically go live.
What it checks
Backlink badge
Free launches carry a "Featured on Nick Launches" badge on the maker's site. The check crawls the page and looks for a link back to us.
A link that is present but not yet pointed at your product page is reported as a pass with a note,
because before you submit there is no product page to point at. No link at all is a fail, and the
fix carries the snippet:
<a href="https://nicklaunches.com/" target="_blank" rel="noopener"
><img src="https://nicklaunches.com/badges/featured.png" alt="Featured on Nick Launches" width="244" height="56"
/></a>Badges rendered client side by JavaScript cannot be seen by a server side crawl, so they read as absent here. If that is your case, install the plain HTML snippet above.
Duplicate and relaunch eligibility
The URL is canonicalised and matched against everything already listed. Three outcomes matter:
already listed, eligible for a relaunch, or inside the relaunch cooldown, in which case the detail
carries the date you become eligible again.
Listing completeness
Whether the page gives us enough to build a good listing: a name, a usable tagline, a description, and images worth showing, meaning a logo, an Open Graph image and screenshot candidates.
Site metadata
Title, description and Open Graph tags on the page itself. A site with no og:image gets a listing
with no hero image, and this is where you find that out.
Worked example
Check whether https://example.com is ready to launch on Nick Launches.{
"url": "https://example.com",
"score": 68,
"checks": [
{
"id": "badge",
"label": "Backlink badge",
"status": "fail",
"detail": "No link to Nick Launches detected on https://example.com",
"fix": "Add this to your homepage, then rerun the check: <a href=\"https://nicklaunches.com/\" target=\"_blank\" rel=\"noopener\"><img src=\"https://nicklaunches.com/badges/featured.png\" alt=\"Featured on Nick Launches\" width=\"244\" height=\"56\" /></a>"
},
{
"id": "duplicate",
"label": "Duplicate check",
"status": "pass",
"detail": "No existing listing matches this URL."
},
{
"id": "listing",
"label": "Listing completeness",
"status": "warn",
"detail": "Found a name and a tagline, but no screenshot candidates.",
"fix": "Add an og:image to your homepage, or upload a screenshot on the draft."
},
{
"id": "metadata",
"label": "Site metadata",
"status": "pass",
"detail": "Title, description and og:title are present."
}
],
"suggestedListing": {
"name": "Example",
"tagline": "Draft blog posts from a single outline",
"description": "Example turns an outline into a finished draft...",
"pricing": "freemium"
},
"suggestedCategories": ["AI Writing", "Content", "Productivity"],
"nextFreeWeeks": [
{ "week": "2026-08-10", "slotsLeft": 4 },
{ "week": "2026-08-17", "slotsLeft": 9 }
]
}Read that as a work list: install the badge, add an og:image, then submit against the week starting
10 August.
The badge is the check worth caring about most. It is the one that blocks a free launch, and it is a two minute fix while the agent still has the context to make it.
Rate limit
Ten calls per hour per connection, or per IP when the caller is anonymous. The audit performs an
outbound crawl and a model call, so it is metered more tightly than the read tools. Exceeding it
returns TOO_MANY_REQUESTS; see Rate limits.
Notes
This tool never creates anything. It does not open a draft, reserve a week, or notify anyone. Opening a draft is
submit_product, and even that stops before publishing.
A site that cannot be fetched returns an error naming the reason (timeout, non 200 status, anti bot challenge) rather than a score of zero, so an agent does not mistake "unreachable" for "bad".
REST equivalent
POST /api/v1/launch-readiness/, documented on Launch readiness.