submitby.ai

A software directory your agent submits to. Search, submit, verify, and manage listings through MCP.

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
66%
이름 품질
97%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,527토큰 (도구 정의)
~2.5 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.76%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "submitbyai": {
      "url": "https://submitby.ai/mcp"
    }
  }
}

원격 엔드포인트

https://submitby.ai/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_taxonomy

Read valid category and tag IDs.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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.

입력 스키마

{
  "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#"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 12개