{
    "openapi": "3.1.0",
    "info": {
        "title": "Useful AI News API & Machine Discovery Specification",
        "version": "1.0.0",
        "description": "OpenAPI 3.1 specification for Useful AI News programmatic content retrieval, REST endpoints, and Roots AcceptMarkdown content negotiation.",
        "contact": {
            "name": "Useful AI News Developer Relations",
            "url": "https://www.usefulainews.com/developers/",
            "email": "editorial@usefulainews.com"
        },
        "license": {
            "name": "Useful AI News Attribution License",
            "url": "https://www.usefulainews.com/editorial-process/"
        }
    },
    "servers": [
        {
            "url": "https://www.usefulainews.com",
            "description": "Production Canonical Host"
        }
    ],
    "paths": {
        "/": {
            "get": {
                "summary": "Homepage & Publication Overview",
                "description": "Returns HTML by default, or clean Markdown overview when Accept: text/markdown is passed.",
                "responses": {
                    "200": {
                        "description": "Successful response",
                        "content": {
                            "text/html": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "text/markdown": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/{slug}/": {
            "get": {
                "summary": "Get Article by Slug",
                "description": "Retrieve full article. When requested with Accept: text/markdown, returns clean semantic Markdown.",
                "parameters": [
                    {
                        "name": "slug",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Article slug"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Article body",
                        "content": {
                            "text/html": {
                                "schema": {
                                    "type": "string"
                                }
                            },
                            "text/markdown": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "Article not found"
                    }
                }
            }
        },
        "/llms.txt": {
            "get": {
                "summary": "llms.txt Discovery Manifest",
                "description": "Standard machine-readable manifest following the llmstxt.org specification.",
                "responses": {
                    "200": {
                        "description": "llms.txt document",
                        "content": {
                            "text/markdown": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/llms-full.txt": {
            "get": {
                "summary": "Extended Research Manifest",
                "description": "Complete corpus catalog with extended summaries for RAG pipelines and autonomous crawlers.",
                "responses": {
                    "200": {
                        "description": "llms-full.txt document",
                        "content": {
                            "text/markdown": {
                                "schema": {
                                    "type": "string"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/.well-known/mcp.json": {
            "get": {
                "summary": "Model Context Protocol (MCP) Manifest",
                "description": "Standard MCP server manifest describing tools and resources available on Useful AI News.",
                "responses": {
                    "200": {
                        "description": "MCP JSON manifest",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/wp-json/wp/v2/posts": {
            "get": {
                "summary": "List Published Posts (REST API)",
                "description": "Native WordPress REST API endpoint supporting pagination and filtering.",
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 10,
                            "maximum": 100
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 1
                        }
                    },
                    {
                        "name": "search",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Array of post objects",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "type": "object"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}