Cole um JSON Schema, escolha o destino e gere o trecho localmente. A página indica quais palavras-chave ficaram de fora, verifica se o modo strict da OpenAI pode ser usado e não envia nada a provedor algum.
Funciona localmente no seu navegadorA página lê um JSON Schema e escreve a configuração que cada provedor espera para saída estruturada: um response_format da OpenAI, uma definição de ferramenta da Anthropic, um generationConfig do Gemini ou uma interface TypeScript. A conversão é uma leitura local da árvore do schema: nenhum provedor é contatado e nenhuma chave de API entra em cena.
Como os quatro destinos não aceitam as mesmas palavras-chave, a linha de status lista as que o destino escolhido não consegue assumir, e o trecho é escrito sem elas. Leia essa linha antes de colar o trecho em uma requisição: um $ref ou um default descartado muda o que o modelo pode devolver.
A OpenAI recebe um objeto response_format com um bloco json_schema; a marca strict só é escrita como true quando cada objeto do schema define additionalProperties como false e lista todas as propriedades em required, porque é essa a forma que a OpenAI aceita no modo strict. Caso contrário, o trecho leva strict: false e um comentário explica por quê.
A Anthropic recebe um objeto tool cujo input_schema é o schema convertido, pronto para o array tools. O Gemini recebe um responseSchema com tipos em maiúsculas, const convertido em enum de valor único e uma união anulável convertida em nullable. O TypeScript recebe uma interface cujos nomes de propriedade coincidem exatamente com as chaves JSON: chaves que não são identificadores válidos ficam entre aspas, uniões como type: ["string","null"] sobrevivem, e uma raiz que não é objeto vira um alias export type.
Palavras-chave de composição e referência exigem um resolvedor, então $ref, $defs, anyOf, oneOf, allOf, not, if/then/else, patternProperties e prefixItems não entram em nenhum destino. As restrições que as saídas da OpenAI e da Anthropic mantêm, como pattern, format, minimum ou maxLength, são avisadas no Gemini, que aceita um schema mais estreito.
O aninhamento é seguido até oito níveis abaixo da raiz; o que é mais profundo vira um schema vazio e a linha de status avisa. No TypeScript também não há lugar para restrições como minLength ou pattern: um tipo descreve a forma e não valida, então elas não fazem parte da interface.
O nome do schema é reduzido a letras, dígitos, hífens e sublinhados; campo vazio vira structured_response, nomes com mais de 64 caracteres são encurtados nos destinos de provedor, e uma interface TypeScript também recebe um identificador válido, então um dígito inicial vira _123report. Sempre que o texto precisa mudar, a linha de status mostra o nome realmente usado.
Quando uma execução não consegue produzir o trecho — entrada vazia, JSON malformado, um array ou um objeto sem type nem properties — o motivo é informado, com linha e coluna nos erros de JSON, e o painel de saída é esvaziado, para que um trecho anterior nunca seja confundido com o atual. Nada é enviado: o schema, o código gerado e o nome ficam no navegador.