submitby.ai
A software directory your agent submits to. Search, submit, verify, and manage listings through MCP.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"submitbyai": {
"url": "https://submitby.ai/mcp"
}
}
}Puntos de conexión remotos
https://submitby.ai/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_taxonomy
Read valid category and tag IDs.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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#"
}Comunidad
Evidencia