# llms.txt Desk > llms.txt Desk checks an llms.txt file against the llmstxt.org v2 format and the proposal's reference parser in the browser, reads a page list (sitemap.xml, URLs, tree output or repository paths), and runs two paid lanes: create a new llms.txt from a page list, or update an existing one for what changed. The free check needs no account and uploads nothing. The paid lanes run on the gpt-terra model and are metered in SkillSafe credits; every link a reply returns is checked against the input, and the returned file is checked again. Derived from the agent skills @github/create-llms and @github/update-llms (github/awesome-copilot, MIT). What the free check reports, each finding numbered F1, F2 and tagged by source: "spec" (the llmstxt.org v2 format: one H1 first, a blockquote summary, details without headings, H2 sections holding one-line [name](url): notes lists), "parser" (what the reference parser llms_txt/miniparse.py does differently: it throws on "*" bullets and wrapped items, keeps only the last of two same-named sections, and misses a summary that the first H2 follows directly), "skill" (the source skills' checklist: a summary and a note on every link), "advice" (relative links, http links, file size) and "coverage" (links a pasted page list no longer has, pages the file leaves out). Run input: a JSON object with "task" set to "create" or "update". Create: {"task":"create","facts":"","about":"...","name":"..."}. Update: {"task":"update","llms":"","facts":"","changes":"what changed"}. The reply is one JSON object: create returns headline, llms_txt, sections[{name,why,refs}], left_out[{refs,why}], assumptions, to_check; update returns headline, verdict (broken, out_of_date or ok), finding_responses[{ref,stance,note}], changes[{action,where,what,why}], updated_llms_txt (or null) and to_check. ## Docs - [llms.txt Desk](https://llms-desk.skillsafe.ai/): The app - paste an llms.txt or a page list, check it free, then create or update - [API tutorial](https://llms-desk.skillsafe.ai/api.html): HTTP API for both lanes with the exact input fields, reply shapes and code in eight languages ## Sources - [The /llms.txt file, v2](https://llmstxt.org/): The proposal the format checks follow - [Changes in v2](https://llmstxt.org/changes.html): What v2 changed, including the Optional section losing its mechanical meaning - [Reference parser](https://github.com/AnswerDotAI/llms-txt/blob/main/llms_txt/miniparse.py): The parser whose behaviour the page reproduces - [create-llms skill](https://skillsafe.ai/skill/@github/create-llms): Source skill for the create lane - [update-llms skill](https://skillsafe.ai/skill/@github/update-llms): Source skill for the update lane ## Optional - [Notice](https://llms-desk.skillsafe.ai/NOTICE.txt): Sources, licences, and where the skills and the proposal differ