Pega un JSON Schema, elige el destino y genera el fragmento localmente. La página indica qué palabras clave se han omitido, comprueba si el modo strict de OpenAI es aplicable y no envía nada a ningún proveedor.
Se ejecuta localmente en tu navegadorLa página lee un JSON Schema y escribe la configuración que cada proveedor espera para la salida estructurada: un response_format de OpenAI, una definición de herramienta de Anthropic, un generationConfig de Gemini o una interfaz TypeScript. La conversión es un recorrido local por el árbol del esquema: no se contacta con ningún proveedor ni interviene ninguna clave de API.
Como los cuatro destinos no aceptan las mismas palabras clave, la línea de estado enumera las que el destino elegido no puede asumir, y el fragmento se escribe sin ellas. Lee esa línea antes de pegar el fragmento en una petición: un $ref o un default descartado cambia lo que el modelo puede devolver.
OpenAI recibe un objeto response_format con un bloque json_schema; la marca strict se escribe como true solo cuando cada objeto del esquema fija additionalProperties en false y enumera todas sus propiedades en required, porque esa es la forma que OpenAI acepta en modo strict. En caso contrario, el fragmento lleva strict: false y un comentario lo explica.
Anthropic recibe un objeto tool cuyo input_schema es el esquema convertido, listo para el array tools. Gemini recibe un responseSchema con tipos en mayúsculas, const convertido en un enum de un solo valor y una unión anulable convertida en nullable. TypeScript recibe una interfaz cuyos nombres de propiedad coinciden exactamente con las claves JSON: las claves que no son identificadores válidos van entre comillas, uniones como type: ["string","null"] se conservan, y una raíz que no es un objeto pasa a ser un alias export type.
Las palabras clave de composición y referencia necesitan un resolutor, así que $ref, $defs, anyOf, oneOf, allOf, not, if/then/else, patternProperties y prefixItems no se trasladan a ningún destino. Las restricciones que las salidas de OpenAI y Anthropic sí conservan, como pattern, format, minimum o maxLength, se notifican en Gemini, que acepta un esquema más limitado.
El anidamiento se sigue hasta ocho niveles bajo la raíz; lo más profundo se sustituye por un esquema vacío y la línea de estado lo indica. En TypeScript tampoco hay sitio para restricciones como minLength o pattern: un tipo describe la forma y no valida, así que no forman parte de la interfaz.
El nombre del esquema se reduce a letras, dígitos, guiones y guiones bajos; si el campo está vacío se usa structured_response, los nombres de más de 64 caracteres se acortan en los destinos de proveedor y una interfaz TypeScript recibe además un identificador válido, de modo que un dígito inicial pasa a _123report. Cuando el texto debe cambiar, la línea de estado muestra el nombre realmente utilizado.
Si una ejecución no puede producir el fragmento —entrada vacía, JSON mal formado, un array o un objeto sin type ni properties— se indica el motivo, con línea y columna en los errores de JSON, y se vacía el panel de salida, de modo que un fragmento anterior nunca se confunda con el actual. No se sube nada: el esquema, el código generado y el nombre permanecen en el navegador.