BetaFinds MCP
An official MCP server for BetaFinds that allows AI agents to publish and update startup listings, post changelog updates, and upload release files. It supports creating startups, updating fields, uploading images, and managing releases for Windows, macOS, Android, and Linux.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://betafinds.com/api/mcpWhat its tools do
14 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- List your startups and their slugs
- Create a new startup listing
- Post a changelog update to a startup
- Create a release for an operating system
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- betafinds 1.0.0
- MCP protocol negotiated in check
- 2025-06-18
- Tools
- 14 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
14 advertised
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).
{
"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
}{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Create startup",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"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
}{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"slug": {
"type": "string"
},
"status": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Update startup",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_categories
List of available categories (slug and name) for create_startup.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"additionalProperties": true
}
}
},
"additionalProperties": false
}{
"title": "List categories",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}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.
{
"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
}{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"path": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Upload image",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}list_my_startups
List of your startups on BetaFinds (slug, name, status). Updates can only be published for startups with APPROVED status.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"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
}{
"title": "My startups",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": 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.
{
"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
}{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"message": {
"type": "string"
},
"publishedAt": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Publish update",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"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
}{
"type": "object",
"properties": {
"message": {
"type": "string"
},
"version": {
"type": "string"
},
"release_id": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Create release",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"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
}{
"type": "object",
"properties": {
"assetId": {
"type": "string"
},
"uploadUrl": {
"type": "string"
},
"downloadUrl": {
"type": "string"
},
"instructions": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Request file upload",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"required": [
"asset_id"
],
"properties": {
"asset_id": {
"type": "string",
"description": "File ID from request_asset_upload"
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"downloadUrl": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Complete file upload",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_releases
Список опубликованных релизов стартапа с файлами. Для LAUNCHED-проектов downloadUrl — постоянная прямая ссылка. На закрытых стадиях ссылка возвращается только для своих стартапов или где у вас открыт доступ (иначе locked=true, downloadUrl=null).
{
"type": "object",
"required": [
"startup_slug"
],
"properties": {
"startup_slug": {
"type": "string",
"description": "Startup slug"
}
},
"additionalProperties": false
}{
"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
}{
"title": "List releases",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}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.
{
"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
}{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"stage": {
"type": "string"
},
"message": {
"type": "string"
}
},
"additionalProperties": true
}{
"title": "Change stage",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}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).
{
"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
}{
"type": "object",
"properties": {
"slug": {
"type": "string"
},
"stage": {
"type": "string"
},
"message": {
"type": "string"
},
"firstLaunch": {
"type": "boolean"
}
},
"additionalProperties": true
}{
"title": "Announce launch",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}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.
{
"type": "object",
"required": [
"startup_slug"
],
"properties": {
"startup_slug": {
"type": "string",
"description": "Startup slug (from list_my_startups)"
}
},
"additionalProperties": false
}{
"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
}{
"title": "Waitlist",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": 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.
{
"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
}{
"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
}{
"title": "Store reviews",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-06: 1 of 1 checks answered
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1001 ms
- 95th percentile latency
- 1001 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1001 ms · metadata changed · 14 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http betafinds-mcp https://betafinds.com/api/mcpCodex
codex mcp add betafinds-mcp --url https://betafinds.com/api/mcpCursor
{
"mcpServers": {
"betafinds-mcp": {
"url": "https://betafinds.com/api/mcp"
}
}
}Cline
{
"mcpServers": {
"betafinds-mcp": {
"type": "streamableHttp",
"url": "https://betafinds.com/api/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"betafinds-mcp": {
"type": "http",
"url": "https://betafinds.com/api/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http betafinds-mcp https://betafinds.com/api/mcpClaude Desktop
https://betafinds.com/api/mcpWindsurf
{
"mcpServers": {
"betafinds-mcp": {
"serverUrl": "https://betafinds.com/api/mcp"
}
}
}Let your agent find its tools
Find servers like BetaFinds MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.