{
    "openapi": "3.1.0",
    "info": {
        "title": "UtilityForge API",
        "version": "4.2.0",
        "description": "Scoped REST API for deterministic tools, tool recommendation and BYOK AI."
    },
    "servers": [
        {
            "url": "https://trama.deedyn.cloud/api/v1"
        }
    ],
    "components": {
        "securitySchemes": {
            "bearerAuth": {
                "type": "http",
                "scheme": "bearer",
                "bearerFormat": "UtilityForge API key"
            }
        }
    },
    "paths": {
        "/tools": {
            "get": {
                "summary": "List server tools",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Tool list"
                    }
                }
            }
        },
        "/advisor": {
            "post": {
                "summary": "Recommend tools from a problem description",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "problem": {
                                        "type": "string"
                                    },
                                    "limit": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "problem"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Recommendations"
                    }
                }
            }
        },
        "/me": {
            "get": {
                "summary": "Current API principal",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Principal"
                    }
                }
            }
        },
        "/usage": {
            "get": {
                "summary": "Current month usage",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Usage"
                    }
                }
            }
        },
        "/ai/complete": {
            "post": {
                "summary": "Call the authenticated user BYOK AI connection",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "prompt": {
                                        "type": "string"
                                    },
                                    "system": {
                                        "type": "string"
                                    },
                                    "connection_id": {
                                        "type": "integer"
                                    },
                                    "max_tokens": {
                                        "type": "integer"
                                    }
                                },
                                "required": [
                                    "prompt"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "AI response"
                    }
                }
            }
        },
        "/monitors": {
            "get": {
                "summary": "List monitors",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Monitor list"
                    }
                }
            },
            "post": {
                "summary": "Create monitor",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Created"
                    }
                }
            }
        },
        "/status-pages": {
            "get": {
                "summary": "List status pages",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status pages"
                    }
                }
            }
        },
        "/public/status/{slug}": {
            "get": {
                "summary": "Public status page data",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Status page"
                    }
                }
            }
        },
        "/tool/json-formatter": {
            "post": {
                "summary": "JSON formatieren & prüfen",
                "description": "JSON validieren und sauber einrücken.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/json-minify": {
            "post": {
                "summary": "JSON minifizieren",
                "description": "Whitespace aus gültigem JSON entfernen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/json-to-csv": {
            "post": {
                "summary": "JSON zu CSV",
                "description": "Ein Array flacher JSON-Objekte in CSV umwandeln.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/csv-to-json": {
            "post": {
                "summary": "CSV zu JSON",
                "description": "CSV mit Kopfzeile in JSON-Objekte umwandeln.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/xml-formatter": {
            "post": {
                "summary": "XML formatieren & prüfen",
                "description": "XML ohne externe Entities validieren und einrücken.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/base64": {
            "post": {
                "summary": "Base64 kodieren / dekodieren",
                "description": "Text als Base64 kodieren oder dekodieren.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    },
                                    "operation": {
                                        "type": "string",
                                        "enum": [
                                            "encode",
                                            "decode"
                                        ]
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/url-codec": {
            "post": {
                "summary": "URL kodieren / dekodieren",
                "description": "URL-Komponenten sicher kodieren oder dekodieren.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    },
                                    "operation": {
                                        "type": "string",
                                        "enum": [
                                            "encode",
                                            "decode"
                                        ]
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/html-escape": {
            "post": {
                "summary": "HTML escapen / unescapen",
                "description": "HTML-Sonderzeichen sicher kodieren oder dekodieren.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    },
                                    "operation": {
                                        "type": "string",
                                        "enum": [
                                            "encode",
                                            "decode"
                                        ]
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/sha256": {
            "post": {
                "summary": "SHA-256 Hash",
                "description": "SHA-256 Hash eines Textes berechnen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/uuid-v4": {
            "post": {
                "summary": "UUID v4 Generator",
                "description": "Kryptografisch zufällige UUID-v4-Werte erzeugen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "count": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                    }
                                },
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/ulid": {
            "post": {
                "summary": "ULID Generator",
                "description": "Sortierbare ULIDs mit Zeitkomponente erzeugen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "count": {
                                        "type": "integer",
                                        "minimum": 1,
                                        "maximum": 100
                                    }
                                },
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/jwt-decoder": {
            "post": {
                "summary": "JWT Decoder",
                "description": "Header und Payload eines JWT dekodieren – ohne Signaturprüfung.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/timestamp-converter": {
            "post": {
                "summary": "Unix Timestamp Converter",
                "description": "Unix-Zeitstempel und ISO-8601-Zeitwerte umrechnen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "value": {
                                        "type": "string",
                                        "maxLength": 120
                                    }
                                },
                                "required": [
                                    "value"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/slug-generator": {
            "post": {
                "summary": "Slug Generator",
                "description": "Lesbare URL-Slugs aus Text erzeugen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/case-converter": {
            "post": {
                "summary": "Text Case Converter",
                "description": "Text in lower, UPPER, Title oder sentence case umwandeln.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    },
                                    "mode": {
                                        "type": "string",
                                        "enum": [
                                            "lower",
                                            "upper",
                                            "title",
                                            "sentence"
                                        ]
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/line-dedupe": {
            "post": {
                "summary": "Zeilen sortieren & Duplikate entfernen",
                "description": "Zeilen trimmen, deduplizieren und optional sortieren.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    },
                                    "sort": {
                                        "type": "boolean"
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/word-counter": {
            "post": {
                "summary": "Wörter & Zeichen zählen",
                "description": "Wörter, Zeichen und Zeilen zählen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "text": {
                                        "type": "string",
                                        "maxLength": 500000
                                    }
                                },
                                "required": [
                                    "text"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/meta-checker": {
            "post": {
                "summary": "Website Meta Checker",
                "description": "Title, Description, Canonical, Robots und H1 einer öffentlichen URL prüfen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/open-graph-checker": {
            "post": {
                "summary": "Open Graph Checker",
                "description": "Open-Graph- und Twitter-Card-Metadaten einer öffentlichen URL prüfen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/hreflang-checker": {
            "post": {
                "summary": "Hreflang Checker",
                "description": "Hreflang-Verweise einer öffentlichen Seite extrahieren und auflisten.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/url-to-markdown": {
            "post": {
                "summary": "URL zu Markdown/Text",
                "description": "Eine öffentliche HTML-Seite in vereinfachten, agentenfreundlichen Text umwandeln.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/link-extractor": {
            "post": {
                "summary": "Link Extractor",
                "description": "Links einer öffentlichen HTML-Seite extrahieren und nach intern/extern gruppieren.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/redirect-checker": {
            "post": {
                "summary": "Redirect Checker",
                "description": "Weiterleitungskette einer öffentlichen URL sicher nachvollziehen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/robots-checker": {
            "post": {
                "summary": "robots.txt Checker",
                "description": "robots.txt einer öffentlichen Website laden und wichtige Direktiven prüfen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/sitemap-checker": {
            "post": {
                "summary": "Sitemap Checker",
                "description": "XML-Sitemap laden, URL-Anzahl und Grundstruktur prüfen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/http-headers": {
            "post": {
                "summary": "HTTP & Security Header Checker",
                "description": "Status und wichtige Antwort-Header einer öffentlichen URL anzeigen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/accessibility-checker": {
            "post": {
                "summary": "Barrierefreiheits-Schnellcheck",
                "description": "Automatisierbare Barrierefreiheits-Indizien einer öffentlichen Webseite prüfen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/core-web-vitals": {
            "post": {
                "summary": "Core Web Vitals Check",
                "description": "Mobile oder Desktop-Feld- und Labordaten über PageSpeed Insights auswerten.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "type": "string",
                                        "format": "uri",
                                        "maxLength": 2048
                                    },
                                    "strategy": {
                                        "type": "string",
                                        "enum": [
                                            "mobile",
                                            "desktop"
                                        ]
                                    }
                                },
                                "required": [
                                    "url"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        },
        "/tool/email-domain-security": {
            "post": {
                "summary": "E-Mail-Domain-Sicherheitscheck",
                "description": "MX-, SPF-, DMARC- und optionale DKIM-DNS-Einträge einer Domain prüfen.",
                "security": [
                    {
                        "bearerAuth": []
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "domain": {
                                        "type": "string",
                                        "maxLength": 253
                                    },
                                    "dkim_selector": {
                                        "type": "string",
                                        "maxLength": 63
                                    }
                                },
                                "required": [
                                    "domain"
                                ],
                                "additionalProperties": false
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Tool result"
                    },
                    "422": {
                        "description": "Invalid input"
                    },
                    "429": {
                        "description": "Quota/rate limit"
                    }
                }
            }
        }
    }
}