MCP 서버

SaaSCity

io.saascity/saascity
마케팅 및 광고 검색 및 리서치 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Audits website launch readiness, researches launch directories and competitors, and submits or monitors product listings in a launch directory.

check_badge
Check the SaaSCity badge
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Site URL to scan (the listing URL; the homepage is read as well)'}}}
출력 스키마
{'type': 'object', 'required': ['found', 'code', 'message'], 'properties': {'code': {'type': 'string', 'description': 'FOUND, BADGE_NOT_FOUND, UNREACHABLE, TIMEOUT, HTTP_ERROR, ...'}, 'found': {'type': 'boolean'}, 'message': {'type': 'string'}, 'badgeSnippet': {'type': 'string', 'description': 'The HTML to embed when not found'}}}
check_launch_readiness
Check launch readiness
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.
읽기 전용 외부 접근 가능 멱등성
입력 스키마
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Homepage URL; the https:// prefix is optional'}}}
출력 스키마
{'type': 'object', 'required': ['url', 'finalUrl', 'httpStatus', 'responseMs', 'score', 'verdict', 'saascityBadge', 'checks'], 'properties': {'url': {'type': 'string'}, 'score': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'checks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'status', 'detail'], 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'detail': {'type': 'string', 'description': 'Finding, and the fix when not passing'}, 'status': {'enum': ['pass', 'warn', 'fail'], 'type': 'string'}, 'critical': {'type': 'boolean', 'description': 'Blocks launch when failing'}}}}, 'verdict': {'enum': ['ready', 'almost_ready', 'not_ready'], 'type': 'string'}, 'finalUrl': {'type': 'string', 'description': 'After redirects'}, 'httpStatus': {'type': ['integer', 'null']}, 'responseMs': {'type': ['integer', 'null'], 'description': 'Time to response headers, from SaaSCity servers'}, 'saascityBadge': {'type': 'boolean', 'description': 'The SaaSCity badge is on the page'}}}
find_alternatives
Find alternatives to a listing
Other SaaSCity listings in the same category as a given listing, most upvoted first. Useful for competitor research and positioning.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Slug of the listing to find alternatives for'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'How many to return'}}}
출력 스키마
{'type': 'object', 'required': ['listings'], 'properties': {'category': {'type': 'string'}, 'listings': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'tagline', 'slug', 'category', 'points', 'pageUrl', 'websiteUrl'], 'properties': {'slug': {'type': 'string', 'description': 'Pass to get_listing or find_alternatives'}, 'title': {'type': 'string'}, 'points': {'type': 'integer', 'description': 'Community upvote points'}, 'pageUrl': {'type': 'string', 'description': 'SaaSCity listing page'}, 'tagline': {'type': 'string'}, 'category': {'type': 'string'}, 'websiteUrl': {'type': 'string', 'description': 'The product site'}}}}}}
find_launch_directories
Find launch directories
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'sort': {'enum': ['dr', 'name'], 'type': 'string', 'default': 'dr', 'description': 'dr = strongest first'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Results per page'}, 'query': {'type': 'string', 'description': 'Match against directory name or domain, e.g. "hunt" or "betalist"'}, 'min_dr': {'type': 'integer', 'default': 0, 'maximum': 100, 'minimum': 0, 'description': 'Minimum Ahrefs Domain Rating'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Skip this many results (pagination)'}, 'pricing': {'enum': ['any', 'free', 'free_or_freemium', 'paid'], 'type': 'string', 'default': 'any', 'description': 'free_or_freemium = there is a no-cost route'}, 'category': {'enum': ['AI Tools', 'Community', 'Design Tools', 'Developer Tools', 'General Directory', 'Launchpad', 'Marketing Tools', 'Marketplace', 'Open Source', 'SaaS Tools', 'Software Discovery', 'Software Reviews', 'Tech / Startups'], 'type': 'string', 'description': 'Directory category'}, 'link_type': {'enum': ['any', 'dofollow', 'nofollow'], 'type': 'string', 'default': 'any', 'description': 'dofollow = verified followed link'}, 'exclude_badge_exchange': {'type': 'boolean', 'default': False, 'description': 'Drop directories whose free listing requires their badge on your site'}}}
출력 스키마
{'type': 'object', 'required': ['total', 'offset', 'directories', 'dataUpdatedAt', 'attribution'], 'properties': {'total': {'type': 'integer', 'description': 'Matches before pagination'}, 'offset': {'type': 'integer'}, 'attribution': {'type': 'string'}, 'directories': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'domain', 'submitUrl', 'dr', 'linkType', 'pricing', 'category', 'badgeExchange', 'drCheckedAt'], 'properties': {'dr': {'type': 'integer', 'description': 'Ahrefs Domain Rating; 0 means no data, not worthless'}, 'name': {'type': 'string'}, 'note': {'type': 'string', 'description': 'Hand-written verdict, present on curated picks only'}, 'domain': {'type': 'string'}, 'pricing': {'enum': ['free', 'freemium', 'paid', 'unknown'], 'type': 'string'}, 'category': {'type': 'string'}, 'linkType': {'enum': ['dofollow', 'nofollow', 'unknown'], 'type': 'string'}, 'submitUrl': {'type': 'string', 'description': 'Where to submit or list'}, 'drCheckedAt': {'type': ['string', 'null'], 'description': 'Day the DR was last checked (YYYY-MM-DD); null = value from the last list sweep'}, 'badgeExchange': {'type': 'boolean', 'description': 'The free listing asks for their badge on your site'}}}}, 'dataUpdatedAt': {'type': 'string', 'description': 'Date link type and price were last swept (YYYY-MM-DD). DR has its own date per row.'}}}
get_launch_directory
Look up a launch directory
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['domain'], 'properties': {'domain': {'type': 'string', 'description': 'Directory domain or any URL on it, e.g. "uneed.best" or "https://www.producthunt.com/posts/new"'}}}
출력 스키마
{'type': 'object', 'required': ['found', 'dataUpdatedAt', 'attribution'], 'properties': {'found': {'type': 'boolean'}, 'directory': {'type': 'object', 'required': ['name', 'domain', 'submitUrl', 'dr', 'linkType', 'pricing', 'category', 'badgeExchange', 'drCheckedAt'], 'properties': {'dr': {'type': 'integer', 'description': 'Ahrefs Domain Rating; 0 means no data, not worthless'}, 'name': {'type': 'string'}, 'note': {'type': 'string', 'description': 'Hand-written verdict, present on curated picks only'}, 'domain': {'type': 'string'}, 'pricing': {'enum': ['free', 'freemium', 'paid', 'unknown'], 'type': 'string'}, 'category': {'type': 'string'}, 'linkType': {'enum': ['dofollow', 'nofollow', 'unknown'], 'type': 'string'}, 'submitUrl': {'type': 'string', 'description': 'Where to submit or list'}, 'drCheckedAt': {'type': ['string', 'null'], 'description': 'Day the DR was last checked (YYYY-MM-DD); null = value from the last list sweep'}, 'badgeExchange': {'type': 'boolean', 'description': 'The free listing asks for their badge on your site'}}}, 'attribution': {'type': 'string'}, 'dataUpdatedAt': {'type': 'string', 'description': 'Date link type and price were last swept (YYYY-MM-DD). DR has its own date per row.'}}}
get_launch_weeks
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['freeCapacityPerWeek', 'weeks'], 'properties': {'weeks': {'type': 'array', 'items': {'type': 'object', 'required': ['weekStart', 'freeRemaining', 'isCurrent'], 'properties': {'isCurrent': {'type': 'boolean'}, 'weekStart': {'type': 'string', 'description': 'Monday, YYYY-MM-DD'}, 'freeRemaining': {'type': 'integer'}}}}, 'freeCapacityPerWeek': {'type': 'integer'}}}
get_leaderboard
Get the launch leaderboard
SaaSCity's most upvoted launches for this week's launch, the last 30 days, or all time, optionally within one category.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'How many to return'}, 'period': {'enum': ['week', 'month', 'all_time'], 'type': 'string', 'default': 'week', 'description': "week = this Monday's launch"}, 'category': {'enum': ['ai', 'saas', 'productivity', 'devtools', 'design', 'marketing', 'fintech', 'health', 'mobile', 'games', 'web3', 'molt', 'directories', 'other'], 'type': 'string', 'description': 'Listing category id'}}}
출력 스키마
{'type': 'object', 'required': ['listings', 'period'], 'properties': {'period': {'type': 'string'}, 'listings': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'tagline', 'slug', 'category', 'points', 'pageUrl', 'websiteUrl'], 'properties': {'slug': {'type': 'string', 'description': 'Pass to get_listing or find_alternatives'}, 'title': {'type': 'string'}, 'points': {'type': 'integer', 'description': 'Community upvote points'}, 'pageUrl': {'type': 'string', 'description': 'SaaSCity listing page'}, 'tagline': {'type': 'string'}, 'category': {'type': 'string'}, 'websiteUrl': {'type': 'string', 'description': 'The product site'}}}}, 'weekStart': {'type': 'string', 'description': 'Present for period=week'}}}
get_listing
Get a SaaSCity listing
One live SaaSCity listing by slug: title, tagline, full description, category, upvote points, link type (dofollow/nofollow), listing page and product site.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Listing slug, the last part of saascity.io/live/<slug>'}}}
출력 스키마
{'type': 'object', 'required': ['found'], 'properties': {'found': {'type': 'boolean'}, 'listing': {'type': 'object', 'required': ['title', 'tagline', 'slug', 'category', 'points', 'pageUrl', 'websiteUrl', 'description', 'linkType'], 'properties': {'slug': {'type': 'string', 'description': 'Pass to get_listing or find_alternatives'}, 'title': {'type': 'string'}, 'points': {'type': 'integer', 'description': 'Community upvote points'}, 'pageUrl': {'type': 'string', 'description': 'SaaSCity listing page'}, 'tagline': {'type': 'string'}, 'category': {'type': 'string'}, 'linkType': {'enum': ['dofollow', 'nofollow'], 'type': 'string'}, 'websiteUrl': {'type': 'string', 'description': 'The product site'}, 'description': {'type': 'string'}}}}}
get_offers
Get listing 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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {}}
출력 스키마
{'type': 'object', 'required': ['offers'], 'properties': {'offers': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'priceUsd', 'summary'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'summary': {'type': 'string'}, 'priceUsd': {'type': 'number'}}}}}}
get_submission_status
Get submission status
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).
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'slug': {'type': 'string', 'description': 'Slug of a live listing'}, 'claim_token': {'type': 'string', 'description': 'Token from submit_project (the mcp_... part of the claim URL)'}}}
출력 스키마
{'type': 'object', 'required': ['state'], 'properties': {'state': {'enum': ['not_found', 'unclaimed', 'claimed_in_review', 'expired', 'live'], 'type': 'string'}, 'listing': {'type': 'object', 'required': ['title', 'weekStart', 'badge', 'linkType', 'points'], 'properties': {'badge': {'type': 'string'}, 'title': {'type': 'string'}, 'points': {'type': 'integer'}, 'linkType': {'type': 'string'}, 'weekStart': {'type': ['string', 'null']}}}, 'expiresAt': {'type': 'string'}}}
recommend_launch_directories
Recommend launch directories
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'free_only': {'type': 'boolean', 'default': False, 'description': 'Only picks with a free or freemium route'}, 'product_type': {'enum': ['any', 'saas', 'ai', 'devtools'], 'type': 'string', 'default': 'any', 'description': 'saas = B2B/B2C software, ai = AI tool or app, devtools = sold to developers, any = general'}}}
출력 스키마
{'type': 'object', 'required': ['productType', 'groups', 'dataUpdatedAt', 'attribution'], 'properties': {'groups': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'advice', 'directories'], 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'advice': {'type': 'string'}, 'directories': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'domain', 'submitUrl', 'dr', 'linkType', 'pricing', 'category', 'badgeExchange', 'drCheckedAt'], 'properties': {'dr': {'type': 'integer', 'description': 'Ahrefs Domain Rating; 0 means no data, not worthless'}, 'name': {'type': 'string'}, 'note': {'type': 'string', 'description': 'Hand-written verdict, present on curated picks only'}, 'domain': {'type': 'string'}, 'pricing': {'enum': ['free', 'freemium', 'paid', 'unknown'], 'type': 'string'}, 'category': {'type': 'string'}, 'linkType': {'enum': ['dofollow', 'nofollow', 'unknown'], 'type': 'string'}, 'submitUrl': {'type': 'string', 'description': 'Where to submit or list'}, 'drCheckedAt': {'type': ['string', 'null'], 'description': 'Day the DR was last checked (YYYY-MM-DD); null = value from the last list sweep'}, 'badgeExchange': {'type': 'boolean', 'description': 'The free listing asks for their badge on your site'}}}}}}}, 'attribution': {'type': 'string'}, 'productType': {'type': 'string'}, 'dataUpdatedAt': {'type': 'string', 'description': 'Date link type and price were last swept (YYYY-MM-DD). DR has its own date per row.'}}}
search_listings
Search SaaSCity listings
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.
읽기 전용 멱등성
입력 스키마
{'type': 'object', 'properties': {'sort': {'enum': ['points', 'newest'], 'type': 'string', 'default': 'points', 'description': 'points = most upvoted first'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'Results per page'}, 'query': {'type': 'string', 'description': 'Keyword matched against title and tagline'}, 'offset': {'type': 'integer', 'default': 0, 'minimum': 0, 'description': 'Skip this many results (pagination)'}, 'category': {'enum': ['ai', 'saas', 'productivity', 'devtools', 'design', 'marketing', 'fintech', 'health', 'mobile', 'games', 'web3', 'molt', 'directories', 'other'], 'type': 'string', 'description': 'Listing category id'}}}
출력 스키마
{'type': 'object', 'required': ['listings', 'offset'], 'properties': {'offset': {'type': 'integer'}, 'listings': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'tagline', 'slug', 'category', 'points', 'pageUrl', 'websiteUrl'], 'properties': {'slug': {'type': 'string', 'description': 'Pass to get_listing or find_alternatives'}, 'title': {'type': 'string'}, 'points': {'type': 'integer', 'description': 'Community upvote points'}, 'pageUrl': {'type': 'string', 'description': 'SaaSCity listing page'}, 'tagline': {'type': 'string'}, 'category': {'type': 'string'}, 'websiteUrl': {'type': 'string', 'description': 'The product site'}}}}}}
submit_project
Submit a project to SaaSCity
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.
입력 스키마
{'type': 'object', 'required': ['title', 'tagline', 'category', 'description', 'website_url'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40}, 'maxItems': 10, 'description': 'Up to 10 short keywords (optional)'}, 'title': {'type': 'string', 'maxLength': 60, 'minLength': 3, 'description': 'Product name'}, 'tagline': {'type': 'string', 'maxLength': 100, 'minLength': 10, 'description': 'One line on what it does and for whom'}, 'category': {'enum': ['ai', 'saas', 'productivity', 'devtools', 'design', 'marketing', 'fintech', 'health', 'mobile', 'games', 'web3', 'molt', 'directories', 'other'], 'type': 'string', 'description': 'Listing category id'}, 'github_url': {'type': 'string', 'maxLength': 200, 'description': 'Public repo URL (optional)'}, 'description': {'type': 'string', 'maxLength': 5000, 'minLength': 50, 'description': 'Plain text: the problem, who it is for, what makes it different'}, 'twitter_url': {'type': 'string', 'maxLength': 200, 'description': 'X/Twitter profile URL (optional)'}, 'website_url': {'type': 'string', 'maxLength': 500, 'description': 'Product homepage, https, on its own domain'}}}
출력 스키마
{'type': 'object', 'required': ['claimUrl', 'expiresAt', 'claimToken', 'badgeSnippet'], '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'}}}
추가됨
find_alternatives
2026년 9월 25일 2:40 AM
추가됨
get_leaderboard
2026년 9월 25일 2:40 AM
추가됨
get_listing
2026년 9월 25일 2:40 AM
추가됨
search_listings
2026년 9월 25일 2:40 AM
추가됨
get_offers
2026년 9월 25일 2:40 AM
추가됨
get_launch_weeks
2026년 9월 25일 2:40 AM
추가됨
get_submission_status
2026년 9월 25일 2:40 AM
추가됨
check_badge
2026년 9월 25일 2:40 AM
추가됨
submit_project
2026년 9월 25일 2:40 AM
추가됨
get_launch_directory
2026년 9월 25일 2:40 AM
추가됨
find_launch_directories
2026년 9월 25일 2:40 AM
추가됨
recommend_launch_directories
2026년 9월 25일 2:40 AM
추가됨
check_launch_readiness
2026년 9월 25일 2:40 AM