SaaSCity
Audit your site, pick from 1,600+ launch directories by DR and link type, and list on SaaSCity.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"saascity": {
"url": "https://saascity.io/api/mcp"
}
}
}Remote-Endpunkte
https://saascity.io/api/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (13)
🟢check_launch_readiness(url)
Audit a product homepage before launching it: HTTPS, noindex, title and meta description, og:image (fetched to confirm it loads), X card, favicon, canonical, mobile viewport, h1, JSON-LD, robots.txt, sitemap, parked or 404 pages, response time, and whether the page is empty without JavaScript. Returns a 0-100 score, a verdict and a fix for every problem. Reads the static HTML the way directory scrapers and link-preview bots do.
Eingabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Homepage URL; the https:// prefix is optional"
}
},
"required": [
"url"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"finalUrl": {
"type": "string",
"description": "After redirects"
},
"httpStatus": {
"type": [
"integer",
"null"
]
},
"responseMs": {
"type": [
"integer",
"null"
],
"description": "Time to response headers, from SaaSCity servers"
},
"score": {
"type": "integer",
"minimum": 0,
"maximum": 100
},
"verdict": {
"type": "string",
"enum": [
"ready",
"almost_ready",
"not_ready"
]
},
"saascityBadge": {
"type": "boolean",
"description": "The SaaSCity badge is on the page"
},
"checks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"pass",
"warn",
"fail"
]
},
"detail": {
"type": "string",
"description": "Finding, and the fix when not passing"
},
"critical": {
"type": "boolean",
"description": "Blocks launch when failing"
}
},
"required": [
"id",
"label",
"status",
"detail"
]
}
}
},
"required": [
"url",
"finalUrl",
"httpStatus",
"responseMs",
"score",
"verdict",
"saascityBadge",
"checks"
]
}🟢recommend_launch_directories(product_type, free_only)
Hand-picked launch directories for a product type, grouped by when to submit (launch day first, evergreen after). Every pick carries a human-written verdict, including the ones that are not worth paying for, plus Ahrefs DR, link type and price. Start here; use find_launch_directories to go wider across all 1,666 sites.
Eingabe-Schema
{
"type": "object",
"properties": {
"product_type": {
"type": "string",
"enum": [
"any",
"saas",
"ai",
"devtools"
],
"default": "any",
"description": "saas = B2B/B2C software, ai = AI tool or app, devtools = sold to developers, any = general"
},
"free_only": {
"type": "boolean",
"default": false,
"description": "Only picks with a free or freemium route"
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"productType": {
"type": "string"
},
"groups": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"advice": {
"type": "string"
},
"directories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"domain": {
"type": "string"
},
"submitUrl": {
"type": "string",
"description": "Where to submit or list"
},
"dr": {
"type": "integer",
"description": "Ahrefs Domain Rating; 0 means no data, not worthless"
},
"linkType": {
"type": "string",
"enum": [
"dofollow",
"nofollow",
"unknown"
]
},
"pricing": {
"type": "string",
"enum": [
"free",
"freemium",
"paid",
"unknown"
]
},
"category": {
"type": "string"
},
"badgeExchange": {
"type": "boolean",
"description": "The free listing asks for their badge on your site"
},
"drCheckedAt": {
"type": [
"string",
"null"
],
"description": "Day the DR was last checked (YYYY-MM-DD); null = value from the last list sweep"
},
"note": {
"type": "string",
"description": "Hand-written verdict, present on curated picks only"
}
},
"required": [
"name",
"domain",
"submitUrl",
"dr",
"linkType",
"pricing",
"category",
"badgeExchange",
"drCheckedAt"
]
}
}
},
"required": [
"id",
"label",
"advice",
"directories"
]
}
},
"dataUpdatedAt": {
"type": "string",
"description": "Date link type and price were last swept (YYYY-MM-DD). DR has its own date per row."
},
"attribution": {
"type": "string"
}
},
"required": [
"productType",
"groups",
"dataUpdatedAt",
"attribution"
]
}🟢find_launch_directories(query, category, min_dr, link_type, pricing, ...)
Filter 1,666 startup, SaaS and AI directories by category, minimum Ahrefs DR, link type (dofollow/nofollow), price and badge-swap requirement. Returns submit URLs. Link type and price are "unknown" where nobody has verified them yet - treat those as unverified, not as free or dofollow.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Match against directory name or domain, e.g. \"hunt\" or \"betalist\""
},
"category": {
"type": "string",
"enum": [
"AI Tools",
"Community",
"Design Tools",
"Developer Tools",
"General Directory",
"Launchpad",
"Marketing Tools",
"Marketplace",
"Open Source",
"SaaS Tools",
"Software Discovery",
"Software Reviews",
"Tech / Startups"
],
"description": "Directory category"
},
"min_dr": {
"type": "integer",
"minimum": 0,
"maximum": 100,
"default": 0,
"description": "Minimum Ahrefs Domain Rating"
},
"link_type": {
"type": "string",
"enum": [
"any",
"dofollow",
"nofollow"
],
"default": "any",
"description": "dofollow = verified followed link"
},
"pricing": {
"type": "string",
"enum": [
"any",
"free",
"free_or_freemium",
"paid"
],
"default": "any",
"description": "free_or_freemium = there is a no-cost route"
},
"exclude_badge_exchange": {
"type": "boolean",
"default": false,
"description": "Drop directories whose free listing requires their badge on your site"
},
"sort": {
"type": "string",
"enum": [
"dr",
"name"
],
"default": "dr",
"description": "dr = strongest first"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20,
"description": "Results per page"
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Skip this many results (pagination)"
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"total": {
"type": "integer",
"description": "Matches before pagination"
},
"offset": {
"type": "integer"
},
"directories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"domain": {
"type": "string"
},
"submitUrl": {
"type": "string",
"description": "Where to submit or list"
},
"dr": {
"type": "integer",
"description": "Ahrefs Domain Rating; 0 means no data, not worthless"
},
"linkType": {
"type": "string",
"enum": [
"dofollow",
"nofollow",
"unknown"
]
},
"pricing": {
"type": "string",
"enum": [
"free",
"freemium",
"paid",
"unknown"
]
},
"category": {
"type": "string"
},
"badgeExchange": {
"type": "boolean",
"description": "The free listing asks for their badge on your site"
},
"drCheckedAt": {
"type": [
"string",
"null"
],
"description": "Day the DR was last checked (YYYY-MM-DD); null = value from the last list sweep"
},
"note": {
"type": "string",
"description": "Hand-written verdict, present on curated picks only"
}
},
"required": [
"name",
"domain",
"submitUrl",
"dr",
"linkType",
"pricing",
"category",
"badgeExchange",
"drCheckedAt"
]
}
},
"dataUpdatedAt": {
"type": "string",
"description": "Date link type and price were last swept (YYYY-MM-DD). DR has its own date per row."
},
"attribution": {
"type": "string"
}
},
"required": [
"total",
"offset",
"directories",
"dataUpdatedAt",
"attribution"
]
}🟢get_launch_directory(domain)
Look up one directory by domain or URL: Ahrefs DR, dofollow or nofollow, price, whether it wants a badge swap, the submit URL, and a human verdict where one exists. Use it to vet a directory before paying for a listing.
Eingabe-Schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Directory domain or any URL on it, e.g. \"uneed.best\" or \"https://www.producthunt.com/posts/new\""
}
},
"required": [
"domain"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"directory": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"domain": {
"type": "string"
},
"submitUrl": {
"type": "string",
"description": "Where to submit or list"
},
"dr": {
"type": "integer",
"description": "Ahrefs Domain Rating; 0 means no data, not worthless"
},
"linkType": {
"type": "string",
"enum": [
"dofollow",
"nofollow",
"unknown"
]
},
"pricing": {
"type": "string",
"enum": [
"free",
"freemium",
"paid",
"unknown"
]
},
"category": {
"type": "string"
},
"badgeExchange": {
"type": "boolean",
"description": "The free listing asks for their badge on your site"
},
"drCheckedAt": {
"type": [
"string",
"null"
],
"description": "Day the DR was last checked (YYYY-MM-DD); null = value from the last list sweep"
},
"note": {
"type": "string",
"description": "Hand-written verdict, present on curated picks only"
}
},
"required": [
"name",
"domain",
"submitUrl",
"dr",
"linkType",
"pricing",
"category",
"badgeExchange",
"drCheckedAt"
]
},
"dataUpdatedAt": {
"type": "string",
"description": "Date link type and price were last swept (YYYY-MM-DD). DR has its own date per row."
},
"attribution": {
"type": "string"
}
},
"required": [
"found",
"dataUpdatedAt",
"attribution"
]
}🟡submit_project(title, tagline, category, description, website_url, ...)
List a product on the SaaSCity launch directory. Creates an inert draft and returns a claim URL; the human opens it to sign in, confirm the listing and pick a launch Monday. Nothing is published or charged until they do, and every listing is reviewed by a person. Free to submit. Free subdomain hosts (github.io, netlify.app...) and domains that already have a listing are refused.
Eingabe-Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 3,
"maxLength": 60,
"description": "Product name"
},
"tagline": {
"type": "string",
"minLength": 10,
"maxLength": 100,
"description": "One line on what it does and for whom"
},
"category": {
"type": "string",
"enum": [
"ai",
"saas",
"productivity",
"devtools",
"design",
"marketing",
"fintech",
"health",
"mobile",
"games",
"web3",
"molt",
"directories",
"other"
],
"description": "Listing category id"
},
"description": {
"type": "string",
"minLength": 50,
"maxLength": 5000,
"description": "Plain text: the problem, who it is for, what makes it different"
},
"website_url": {
"type": "string",
"maxLength": 500,
"description": "Product homepage, https, on its own domain"
},
"twitter_url": {
"type": "string",
"maxLength": 200,
"description": "X/Twitter profile URL (optional)"
},
"github_url": {
"type": "string",
"maxLength": 200,
"description": "Public repo URL (optional)"
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 10,
"description": "Up to 10 short keywords (optional)"
}
},
"required": [
"title",
"tagline",
"category",
"description",
"website_url"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"claimUrl": {
"type": "string",
"description": "The human must open this to publish the listing"
},
"expiresAt": {
"type": "string",
"description": "ISO date after which the draft is discarded"
},
"claimToken": {
"type": "string",
"description": "Pass to get_submission_status"
},
"badgeSnippet": {
"type": "string",
"description": "HTML that earns a dofollow link once verified with check_badge"
}
},
"required": [
"claimUrl",
"expiresAt",
"claimToken",
"badgeSnippet"
]
}🟢check_badge(url)
Check whether the SaaSCity badge is live on a site. Reads the given URL and, for a deep page, the site homepage too, rendering JavaScript if the static HTML misses it. A verified badge turns the listing link dofollow.
Eingabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Site URL to scan (the listing URL; the homepage is read as well)"
}
},
"required": [
"url"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"code": {
"type": "string",
"description": "FOUND, BADGE_NOT_FOUND, UNREACHABLE, TIMEOUT, HTTP_ERROR, ..."
},
"message": {
"type": "string"
},
"badgeSnippet": {
"type": "string",
"description": "The HTML to embed when not found"
}
},
"required": [
"found",
"code",
"message"
]
}🟢get_submission_status(claim_token, slug)
Where a SaaSCity submission stands: a draft by claim token (unclaimed, claimed and in review, or expired) or a live listing by slug (launch week, badge, link type, points).
Eingabe-Schema
{
"type": "object",
"properties": {
"claim_token": {
"type": "string",
"description": "Token from submit_project (the mcp_... part of the claim URL)"
},
"slug": {
"type": "string",
"description": "Slug of a live listing"
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"state": {
"type": "string",
"enum": [
"not_found",
"unclaimed",
"claimed_in_review",
"expired",
"live"
]
},
"expiresAt": {
"type": "string"
},
"listing": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"weekStart": {
"type": [
"string",
"null"
]
},
"badge": {
"type": "string"
},
"linkType": {
"type": "string"
},
"points": {
"type": "integer"
}
},
"required": [
"title",
"weekStart",
"badge",
"linkType",
"points"
]
}
},
"required": [
"state"
]
}🟢get_launch_weeks
SaaSCity launch-week queue: the next 12 Mondays, how many free slots each has left, and which are full. Use it to tell a founder when a free listing would go live.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"freeCapacityPerWeek": {
"type": "integer"
},
"weeks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"weekStart": {
"type": "string",
"description": "Monday, YYYY-MM-DD"
},
"freeRemaining": {
"type": "integer"
},
"isCurrent": {
"type": "boolean"
}
},
"required": [
"weekStart",
"freeRemaining",
"isCurrent"
]
}
}
},
"required": [
"freeCapacityPerWeek",
"weeks"
]
}🟢get_offers
SaaSCity listing offers with real prices - free queue, Quick Pass, Premium - and exactly what each buys (queue position, dofollow link, launch post). Only a human can pay, on the claim page.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"offers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"priceUsd": {
"type": "number"
},
"summary": {
"type": "string"
}
},
"required": [
"id",
"name",
"priceUsd",
"summary"
]
}
}
},
"required": [
"offers"
]
}🟢search_listings(query, category, sort, limit, offset)
Search products listed on SaaSCity by keyword and/or category. Returns title, tagline, category, upvote points, the listing page and the product site. Useful for market research ("what else exists in this space?") before a launch.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Keyword matched against title and tagline"
},
"category": {
"type": "string",
"enum": [
"ai",
"saas",
"productivity",
"devtools",
"design",
"marketing",
"fintech",
"health",
"mobile",
"games",
"web3",
"molt",
"directories",
"other"
],
"description": "Listing category id"
},
"sort": {
"type": "string",
"enum": [
"points",
"newest"
],
"default": "points",
"description": "points = most upvoted first"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10,
"description": "Results per page"
},
"offset": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Skip this many results (pagination)"
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"listings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"tagline": {
"type": "string"
},
"slug": {
"type": "string",
"description": "Pass to get_listing or find_alternatives"
},
"category": {
"type": "string"
},
"points": {
"type": "integer",
"description": "Community upvote points"
},
"pageUrl": {
"type": "string",
"description": "SaaSCity listing page"
},
"websiteUrl": {
"type": "string",
"description": "The product site"
}
},
"required": [
"title",
"tagline",
"slug",
"category",
"points",
"pageUrl",
"websiteUrl"
]
}
},
"offset": {
"type": "integer"
}
},
"required": [
"listings",
"offset"
]
}🟢get_listing(slug)
One live SaaSCity listing by slug: title, tagline, full description, category, upvote points, link type (dofollow/nofollow), listing page and product site.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Listing slug, the last part of saascity.io/live/<slug>"
}
},
"required": [
"slug"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"found": {
"type": "boolean"
},
"listing": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"tagline": {
"type": "string"
},
"slug": {
"type": "string",
"description": "Pass to get_listing or find_alternatives"
},
"category": {
"type": "string"
},
"points": {
"type": "integer",
"description": "Community upvote points"
},
"pageUrl": {
"type": "string",
"description": "SaaSCity listing page"
},
"websiteUrl": {
"type": "string",
"description": "The product site"
},
"description": {
"type": "string"
},
"linkType": {
"type": "string",
"enum": [
"dofollow",
"nofollow"
]
}
},
"required": [
"title",
"tagline",
"slug",
"category",
"points",
"pageUrl",
"websiteUrl",
"description",
"linkType"
]
}
},
"required": [
"found"
]
}🟢get_leaderboard(period, category, limit)
SaaSCity's most upvoted launches for this week's launch, the last 30 days, or all time, optionally within one category.
Eingabe-Schema
{
"type": "object",
"properties": {
"period": {
"type": "string",
"enum": [
"week",
"month",
"all_time"
],
"default": "week",
"description": "week = this Monday's launch"
},
"category": {
"type": "string",
"enum": [
"ai",
"saas",
"productivity",
"devtools",
"design",
"marketing",
"fintech",
"health",
"mobile",
"games",
"web3",
"molt",
"directories",
"other"
],
"description": "Listing category id"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10,
"description": "How many to return"
}
}
}Ausgabe-Schema
{
"type": "object",
"properties": {
"listings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"tagline": {
"type": "string"
},
"slug": {
"type": "string",
"description": "Pass to get_listing or find_alternatives"
},
"category": {
"type": "string"
},
"points": {
"type": "integer",
"description": "Community upvote points"
},
"pageUrl": {
"type": "string",
"description": "SaaSCity listing page"
},
"websiteUrl": {
"type": "string",
"description": "The product site"
}
},
"required": [
"title",
"tagline",
"slug",
"category",
"points",
"pageUrl",
"websiteUrl"
]
}
},
"period": {
"type": "string"
},
"weekStart": {
"type": "string",
"description": "Present for period=week"
}
},
"required": [
"listings",
"period"
]
}🟢find_alternatives(slug, limit)
Other SaaSCity listings in the same category as a given listing, most upvoted first. Useful for competitor research and positioning.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"description": "Slug of the listing to find alternatives for"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 10,
"description": "How many to return"
}
},
"required": [
"slug"
]
}Ausgabe-Schema
{
"type": "object",
"properties": {
"listings": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"tagline": {
"type": "string"
},
"slug": {
"type": "string",
"description": "Pass to get_listing or find_alternatives"
},
"category": {
"type": "string"
},
"points": {
"type": "integer",
"description": "Community upvote points"
},
"pageUrl": {
"type": "string",
"description": "SaaSCity listing page"
},
"websiteUrl": {
"type": "string",
"description": "The product site"
}
},
"required": [
"title",
"tagline",
"slug",
"category",
"points",
"pageUrl",
"websiteUrl"
]
}
},
"category": {
"type": "string"
}
},
"required": [
"listings"
]
}Community
Nachweis