MCP-Server

BetaFinds

io.github.pendurov/betafinds-mcp
Business & Betrieb Marketing & Werbung Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Publishes and manages startup listings, stages, launches, releases, updates, assets, waitlists, and app-store review monitoring on BetaFinds.

announce_launch
Announce your startup's official launch: the stage becomes LAUNCHED, a LAUNCH update is published, and waitlist members are notified (once). A working product link is required (url or an already saved store link).
Eingabeschema
{'type': 'object', 'required': ['startup_slug', 'title', 'body'], 'properties': {'url': {'type': 'string', 'description': 'Working product link (if not set yet)'}, 'body': {'type': 'string', 'description': 'Description of the first public version, Markdown (10–20000 characters)'}, 'title': {'type': 'string', 'description': 'Launch headline (3–200 characters)'}, 'startup_slug': {'type': 'string', 'description': 'Startup slug (from list_my_startups)'}, 'notify_waitlist': {'type': 'boolean', 'description': 'Notify the waitlist (default true)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'slug': {'type': 'string'}, 'stage': {'type': 'string'}, 'message': {'type': 'string'}, 'firstLaunch': {'type': 'boolean'}}, 'additionalProperties': True}
change_startup_stage
Change your startup's product stage: PRELAUNCH — preparing to launch, BETA — recruiting beta testers, PAUSED — development paused (requires public_note). To move to LAUNCHED use announce_launch. Allowed transitions: PRELAUNCH→BETA/PAUSED, BETA→PAUSED, PAUSED→PRELAUNCH/BETA.
Idempotent
Eingabeschema
{'type': 'object', 'required': ['startup_slug', 'stage'], 'properties': {'stage': {'enum': ['PRELAUNCH', 'BETA', 'PAUSED'], 'type': 'string', 'description': 'New stage'}, 'public_note': {'type': 'string', 'description': 'Public note (required for PAUSED, up to 500 characters)'}, 'startup_slug': {'type': 'string', 'description': 'Startup slug (from list_my_startups)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'slug': {'type': 'string'}, 'stage': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}
complete_asset_upload
Confirm that the release file has been uploaded. Verifies the file's presence and size in storage and makes it available for download.
Idempotent
Eingabeschema
{'type': 'object', 'required': ['asset_id'], 'properties': {'asset_id': {'type': 'string', 'description': 'File ID from request_asset_upload'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'downloadUrl': {'type': 'string'}}, 'additionalProperties': True}
create_release
Create a release (version) of your startup. By default also publishes a RELEASE-type update with the notes text. After creation, upload files via request_asset_upload.
Eingabeschema
{'type': 'object', 'required': ['startup_slug', 'version'], 'properties': {'notes': {'type': 'string', 'description': 'Release notes in Markdown'}, 'version': {'type': 'string', 'description': 'Version, e.g. 1.4.0'}, 'announce': {'type': 'boolean', 'description': 'Whether to publish an update in the feed (default true)'}, 'startup_slug': {'type': 'string', 'description': 'Startup slug'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'message': {'type': 'string'}, 'version': {'type': 'string'}, 'release_id': {'type': 'string'}}, 'additionalProperties': True}
create_startup
Create a new startup on BetaFinds (submitted for review). Upload the logo and screenshots first via upload_image (or POST https://betafinds.com/api/v1/images) and pass the returned URLs here. Set the category by slug — get the list via list_categories (a category name also works, case-insensitive).
Eingabeschema
{'type': 'object', 'required': ['name', 'tagline', 'description'], 'properties': {'url': {'type': 'string', 'description': 'Product website URL (required for stage=LAUNCHED, optional for prelaunch)'}, 'logo': {'type': 'string', 'description': 'Logo URL from upload_image (optional)'}, 'name': {'type': 'string', 'description': 'Product name'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags (up to 6)'}, 'stage': {'enum': ['PRELAUNCH', 'BETA', 'LAUNCHED'], 'type': 'string', 'description': 'Product stage: PRELAUNCH — preparing to launch, BETA — recruiting beta testers, LAUNCHED — already launched (default)'}, 'tagline': {'type': 'string', 'description': 'One-line tagline (up to 160 characters)'}, 'appStoreUrl': {'type': 'string', 'description': 'App Store page link (iOS)'}, 'description': {'type': 'string', 'description': 'Full description (min 50 characters)'}, 'screenshots': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Screenshot URLs from upload_image (up to 5, optional)'}, 'category_slug': {'type': 'string', 'description': 'Category slug (e.g. ai, saas, fintech)'}, 'googlePlayUrl': {'type': 'string', 'description': 'Google Play page link (Android)'}, 'testflightUrl': {'type': 'string', 'description': 'TestFlight link (iOS beta)'}, 'prelaunch_ready': {'type': 'string', 'description': 'What is already done: prototype, design, private beta… (up to 1000 characters)'}, 'prelaunch_promise': {'type': 'string', 'description': 'What a waitlist subscriber will get (up to 1000 characters)'}, 'prelaunch_audience': {'type': 'string', 'description': 'Who the product is for (up to 1000 characters)'}, 'target_launch_date': {'type': 'string', 'description': 'Estimated launch date in YYYY-MM-DD format (for prelaunch; empty string clears it)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'slug': {'type': 'string'}, 'status': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}
get_releases
Список опубликованных релизов стартапа с файлами. Для LAUNCHED-проектов downloadUrl — постоянная прямая ссылка. На закрытых стадиях ссылка возвращается только для своих стартапов или где у вас открыт доступ (иначе locked=true, downloadUrl=null).
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['startup_slug'], 'properties': {'startup_slug': {'type': 'string', 'description': 'Startup slug'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'assets': {'type': 'array', 'items': {'type': 'object', 'properties': {'size': {'type': 'number'}, 'filename': {'type': 'string'}, 'platform': {'type': 'string'}, 'downloadUrl': {'type': ['string', 'null']}}, 'additionalProperties': True}}, 'locked': {'type': 'boolean'}, 'version': {'type': 'string'}, 'publishedAt': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': False}
get_store_reviews
Public Google Play and App Store reviews of your startup: monitoring state per store and the latest reviews (rating, text, developer response). Reviews are collected automatically via the app links.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['startup_slug'], 'properties': {'page': {'type': 'number', 'description': 'Page (20 reviews each, default 1)'}, 'startup_slug': {'type': 'string', 'description': 'Startup slug (from list_my_startups)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'slug': {'type': 'string'}, 'total': {'type': 'number'}, 'reviews': {'type': 'array', 'items': {'type': 'object', 'properties': {'body': {'type': 'string'}, 'rating': {'type': 'number'}, 'platform': {'type': 'string'}}, 'additionalProperties': True}}, 'monitors': {'type': 'array', 'items': {'type': 'object', 'properties': {'status': {'type': 'string'}, 'platform': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
get_waitlist
Waitlist summary for your startup: aggregated counters (active, per week/month, ready to test, invited/accepted), answer distribution for the question, recent anonymized answers and campaigns with aggregated statistics. Participants' contact details are not returned.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['startup_slug'], 'properties': {'startup_slug': {'type': 'string', 'description': 'Startup slug (from list_my_startups)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'slug': {'type': 'string'}, 'stage': {'type': 'string'}, 'question': {'type': 'object', 'properties': {'text': {'type': 'string'}, 'type': {'type': 'string'}}, 'additionalProperties': True}, 'waitlist': {'type': 'object', 'properties': {'active': {'type': 'number'}, 'invited': {'type': 'number'}, 'accepted': {'type': 'number'}, 'wantsBeta': {'type': 'number'}, 'newPerWeek': {'type': 'number'}, 'newPerMonth': {'type': 'number'}}, 'additionalProperties': True}, 'campaigns': {'type': 'array', 'items': {'type': 'object', 'properties': {'status': {'type': 'string'}, 'subject': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
list_categories
List of available categories (slug and name) for create_startup.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': False}
list_my_startups
List of your startups on BetaFinds (slug, name, status). Updates can only be published for startups with APPROVED status.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['items'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'stage': {'type': 'string'}, 'status': {'type': 'string'}, 'waitlistCount': {'type': 'number'}}, 'additionalProperties': True}}}, 'additionalProperties': False}
publish_update
Publish an update (an entry in the «What's new» feed) for your startup. Subscribers receive an email summary within ~10 minutes. body supports Markdown.
Eingabeschema
{'type': 'object', 'required': ['startup_slug', 'title', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Text in Markdown (10–20000 characters)'}, 'type': {'enum': ['RELEASE', 'UPDATE', 'FIX', 'NEWS'], 'type': 'string', 'description': 'Type: RELEASE — new version, UPDATE — improvement, FIX — fix, NEWS — news. Defaults to NEWS.'}, 'title': {'type': 'string', 'description': 'Update title (3–200 characters)'}, 'version': {'type': 'string', 'description': 'Version, if applicable (e.g. 1.4.0)'}, 'startup_slug': {'type': 'string', 'description': 'Startup slug (from list_my_startups)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'message': {'type': 'string'}, 'publishedAt': {'type': 'string'}}, 'additionalProperties': True}
request_asset_upload
Get a one-time link to upload a release file (Windows/Mac/Android/Linux, up to 1 GB). Then upload the file: curl -T <file> '<upload_url>'. After uploading, call complete_asset_upload.
Eingabeschema
{'type': 'object', 'required': ['release_id', 'platform', 'filename', 'size'], 'properties': {'size': {'type': 'number', 'description': 'File size in bytes (exact)'}, 'sha256': {'type': 'string', 'description': 'File SHA-256 (hex, optional)'}, 'filename': {'type': 'string', 'description': 'File name, e.g. MyApp-1.4.0.dmg'}, 'platform': {'enum': ['WINDOWS', 'MACOS', 'ANDROID', 'LINUX'], 'type': 'string', 'description': 'File platform'}, 'release_id': {'type': 'string', 'description': 'Release ID from create_release'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'assetId': {'type': 'string'}, 'uploadUrl': {'type': 'string'}, 'downloadUrl': {'type': 'string'}, 'instructions': {'type': 'string'}}, 'additionalProperties': True}
update_startup
Update an existing startup: app-store links, website, short/full description, tags, category, logo and screenshots. Upload the logo and screenshots first via upload_image and pass the returned URLs (screenshots fully replace the current set; to clear the logo, pass an empty string). Pass only the fields you want to change. See current values via list_my_startups. Note: editing an approved startup sends it back to moderation.
Idempotent
Eingabeschema
{'type': 'object', 'required': ['startup_slug'], 'properties': {'url': {'type': 'string', 'description': 'Product website URL'}, 'logo': {'type': 'string', 'description': 'Logo URL from upload_image (empty string to clear)'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tags (up to 6)'}, 'tagline': {'type': 'string', 'description': 'One-line tagline (up to 160 characters)'}, 'appStoreUrl': {'type': 'string', 'description': 'App Store page link (iOS)'}, 'description': {'type': 'string', 'description': 'Full description (min 50 characters)'}, 'screenshots': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Screenshot URLs from upload_image (up to 5; fully replace the current set)'}, 'startup_slug': {'type': 'string', 'description': 'Startup slug (from list_my_startups)'}, 'category_slug': {'type': 'string', 'description': 'Category slug (see list_categories)'}, 'googlePlayUrl': {'type': 'string', 'description': 'Google Play page link (Android)'}, 'testflightUrl': {'type': 'string', 'description': 'TestFlight link (iOS beta)'}, 'prelaunch_ready': {'type': 'string', 'description': 'What is already done: prototype, design, private beta… (up to 1000 characters)'}, 'prelaunch_promise': {'type': 'string', 'description': 'What a waitlist subscriber will get (up to 1000 characters)'}, 'prelaunch_audience': {'type': 'string', 'description': 'Who the product is for (up to 1000 characters)'}, 'target_launch_date': {'type': 'string', 'description': 'Estimated launch date in YYYY-MM-DD format (for prelaunch; empty string clears it)'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'slug': {'type': 'string'}, 'status': {'type': 'string'}, 'message': {'type': 'string'}}, 'additionalProperties': True}
upload_image
Upload an image (logo or screenshot) for create_startup. Pass the file content as base64 (data is base64 only, no data: prefix). Returns a url to pass into create_startup. Max 2 MB; formats: JPEG, PNG, WebP, GIF.
Eingabeschema
{'type': 'object', 'required': ['data', 'mime_type'], 'properties': {'data': {'type': 'string', 'description': 'File content in base64'}, 'filename': {'type': 'string', 'description': 'File name (optional)'}, 'mime_type': {'type': 'string', 'description': 'MIME type: image/png, image/jpeg, image/webp, image/gif'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'path': {'type': 'string'}}, 'additionalProperties': True}
Hinzugefügt
get_store_reviews
17. September 2026 12:45
Hinzugefügt
get_waitlist
17. September 2026 12:45
Hinzugefügt
announce_launch
17. September 2026 12:45
Hinzugefügt
change_startup_stage
17. September 2026 12:45
Hinzugefügt
get_releases
17. September 2026 12:45
Hinzugefügt
complete_asset_upload
17. September 2026 12:45
Hinzugefügt
request_asset_upload
17. September 2026 12:45
Hinzugefügt
create_release
17. September 2026 12:45
Hinzugefügt
publish_update
17. September 2026 12:45
Hinzugefügt
list_my_startups
17. September 2026 12:45
Hinzugefügt
upload_image
17. September 2026 12:45
Hinzugefügt
list_categories
17. September 2026 12:45
Hinzugefügt
update_startup
17. September 2026 12:45
Hinzugefügt
create_startup
17. September 2026 12:45