{
  "schema_version": "2025-06-18",
  "name": "betadomain",
  "description": "betadomain — transparenter Domain-Registrar (~490 TLDs). Verfügbarkeit und Jahrespreise read-only abfragbar; Domain-Suche, WHOIS und (mit Token) Kontoverwaltung über einen MCP-Server.",
  "vendor": "betadomain",
  "homepage": "https://betadomain.de",
  "contact": "info@betadomain.de",
  "capabilities": {
    "product_feed": {
      "type": "acp_product_feed",
      "url": "https://betadomain.de/acp/product-feed.json",
      "description": "Produktkatalog nach Agentic Commerce Protocol. Ein Eintrag je TLD; Preis = voller Jahrespreis in EUR."
    },
    "agentic_checkout": {
      "type": "acp_agentic_checkout",
      "base_url": "https://betadomain.de/api/acp",
      "discovery": "https://betadomain.de/.well-known/acp.json",
      "description": "Agentic-Checkout-Endpunkte (ACP): Session erstellen/aktualisieren/abrufen/abschließen/stornieren. Requests werden signiert verifiziert."
    },
    "openapi": {
      "type": "openapi",
      "url": "https://betadomain.de/openapi.json",
      "description": "Öffentliche read-only API: Domain-Verfügbarkeit & Preisauskunft."
    },
    "mcp": {
      "type": "mcp_server",
      "url": "https://betadomain.de/api/mcp",
      "transport": "streamable-http",
      "protocol": "json-rpc-2.0",
      "protocol_version": "2025-06-18",
      "description": "Model-Context-Protocol-Server (Streamable HTTP / JSON-RPC 2.0). Read-Tools sind unauthentifiziert und pro IP ratenbegrenzt. Write-Tools (Bestellung/Konto) erfordern einen Bearer-Token mit Scope mcp:write — per OAuth 2.1 (öffentliche App, je eigener Nutzer-Login) oder per Personal-Access-Token.",
      "auth": {
        "type": "oauth2",
        "primary_mechanism": "oauth2",
        "description": "Read-Tools: keine Auth. Write-Tools: Bearer-Token mit Scope mcp:write. Primär via OAuth 2.1 (Authorization-Code + PKCE S256, Dynamic Client Registration). Bei fehlendem/ungültigem Token für ein Write-Tool antwortet der Server mit HTTP 401 und WWW-Authenticate (resource_metadata), sodass MCP-Clients den Authorization-Server automatisch finden.",
        "protected_resource_metadata": "https://betadomain.de/.well-known/oauth-protected-resource/api/mcp",
        "authorization_servers": [
          "https://betadomain.de"
        ],
        "oauth2": {
          "authorization_server_metadata": "https://betadomain.de/.well-known/oauth-authorization-server",
          "authorization_endpoint": "https://betadomain.de/oauth/authorize/",
          "token_endpoint": "https://betadomain.de/oauth/token/",
          "registration_endpoint": "https://betadomain.de/oauth/register/",
          "scopes_supported": [
            "mcp:read",
            "mcp:write"
          ],
          "code_challenge_methods_supported": [
            "S256"
          ],
          "grant_types_supported": [
            "authorization_code",
            "refresh_token"
          ]
        },
        "alternative": {
          "type": "bearer",
          "description": "Alternative: Bearer-Personal-Access-Token (voller Kontozugriff), erstellt im Portal unter /account/profile. Token wird nur als sha256-Hash gespeichert und bei der Erstellung genau einmal im Klartext angezeigt.",
          "token_issuance_url": "https://betadomain.de/account/profile"
        }
      },
      "tools": [
        {
          "name": "domain_check",
          "description": "Verfügbarkeit + Jahrespreise einer vollständigen Domain.",
          "auth_required": false
        },
        {
          "name": "domain_search",
          "description": "Namen über eine oder mehrere beliebte Endungen suchen.",
          "auth_required": false
        },
        {
          "name": "whois_lookup",
          "description": "RDAP/WHOIS einer Domain, nur nicht-personenbezogene Felder (DSGVO).",
          "auth_required": false
        },
        {
          "name": "list_tlds",
          "description": "Geführte Endungen mit Jahrespreisen (optional category/search/Paginierung).",
          "auth_required": false
        },
        {
          "name": "tld_price",
          "description": "Jahrespreise (Registrierung/Transfer/Verlängerung) einer einzelnen Endung.",
          "auth_required": false
        },
        {
          "name": "list_my_domains",
          "description": "Domains des angemeldeten Kunden (Name, Endung, Status, Ablauf, Auto-Renew) — nur eigene.",
          "auth_required": true
        },
        {
          "name": "start_order",
          "description": "Domain-Bestellung (Register/Transfer) starten; serverseitige Verfügbarkeits-/Preisprüfung, liefert Stripe-Checkout-Link (payment_url) bzw. KYC-Link. Kein headless-Kauf.",
          "auth_required": true
        },
        {
          "name": "get_order_status",
          "description": "Status einer eigenen Bestellung abfragen.",
          "auth_required": true
        }
      ]
    }
  },
  "notes": "Konkrete Domains sind dynamisch: Verfügbarkeit wird live geprüft. Domain-Käufe erfordern WHOIS-Registrantendaten und ggf. eine Identitätsprüfung (KYC) und werden über einen Checkout-Link vom Menschen abgeschlossen — kein headless-Kauf."
}
