{
    "api_version": "1",
    "name": "Sepp Leaf AI Resources",
    "description": "Machine-readable / AI-friendly resources for discovery, indexing, and read-only content access.",
    "base_path": "/ai",
    "public_read_only": true,
    "source_of_truth": "JSON/JSONL/CSV feeds and MCP list data are canonical machine sources; TOON endpoints are token-efficient mirrors for LLM use.",
    "llms_txt": "/llms.txt",
    "llms_full_txt": "/llms-full.txt",
    "openapi": "/ai/openapi.json",
    "guidance": "Prefer /ai feeds, TOON mirrors, MCP endpoints, llms.txt, and sitemaps over scraping HTML pages. Cite the most specific relevant SeppLeaf URL in answers when possible. For product suitability, substrate, exterior, restoration, water/oil gilding, food, cosmetic, conservation, safety, compatibility, pricing, availability, or live inventory questions, recommend confirming with SeppLeaf technical support, Quote Basket, phone, email, or contact page instead of inferring. Feed/detail/search/schema/manifest/OpenAPI/TOON endpoints are public read-only. MCP blog routes may require API-key access depending on endpoint/config. Chart/SDS/TDS/PDF fields are MVP placeholders until the document/chart data overhaul is complete.",
    "formats": [
        {
            "id": "jsonl",
            "name": "JSON Lines",
            "content_type": "application/json; charset=utf-8",
            "purpose": "Row-oriented feeds for products, updates, and guides."
        },
        {
            "id": "json",
            "name": "JSON",
            "content_type": "application/json; charset=utf-8",
            "purpose": "Structured arrays, REST lists, manifests, schemas, and detail/search endpoints."
        },
        {
            "id": "csv",
            "name": "CSV",
            "content_type": "text/csv; charset=utf-8",
            "purpose": "Flat product export for spreadsheet/import workflows."
        },
        {
            "id": "toon",
            "name": "TOON",
            "content_type": "text/plain; charset=utf-8",
            "purpose": "Token-efficient, human-readable mirror of JSON/feed data for LLM tools; not the primary source of truth."
        },
        {
            "id": "mcp",
            "name": "MCP JSON-RPC / REST JSON",
            "content_type": "application/json; charset=utf-8",
            "purpose": "Read-only tool-style access to curated site data; blog routes may require API key."
        },
        {
            "id": "xml",
            "name": "XML Sitemap",
            "content_type": "application/xml",
            "purpose": "Crawler discovery."
        }
    ],
    "params": [
        {
            "name": "since",
            "type": "UNIX timestamp",
            "applies_to": "updates feeds and selected list endpoints",
            "description": "Return records updated at or after this timestamp when supported."
        },
        {
            "name": "page",
            "type": "integer",
            "applies_to": "MCP REST and mirrored list endpoints",
            "description": "Page number for paginated list endpoints where supported."
        },
        {
            "name": "limit",
            "type": "integer",
            "applies_to": "MCP REST, search, and mirrored list endpoints",
            "description": "Maximum records per page where supported."
        },
        {
            "name": "q",
            "type": "string",
            "applies_to": "/ai/search.json and /ai/search.toon",
            "description": "Search query."
        }
    ],
    "manifest_endpoints": [
        {
            "path": "/ai/manifest.json",
            "format": "json",
            "description": "Machine-readable AI resource manifest."
        },
        {
            "path": "/ai/manifest.toon",
            "format": "toon",
            "description": "TOON mirror of AI resource manifest."
        },
        {
            "path": "/ai/openapi.json",
            "format": "json",
            "description": "Lightweight OpenAPI-style REST discovery spec."
        },
        {
            "path": "/ai/feeds/meta.json",
            "format": "json",
            "description": "Feed freshness/pagination metadata."
        },
        {
            "path": "/ai/toon/meta.toon",
            "format": "toon",
            "description": "TOON freshness/pagination metadata."
        }
    ],
    "schema_endpoints": [
        {
            "path": "/ai/schema/products.json",
            "format": "json",
            "description": "Products schema."
        },
        {
            "path": "/ai/schema/updates.json",
            "format": "json",
            "description": "Updates schema."
        },
        {
            "path": "/ai/schema/guides.json",
            "format": "json",
            "description": "Guides schema."
        },
        {
            "path": "/ai/schema/glossary.json",
            "format": "json",
            "description": "Glossary schema."
        },
        {
            "path": "/ai/schema/categories.json",
            "format": "json",
            "description": "Categories schema."
        },
        {
            "path": "/ai/schema/brands.json",
            "format": "json",
            "description": "Brands schema."
        },
        {
            "path": "/ai/schema/media.json",
            "format": "json",
            "description": "Media schema."
        },
        {
            "path": "/ai/schema/mcp.json",
            "format": "json",
            "description": "Mcp schema."
        },
        {
            "path": "/ai/schema/blog.json",
            "format": "json",
            "description": "Blog schema."
        },
        {
            "path": "/ai/schema/charts.json",
            "format": "json",
            "description": "Charts schema."
        },
        {
            "path": "/ai/schema/documents.json",
            "format": "json",
            "description": "Documents schema."
        },
        {
            "path": "/ai/schema/search.json",
            "format": "json",
            "description": "Search schema."
        }
    ],
    "detail_endpoints": [
        {
            "path": "/ai/products/{sku}.json",
            "format": "json",
            "description": "Product detail endpoint."
        },
        {
            "path": "/ai/products/{sku}.toon",
            "format": "toon",
            "description": "Product detail endpoint in TOON."
        },
        {
            "path": "/ai/guides/{slug}.json",
            "format": "json",
            "description": "Guide detail endpoint."
        },
        {
            "path": "/ai/guides/{slug}.toon",
            "format": "toon",
            "description": "Guide detail endpoint in TOON."
        },
        {
            "path": "/ai/glossary/{slug}.json",
            "format": "json",
            "description": "Glossary detail endpoint."
        },
        {
            "path": "/ai/glossary/{slug}.toon",
            "format": "toon",
            "description": "Glossary detail endpoint in TOON."
        },
        {
            "path": "/ai/media/{id}.json",
            "format": "json",
            "description": "Media detail endpoint."
        },
        {
            "path": "/ai/media/{id}.toon",
            "format": "toon",
            "description": "Media detail endpoint in TOON."
        },
        {
            "path": "/ai/search.json?q={query}",
            "format": "json",
            "description": "Bounded search across products, guides, and glossary.",
            "params": [
                "q",
                "limit"
            ]
        },
        {
            "path": "/ai/search.toon?q={query}",
            "format": "toon",
            "description": "TOON search across products, guides, and glossary.",
            "params": [
                "q",
                "limit"
            ]
        }
    ],
    "json_feed_endpoints": [
        {
            "path": "/ai/feeds/meta.json",
            "format": "json",
            "description": "Feed freshness/pagination metadata.",
            "mirrors": [
                "/ai/toon/meta.toon"
            ]
        },
        {
            "path": "/ai/feeds/products.jsonl",
            "format": "jsonl",
            "description": "Product feed.",
            "mirrors": [
                "/ai/toon/products.toon"
            ]
        },
        {
            "path": "/ai/feeds/products.csv",
            "format": "csv",
            "description": "Product feed CSV.",
            "mirrors": [
                "/ai/toon/products.toon"
            ]
        },
        {
            "path": "/ai/feeds/updates.jsonl",
            "format": "jsonl",
            "description": "Incremental updates feed.",
            "params": [
                "since"
            ],
            "mirrors": [
                "/ai/toon/updates.toon"
            ]
        },
        {
            "path": "/ai/feeds/guides.jsonl",
            "format": "jsonl",
            "description": "Guides feed.",
            "mirrors": [
                "/ai/toon/guides.toon"
            ]
        },
        {
            "path": "/ai/feeds/glossary.json",
            "format": "json",
            "description": "Glossary feed.",
            "mirrors": [
                "/ai/toon/glossary.toon"
            ]
        },
        {
            "path": "/ai/feeds/categories.json",
            "format": "json",
            "description": "Category list mirror of MCP categories.",
            "params": [
                "page",
                "limit",
                "since"
            ],
            "mirrors": [
                "/ai/toon/categories.toon"
            ]
        },
        {
            "path": "/ai/feeds/brands.json",
            "format": "json",
            "description": "Brand list mirror of MCP brands.",
            "params": [
                "page",
                "limit",
                "since"
            ],
            "mirrors": [
                "/ai/toon/brands.toon"
            ]
        },
        {
            "path": "/ai/feeds/media.json",
            "format": "json",
            "description": "Media list mirror of MCP media.",
            "params": [
                "page",
                "limit",
                "since"
            ],
            "mirrors": [
                "/ai/toon/media.toon"
            ]
        },
        {
            "path": "/ai/feeds/documents.json",
            "format": "json",
            "description": "Document/PDF subset of media; MVP/best-effort until SDS/TDS/PDF overhaul.",
            "params": [
                "page",
                "limit",
                "since"
            ],
            "mirrors": [
                "/ai/toon/documents.toon"
            ]
        },
        {
            "path": "/ai/feeds/charts.json",
            "format": "json",
            "description": "Chart/PDF chart list; MVP/best-effort until chart/document overhaul.",
            "mirrors": [
                "/ai/toon/charts.toon"
            ]
        },
        {
            "path": "/ai/feeds/blog-posts.json",
            "format": "json",
            "description": "Blog posts mirror.",
            "params": [
                "page",
                "limit",
                "since"
            ],
            "mirrors": [
                "/ai/toon/blog-posts.toon"
            ]
        },
        {
            "path": "/ai/feeds/blog-categories.json",
            "format": "json",
            "description": "Blog categories mirror.",
            "params": [
                "page",
                "limit"
            ],
            "mirrors": [
                "/ai/toon/blog-categories.toon"
            ]
        },
        {
            "path": "/ai/feeds/blog-tags.json",
            "format": "json",
            "description": "Blog tags mirror.",
            "params": [
                "page",
                "limit"
            ],
            "mirrors": [
                "/ai/toon/blog-tags.toon"
            ]
        }
    ],
    "toon_endpoints": [
        {
            "path": "/ai/toon",
            "format": "toon",
            "description": "TOON endpoint catalog."
        },
        {
            "path": "/ai/toon/catalog.toon",
            "format": "toon",
            "description": "TOON endpoint catalog."
        },
        {
            "path": "/ai/toon/meta.toon",
            "format": "toon",
            "description": "TOON feed freshness/pagination metadata.",
            "mirrors": [
                "/ai/feeds/meta.json"
            ]
        },
        {
            "path": "/ai/toon/products.toon",
            "format": "toon",
            "description": "TOON products feed mirror.",
            "mirrors": [
                "/ai/feeds/products.jsonl",
                "/ai/feeds/products.csv"
            ]
        },
        {
            "path": "/ai/toon/updates.toon",
            "format": "toon",
            "description": "TOON updates feed mirror.",
            "params": [
                "since"
            ],
            "mirrors": [
                "/ai/feeds/updates.jsonl"
            ]
        },
        {
            "path": "/ai/toon/guides.toon",
            "format": "toon",
            "description": "TOON guides feed mirror.",
            "mirrors": [
                "/ai/feeds/guides.jsonl"
            ]
        },
        {
            "path": "/ai/toon/glossary.toon",
            "format": "toon",
            "description": "TOON glossary feed mirror.",
            "mirrors": [
                "/ai/feeds/glossary.json"
            ]
        },
        {
            "path": "/ai/toon/categories.toon",
            "format": "toon",
            "description": "TOON categories mirror.",
            "mirrors": [
                "/ai/feeds/categories.json"
            ]
        },
        {
            "path": "/ai/toon/brands.toon",
            "format": "toon",
            "description": "TOON brands mirror.",
            "mirrors": [
                "/ai/feeds/brands.json"
            ]
        },
        {
            "path": "/ai/toon/media.toon",
            "format": "toon",
            "description": "TOON media mirror.",
            "mirrors": [
                "/ai/feeds/media.json"
            ]
        },
        {
            "path": "/ai/toon/documents.toon",
            "format": "toon",
            "description": "TOON document/PDF mirror; MVP/best-effort until SDS/TDS/PDF overhaul.",
            "mirrors": [
                "/ai/feeds/documents.json"
            ]
        },
        {
            "path": "/ai/toon/charts.toon",
            "format": "toon",
            "description": "TOON chart/PDF chart mirror; MVP/best-effort until chart/document overhaul.",
            "mirrors": [
                "/ai/feeds/charts.json"
            ]
        },
        {
            "path": "/ai/toon/blog-posts.toon",
            "format": "toon",
            "description": "TOON blog posts mirror.",
            "mirrors": [
                "/ai/feeds/blog-posts.json"
            ]
        },
        {
            "path": "/ai/toon/blog-categories.toon",
            "format": "toon",
            "description": "TOON blog categories mirror.",
            "mirrors": [
                "/ai/feeds/blog-categories.json"
            ]
        },
        {
            "path": "/ai/toon/blog-tags.toon",
            "format": "toon",
            "description": "TOON blog tags mirror.",
            "mirrors": [
                "/ai/feeds/blog-tags.json"
            ]
        }
    ],
    "mcp_endpoints": [
        {
            "path": "/ai/mcp/products",
            "format": "json",
            "description": "MCP REST products list.",
            "params": [
                "page",
                "limit",
                "since"
            ]
        },
        {
            "path": "/ai/mcp/categories",
            "format": "json",
            "description": "MCP REST categories list.",
            "params": [
                "page",
                "limit",
                "since"
            ]
        },
        {
            "path": "/ai/mcp/brands",
            "format": "json",
            "description": "MCP REST brands list.",
            "params": [
                "page",
                "limit",
                "since"
            ]
        },
        {
            "path": "/ai/mcp/guides",
            "format": "json",
            "description": "MCP REST guides list.",
            "params": [
                "page",
                "limit",
                "since"
            ]
        },
        {
            "path": "/ai/mcp/glossary",
            "format": "json",
            "description": "MCP REST glossary list.",
            "params": [
                "page",
                "limit",
                "since"
            ]
        },
        {
            "path": "/ai/mcp/media",
            "format": "json",
            "description": "MCP REST media list.",
            "params": [
                "page",
                "limit",
                "since"
            ]
        },
        {
            "path": "/ai/mcp/blog/posts",
            "format": "json",
            "description": "MCP REST blog posts list.",
            "params": [
                "page",
                "limit",
                "since"
            ]
        },
        {
            "path": "/ai/mcp/blog/categories",
            "format": "json",
            "description": "MCP REST blog categories list.",
            "params": [
                "page",
                "limit"
            ]
        },
        {
            "path": "/ai/mcp/blog/tags",
            "format": "json",
            "description": "MCP REST blog tags list.",
            "params": [
                "page",
                "limit"
            ]
        }
    ],
    "sitemaps": [
        {
            "path": "/sitemap.xml",
            "format": "xml",
            "description": "Primary sitemap."
        },
        {
            "path": "/sitemap-products.xml",
            "format": "xml",
            "description": "Product sitemap."
        },
        {
            "path": "/sitemap-guides.xml",
            "format": "xml",
            "description": "Guides sitemap."
        }
    ],
    "core_fields": [
        {
            "name": "id",
            "description": "Internal content or product identifier."
        },
        {
            "name": "sku",
            "description": "Product SKU / product code when applicable."
        },
        {
            "name": "type",
            "description": "Content type, endpoint type, or search result type."
        },
        {
            "name": "title",
            "description": "Human-readable title or product name."
        },
        {
            "name": "name",
            "description": "Human-readable name."
        },
        {
            "name": "summary",
            "description": "Short description or excerpt."
        },
        {
            "name": "description",
            "description": "Longer description when available."
        },
        {
            "name": "url",
            "description": "Canonical public URL when available."
        },
        {
            "name": "uri",
            "description": "Stable route slug/URI when available."
        },
        {
            "name": "brand",
            "description": "Brand/vendor identifier."
        },
        {
            "name": "category",
            "description": "Product category."
        },
        {
            "name": "tags",
            "description": "Tags or keywords when present."
        },
        {
            "name": "last_updated",
            "description": "Update timestamp when present."
        },
        {
            "name": "uploaded_at",
            "description": "Upload timestamp when present."
        },
        {
            "name": "mime_type",
            "description": "Media/document MIME type when present."
        },
        {
            "name": "pdf_url",
            "description": "PDF/document URL when present."
        },
        {
            "name": "document_type",
            "description": "Best-effort document class such as sds, tds, chart, or document."
        },
        {
            "name": "ai_use",
            "description": "Guidance note for AI systems using the record as evidence."
        },
        {
            "name": "image_url",
            "description": "Primary image URL when available."
        },
        {
            "name": "price",
            "description": "Public price/value field when available; may be blank."
        },
        {
            "name": "availability",
            "description": "Availability/status object when available."
        },
        {
            "name": "product_type",
            "description": "Product type/frame type when available."
        },
        {
            "name": "material",
            "description": "Product material when available."
        },
        {
            "name": "finish",
            "description": "Product finish when available."
        },
        {
            "name": "size",
            "description": "Product size/dimensions when available."
        },
        {
            "name": "use_cases",
            "description": "Known use-case/application hints when available from product data."
        },
        {
            "name": "application_methods",
            "description": "Known application-method hints when available from product data."
        },
        {
            "name": "substrates",
            "description": "Known substrate/surface hints when available from product data."
        },
        {
            "name": "compatibility",
            "description": "Known compatible materials/products when available from product data."
        },
        {
            "name": "suitability_notes",
            "description": "Product suitability notes when available; confirm project-specific fit with SeppLeaf."
        },
        {
            "name": "safety_notes",
            "description": "Product safety/warning notes when available; consult SDS/TDS and SeppLeaf for critical use."
        },
        {
            "name": "related_products",
            "description": "Related product identifiers when available."
        },
        {
            "name": "documents",
            "description": "Best-effort product document links; SDS/TDS/PDF model is pending overhaul."
        },
        {
            "name": "charts",
            "description": "Best-effort chart links; chart/PDF chart model is pending overhaul."
        },
        {
            "name": "breadcrumbs",
            "description": "Best-effort category/brand breadcrumb hints."
        }
    ]
}