{"openapi":"3.0.3","info":{"title":"robots.txt & llms.txt AI Crawler Policy Analyzer & Generator API","version":"1.0.0","description":"Evaluates RFC 9309 robots.txt rules across 12 AI training and search crawlers, validates llms.txt files, and generates drop-in AI crawler policies and llms.txt manifests."},"servers":[{"url":"https://api.tinplate.dev","description":"Production Edge Gateway"}],"components":{"schemas":{"RobotsLlmsResponseData":{"type":"object","properties":{"test_path":{"type":"string"},"ai_crawlers":{"type":"array","items":{"type":"object","properties":{"bot":{"type":"string"},"vendor":{"type":"string"},"purpose":{"type":"string","enum":["ai_training","ai_search"]},"status":{"type":"string","enum":["allowed","blocked"]},"matched_agent":{"type":"string"},"matched_rule":{"type":"string","nullable":true}},"required":["bot","vendor","purpose","status","matched_agent","matched_rule"]}},"summary":{"type":"object","properties":{"training_bots_allowed":{"type":"integer","minimum":0},"training_bots_blocked":{"type":"integer","minimum":0},"search_bots_allowed":{"type":"integer","minimum":0},"search_bots_blocked":{"type":"integer","minimum":0},"sitemaps":{"type":"array","items":{"type":"string"}}},"required":["training_bots_allowed","training_bots_blocked","search_bots_allowed","search_bots_blocked","sitemaps"]},"llms_txt_analysis":{"type":"object","properties":{"present":{"type":"boolean"},"valid":{"type":"boolean"},"title":{"type":"string","nullable":true},"summary":{"type":"string","nullable":true},"section_count":{"type":"integer","minimum":0},"link_count":{"type":"integer","minimum":0},"issues":{"type":"array","items":{"type":"string"}}},"required":["present","valid","title","summary","section_count","link_count","issues"]},"generated_robots_ai_snippet":{"type":"string"},"generated_llms_txt":{"type":"string","nullable":true}},"required":["test_path","ai_crawlers","summary","llms_txt_analysis","generated_robots_ai_snippet","generated_llms_txt"]},"RobotsLlmsRequest":{"type":"object","properties":{"robots_txt":{"type":"string","maxLength":131072,"example":"User-agent: *\nAllow: /\n\nUser-agent: GPTBot\nDisallow: /\n\nUser-agent: CCBot\nDisallow: /\n\nSitemap: https://tinplate.dev/sitemap.xml","description":"Raw robots.txt content to analyze."},"llms_txt":{"type":"string","maxLength":131072,"example":"# Tinplate Edge Micro-APIs\n\n> Stateless security and developer micro-APIs on Cloudflare Workers.\n\n## Documentation\n\n- [Architecture](https://tinplate.dev/docs/architecture): Full technical reference\n- [Privacy Notice](https://tinplate.dev/privacy): Zero payload logging policy","description":"Optional raw llms.txt content to validate against the llmstxt.org specification."},"test_path":{"type":"string","maxLength":512,"default":"/","example":"/docs/api","description":"URL path to test crawler permissions against (default '/')."},"desired_ai_policy":{"type":"string","enum":["allow_all","allow_search_block_training","block_all_ai"],"default":"allow_search_block_training","example":"allow_search_block_training","description":"Policy used to generate the recommended robots.txt AI crawler snippet."},"site_info":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":200},"summary":{"type":"string","maxLength":500},"links":{"type":"array","items":{"type":"object","properties":{"section":{"type":"string","default":"Documentation"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"description":{"type":"string"}},"required":["title","url"]},"maxItems":100}},"required":["title"],"description":"Optional site metadata used to generate a valid llms.txt file."}}},"ResponseMeta":{"type":"object","required":["request_id"],"properties":{"request_id":{"type":"string","format":"uuid"},"ms":{"type":"integer","minimum":0},"version":{"type":"string","example":"1.0.0"}}},"ErrorEnvelope":{"type":"object","required":["ok","error","meta"],"properties":{"ok":{"type":"boolean","enum":[false]},"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","example":"invalid_input"},"message":{"type":"string","example":"Request body failed validation"}}},"meta":{"$ref":"#/components/schemas/ResponseMeta"}}}},"parameters":{}},"paths":{"/v1/robots-llms-analyzer":{"post":{"tags":["26_ROBOTS_LLMS_ANALYZER"],"summary":"Analyze robots.txt AI crawler permissions, validate llms.txt, and generate policies","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RobotsLlmsRequest"}}}},"responses":{"200":{"description":"AI crawler permissions matrix, llms.txt validation, and generated snippets","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"data":{"$ref":"#/components/schemas/RobotsLlmsResponseData"},"meta":{"$ref":"#/components/schemas/ResponseMeta"}},"required":["ok","data","meta"]}}}},"400":{"description":"Invalid input or malformed JSON request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"401":{"description":"Missing or invalid authentication credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"413":{"description":"Request payload exceeds subscribed plan byte cap","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}}}