submitby.ai
A software directory your agent submits to. Search, submit, verify, and manage listings through MCP.
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": {
"submitbyai": {
"url": "https://submitby.ai/mcp"
}
}
}Remote-Endpunkte
https://submitby.ai/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (12)
🟡submit_project(url, name, description, icon_url, category, ...)
Create a private project draft. No signup. Save the returned control token securely. Reuse the same random idempotency key for retries. Optional listing fields (tagline, long_description, audience, not_for, screenshots, video_url, pricing, platforms, links, mcp_url, openapi_url, app_store_url, play_store_url, alternatives, faq) raise listing completeness; write them in your own words from facts on the website.
Eingabe-Schema
{
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048
},
"name": {
"type": "string",
"minLength": 2,
"maxLength": 80
},
"description": {
"default": "",
"type": "string",
"maxLength": 500
},
"icon_url": {
"description": "Optional public HTTPS icon URL. Omit or set null to discover the first Apple touch icon, then the favicon.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 2048
},
{
"type": "null"
}
]
},
"category": {
"type": "string",
"maxLength": 100
},
"tags": {
"type": "string",
"maxLength": 1500
},
"route": {
"default": "badge",
"type": "string",
"enum": [
"badge",
"paid"
]
},
"tagline": {
"description": "One line, in your own words. Shown on cards.",
"type": "string",
"minLength": 10,
"maxLength": 100
},
"long_description": {
"description": "Plain text, 200-800 words. Separate paragraphs with a blank line. Explain what it does, how it works, and how it differs. Do not copy website text.",
"type": "string",
"minLength": 300,
"maxLength": 6000
},
"audience": {
"description": "Who the project is for.",
"type": "string",
"minLength": 10,
"maxLength": 500
},
"not_for": {
"description": "Who should choose something else.",
"type": "string",
"minLength": 10,
"maxLength": 500
},
"screenshots": {
"description": "Up to 8 screenshots. We copy them; hosted images must stay public until verification finishes.",
"maxItems": 8,
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public HTTPS PNG, JPEG, or WebP, max 2 MB."
},
"alt": {
"type": "string",
"minLength": 3,
"maxLength": 200
}
},
"required": [
"url",
"alt"
],
"additionalProperties": false
}
},
"video_url": {
"description": "Public demo video page.",
"type": "string",
"maxLength": 2048
},
"pricing": {
"type": "object",
"properties": {
"model": {
"type": "string",
"enum": [
"free",
"freemium",
"free_trial",
"paid",
"open_source",
"contact_sales"
]
},
"starting_price": {
"description": "For example: $6/month.",
"type": "string",
"maxLength": 40
},
"free_plan": {
"type": "boolean"
}
},
"required": [
"model"
],
"additionalProperties": false
},
"platforms": {
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"enum": [
"web",
"ios",
"ipados",
"watchos",
"visionos",
"android",
"macos",
"windows",
"linux",
"chrome",
"firefox",
"safari",
"vscode",
"cli",
"api",
"mcp",
"wordpress",
"figma",
"slack",
"other"
]
}
},
"links": {
"description": "Official profiles and pages of the project.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"x",
"bluesky",
"mastodon",
"linkedin",
"github",
"discord",
"youtube",
"reddit",
"producthunt",
"docs",
"changelog",
"pricing",
"status",
"blog"
]
},
"additionalProperties": {
"type": "string",
"maxLength": 2048
}
},
"mcp_url": {
"description": "Remote MCP endpoint. We check that it answers initialize.",
"type": "string",
"maxLength": 2048
},
"openapi_url": {
"type": "string",
"maxLength": 2048
},
"app_store_url": {
"type": "string",
"maxLength": 2048
},
"play_store_url": {
"type": "string",
"maxLength": 2048
},
"alternatives": {
"description": "Websites of similar products.",
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
}
},
"faq": {
"description": "Answer the faq_questions from get_submission, or your own. Answers must match the website.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string",
"minLength": 5,
"maxLength": 200
},
"answer": {
"type": "string",
"minLength": 20,
"maxLength": 1000
}
},
"required": [
"question",
"answer"
],
"additionalProperties": false
}
},
"idempotency_key": {
"type": "string",
"minLength": 32,
"maxLength": 128
}
},
"required": [
"url",
"name",
"idempotency_key"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_submission(id, control_token)
Read private status, listing completeness, suggested faq_questions, the private agent-readiness report, and exact next actions.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"control_token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪verify_submission(id, control_token)
Request website and badge verification. Call after installing the returned snippet or file.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"control_token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🔴update_submission(name, description, icon_url, category, tags, ...)
Update the name, description, or any listing field. Send null to remove a field. Changes run the automatic checks again; the listing stays in review until they pass.
Eingabe-Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 80
},
"description": {
"default": "",
"type": "string",
"maxLength": 500
},
"icon_url": {
"description": "Optional public HTTPS icon URL. Omit or set null to discover the first Apple touch icon, then the favicon.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 2048
},
{
"type": "null"
}
]
},
"category": {
"type": "string",
"maxLength": 100
},
"tags": {
"type": "string",
"maxLength": 1500
},
"route": {
"default": "badge",
"type": "string",
"enum": [
"badge",
"paid"
]
},
"tagline": {
"anyOf": [
{
"description": "One line, in your own words. Shown on cards.",
"type": "string",
"minLength": 10,
"maxLength": 100
},
{
"type": "null"
}
]
},
"long_description": {
"anyOf": [
{
"description": "Plain text, 200-800 words. Separate paragraphs with a blank line. Explain what it does, how it works, and how it differs. Do not copy website text.",
"type": "string",
"minLength": 300,
"maxLength": 6000
},
{
"type": "null"
}
]
},
"audience": {
"anyOf": [
{
"description": "Who the project is for.",
"type": "string",
"minLength": 10,
"maxLength": 500
},
{
"type": "null"
}
]
},
"not_for": {
"anyOf": [
{
"description": "Who should choose something else.",
"type": "string",
"minLength": 10,
"maxLength": 500
},
{
"type": "null"
}
]
},
"screenshots": {
"anyOf": [
{
"description": "Up to 8 screenshots. We copy them; hosted images must stay public until verification finishes.",
"maxItems": 8,
"type": "array",
"items": {
"type": "object",
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"description": "Public HTTPS PNG, JPEG, or WebP, max 2 MB."
},
"alt": {
"type": "string",
"minLength": 3,
"maxLength": 200
}
},
"required": [
"url",
"alt"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"video_url": {
"anyOf": [
{
"description": "Public demo video page.",
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"pricing": {
"anyOf": [
{
"type": "object",
"properties": {
"model": {
"type": "string",
"enum": [
"free",
"freemium",
"free_trial",
"paid",
"open_source",
"contact_sales"
]
},
"starting_price": {
"description": "For example: $6/month.",
"type": "string",
"maxLength": 40
},
"free_plan": {
"type": "boolean"
}
},
"required": [
"model"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"platforms": {
"anyOf": [
{
"maxItems": 12,
"type": "array",
"items": {
"type": "string",
"enum": [
"web",
"ios",
"ipados",
"watchos",
"visionos",
"android",
"macos",
"windows",
"linux",
"chrome",
"firefox",
"safari",
"vscode",
"cli",
"api",
"mcp",
"wordpress",
"figma",
"slack",
"other"
]
}
},
{
"type": "null"
}
]
},
"links": {
"anyOf": [
{
"description": "Official profiles and pages of the project.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"x",
"bluesky",
"mastodon",
"linkedin",
"github",
"discord",
"youtube",
"reddit",
"producthunt",
"docs",
"changelog",
"pricing",
"status",
"blog"
]
},
"additionalProperties": {
"type": "string",
"maxLength": 2048
}
},
{
"type": "null"
}
]
},
"mcp_url": {
"anyOf": [
{
"description": "Remote MCP endpoint. We check that it answers initialize.",
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"openapi_url": {
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"app_store_url": {
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"play_store_url": {
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
]
},
"alternatives": {
"anyOf": [
{
"description": "Websites of similar products.",
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 2048
}
},
{
"type": "null"
}
]
},
"faq": {
"anyOf": [
{
"description": "Answer the faq_questions from get_submission, or your own. Answers must match the website.",
"maxItems": 10,
"type": "array",
"items": {
"type": "object",
"properties": {
"question": {
"type": "string",
"minLength": 5,
"maxLength": 200
},
"answer": {
"type": "string",
"minLength": 20,
"maxLength": 1000
}
},
"required": [
"question",
"answer"
],
"additionalProperties": false
}
},
{
"type": "null"
}
]
},
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"control_token": {
"type": "string",
"pattern": "^[a-f0-9]{64}$"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢list_projects(query, category, tag, page)
Browse published projects only. Use page to read more results.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 120
},
"category": {
"type": "string"
},
"tag": {
"type": "string"
},
"page": {
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 10000
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_project(slug)
Read one published listing by slug or listing ID: description, FAQ, pricing, platforms, links, screenshots, verified store and GitHub data, and passed agent-readiness checks.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"minLength": 1,
"maxLength": 120
}
},
"required": [
"slug"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_categories
List every valid category ID, name, and alias. Choose one primary category.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢list_tags
List all valid tag IDs, names, and aliases. Submit suggestions as comma-separated values.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_taxonomy
Read valid category and tag IDs.
Eingabe-Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡recover_submission(id, recovery_id)
Recover a lost control token by proving website control. First omit recovery_id, save the new token, and install the returned file. Then call again with recovery_id. Never share tokens publicly.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"recovery_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_badge(id)
Get the public badge snippet for any submission. No control token required. Installing it on the submitted website proves control.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪purchase_badge_waiver(id, method)
Anyone may pay the $4.99 badge waiver for an eligible submission after website and content verification. No submission control token is needed. Use checkout for a hosted Managed Checkout link. Use mpp with an authorized MPP payment client for a direct payment sold by submitby.ai, outside Managed Payments. When MPP is disabled, Managed Checkout remains available. Never ask for card details in chat.
Eingabe-Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
},
"method": {
"default": "checkout",
"type": "string",
"enum": [
"mpp",
"checkout"
]
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Nachweis