{"ok":true,"site":{"host":"el-coso-3000.maranimatias.workers.dev","url":"https://el-coso-3000.maranimatias.workers.dev/placeholder","type":"live","desc":"Create image and video placeholders in your browser. Export transparent PNG, WebP, SVG or GIF, add optional soundtracks to MP4, WebM, MOV or MKV, and generate fake text data in English and Spanish.","tools":[{"name":"generate_placeholder","kind":"act","impl":"imperative","description":"Generates an image or video placeholder, or a file of fake placeholder data. For kind=image and kind=video: give a background and the text color is derived from it to guarantee WCAG contrast. Pass foreground as well to choose both yourself, and read the reported contrast to know how the pair came out. The text of the placeholder is the dimensions. Pastel palettes available: gray, red, orange, yellow, green, teal, blue, violet, rose. For kind=text: writes fake data instead of pixels, so width, height, palette, background and foreground do not apply and are refused. Use textPreset for a ready-made bundle such as a user profile or an API response, or textPreset=custom with textCategory and textGenerator for one specific value. The catalog spans person, internet, location, company, commerce, phone, date, finance, string, color, number, word, git, system, database, vehicle, airline, book, music, food, animal, science and lorem. Common ones: internet.email, internet.url, person.fullName, person.jobTitle, location.city, location.country, location.zipCode, company.name, commerce.productName, finance.amount, string.uuid, lorem.paragraph. The file extension follows textFormat: .txt, .json, .csv, .md. CSV separates its columns with ';' unless textDelimiter says otherwise, because that is the delimiter a spreadsheet expects where the decimal separator is a comma, which includes Spanish.","annotations":{"readOnlyHint":false,"untrustedContentHint":false},"inputSchema":{"type":"object","properties":{"width":{"type":"integer","minimum":1,"maximum":4096,"description":"Width in pixels."},"height":{"type":"integer","minimum":1,"maximum":4096,"description":"Height in pixels."},"kind":{"type":"string","enum":["image","video","text"],"description":"Generate a still image, a looping output, or a file of fake placeholder data. kind=text ignores every pixel setting below and uses the text* ones instead."},"imageFormat":{"type":"string","enum":["png","jpeg","webp","svg"],"description":"Output format for kind=image. Defaults to png."},"videoFormat":{"type":"string","enum":["mp4","webm","mov","mkv","gif","mjpeg-avi","jpeg-zip"],"description":"Output format for kind=video, including the animated image containers. Defaults to mp4."},"palette":{"type":"string","description":"Name of the pastel palette, for example \"azure\" or \"sage\". If background is passed too, background wins."},"background":{"type":"string","description":"Background color as 6 hex digits, for example \"E0E0E0\", without #. The text color is derived from it to guarantee contrast, unless foreground is passed too."},"foreground":{"type":"string","description":"Text color as 6 hex digits, for example \"2B2B2B\", without #. Only the dimensions are written on the placeholder, in this color. Passed without background, it keeps the background that is already set; the measured contrast is reported and may be below AA."},"duration":{"type":"number","minimum":1,"maximum":120,"description":"Seconds. Video only."},"fps":{"type":"integer","minimum":1,"maximum":60,"description":"Frames per second. Video only."},"showProgressBar":{"type":"boolean","description":"Draw a progress bar at the bottom. Video only."},"showTime":{"type":"boolean","description":"Draw the 0:03 / 0:10 clock. Video only."},"showText":{"type":"boolean","description":"Writes the dimensions in the middle of the placeholder. Defaults to true; set it to false for a frame with nothing written on it. It does not touch the clock or the progress bar, which have their own parameters."},"transparent":{"type":"boolean","description":"Leaves the background unpainted so the file carries an alpha channel. The background color still decides the text color, so the contrast guarantee is unchanged. Only png, webp, svg and gif honor it; the other formats export opaque."},"sound":{"type":"boolean","description":"Adds a soundtrack to the video. Defaults to false, and it only works for the video containers, not for gif, mjpeg-avi or jpeg-zip."},"soundTone":{"type":"string","enum":["tango","beep","tone","noise"],"description":"Which soundtrack: 'tango' is a synthesized tango nuevo at 100 BPM, 'beep' is a soft 440 Hz beep every second, 'tone' is the same pitch held quietly for the whole video, and 'noise' is white noise. Defaults to tango."},"textPreset":{"type":"string","enum":["sentence","paragraph","user","company","product","address","payment","api","custom"],"description":"A bundle of generators for kind=text: a lorem sentence or paragraph, a user profile, a company, a product, an address, a payment card, or an API response. 'custom' uses textCategory and textGenerator instead. Defaults to a lorem sentence."},"textCategory":{"type":"string","description":"Group of generators for kind=text, for example lorem, person, internet, location, company, commerce, finance or string. Only with textPreset=custom."},"textGenerator":{"type":"string","description":"The single generator to call for kind=text, written as category.method, for example internet.email or location.city. Only with textPreset=custom."},"textLocale":{"type":"string","enum":["en","es"],"description":"Which set of names, addresses and words kind=text draws on. A few generators come out the same in both: the lorem filler is latin in any language, and IBANs have no Spanish dataset, so finance.iban returns a Belgian one either way. Defaults to en."},"textCount":{"type":"integer","minimum":1,"maximum":1000,"description":"How many rows to generate for kind=text. Defaults to 10."},"textFormat":{"type":"string","enum":["plain","json","csv","md"],"description":"How the rows are written for kind=text. plain is bare text with no header, json is a JSON array with one object per row, csv and md are tables with a header row. Defaults to plain."},"textSeparator":{"type":"string","description":"What goes between the fields of one row in the text format, as the literal characters. Only read when textFormat is plain."},"textDelimiter":{"type":"string","enum":[";",",","\t","|"],"description":"What goes between the columns in the CSV format, as the character itself. Only read when textFormat is csv. The default is ';', which is what a spreadsheet expects where the decimal separator is a comma, Spanish included."},"download":{"type":"boolean","description":"If false, it only configures and returns the preview without downloading. Defaults to true."}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/placeholder","pages":["/placeholder","/placeholder.html"]},{"name":"generate_placeholder","kind":"act","impl":"declarative","description":"Configures and generates an image placeholder, a video placeholder, or a file of fake text data in the browser. For an image or a video: adjust dimensions, pastel palette, contrast and background (flat, transparent or an animated texture), and the file is downloaded. For text: fake names, addresses, emails, companies, products and payment details in English or Spanish, written as plain text, JSON, CSV or a Markdown table, and the rows are returned.","inputSchema":{"type":"object","properties":{"kind":{"type":"boolean"},"width":{"type":"number"},"height":{"type":"number"},"bg":{"type":"string"},"fg":{"type":"string"},"background":{"type":"boolean"},"textPreset":{"type":"string","enum":["sentence","paragraph","user","company","product","address","payment","api","custom"]},"textCategory":{"type":"string","enum":["lorem","person","internet","location","company","commerce","phone","date","finance","string","color","number","word","git","system","database","vehicle","airline","book","music","food","animal","science","datatype"]},"textGenerator":{"type":"string","enum":["lorem.word","lorem.words","lorem.sentence","lorem.sentences","lorem.paragraph","lorem.paragraphs","lorem.text","lorem.slug"]},"textCount":{"type":"number"},"textLocale":{"type":"string","enum":["en","es"]},"textFormat":{"type":"boolean"},"textSeparator":{"type":"string","enum":["newline","comma","semicolon","tab","space","custom"]},"textSeparatorCustom":{"type":"string","description":"Custom separator"},"textDelimiter":{"type":"string","enum":["semicolon","comma","tab","pipe"]},"imageFormat":{"type":"boolean"},"videoFormat":{"type":"boolean"},"quality":{"type":"number"},"duration":{"type":"number"},"fps":{"type":"number"},"showText":{"type":"boolean"},"showProgressBar":{"type":"boolean"},"showTime":{"type":"boolean"},"sound":{"type":"boolean"},"soundTone":{"type":"string","enum":["tango","beep","tone","noise"]},"textureMove":{"type":"boolean"},"textureSpeed":{"type":"string","enum":["1","1.5","2","2.5","3"]}}},"__source":"spec","__declarative":true,"page":"/placeholder","pages":["/placeholder","/placeholder.html"]}],"category":"Developer Tools","favicon":"/favicons/el-coso-3000.maranimatias.workers.dev.svg","apiSurface":"spec","toolCount":2}}