{
  "openapi": "3.1.0",
  "info": {
    "title": "Law Zava Content Discovery API",
    "version": "1.1.0",
    "description": "Read-only discovery documents, markdown negotiation, MCP, and A2A discovery for lawzava.com."
  },
  "servers": [
    {
      "url": "https://lawzava.com"
    }
  ],
  "tags": [
    {
      "name": "content"
    },
    {
      "name": "discovery"
    },
    {
      "name": "mcp"
    },
    {
      "name": "oauth"
    },
    {
      "name": "a2a"
    }
  ],
  "paths": {
    "/": {
      "get": {
        "tags": [
          "content"
        ],
        "summary": "Fetch the homepage",
        "description": "Returns HTML by default and a markdown representation when Accept: text/markdown is requested.",
        "responses": {
          "200": {
            "description": "Homepage response"
          }
        }
      }
    },
    "/feed.json": {
      "get": {
        "tags": [
          "content"
        ],
        "summary": "Fetch the site JSON feed",
        "responses": {
          "200": {
            "description": "JSON Feed 1.1 document"
          }
        }
      }
    },
    "/llms.txt": {
      "get": {
        "tags": [
          "content"
        ],
        "summary": "Fetch the llms.txt summary",
        "responses": {
          "200": {
            "description": "Plain text summary"
          }
        }
      }
    },
    "/.well-known/api-catalog": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "Fetch the RFC 9727 API catalog",
        "responses": {
          "200": {
            "description": "Linkset JSON API catalog"
          }
        }
      }
    },
    "/.well-known/agent-skills/index.json": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "Fetch the agent skills discovery index",
        "responses": {
          "200": {
            "description": "Agent Skills Discovery RFC index"
          }
        }
      }
    },
    "/.well-known/mcp/server-card.json": {
      "get": {
        "tags": [
          "discovery",
          "mcp"
        ],
        "summary": "Fetch the MCP server card",
        "responses": {
          "200": {
            "description": "MCP server metadata"
          }
        }
      }
    },
    "/.well-known/agent-card.json": {
      "get": {
        "tags": [
          "discovery",
          "a2a"
        ],
        "summary": "Fetch the A2A agent card",
        "responses": {
          "200": {
            "description": "A2A discovery metadata"
          }
        }
      }
    },
    "/.well-known/oauth-authorization-server": {
      "get": {
        "tags": [
          "oauth"
        ],
        "summary": "Fetch OAuth authorization server metadata",
        "responses": {
          "200": {
            "description": "RFC 8414 metadata"
          }
        }
      }
    },
    "/.well-known/oauth-protected-resource": {
      "get": {
        "tags": [
          "oauth"
        ],
        "summary": "Fetch OAuth protected resource metadata",
        "responses": {
          "200": {
            "description": "RFC 9728 metadata"
          }
        }
      }
    },
    "/oauth/token": {
      "post": {
        "tags": [
          "oauth"
        ],
        "summary": "Issue a short-lived bearer token for the read-only MCP endpoint",
        "requestBody": {
          "required": true,
          "content": {
            "application/x-www-form-urlencoded": {},
            "application/json": {}
          }
        },
        "responses": {
          "200": {
            "description": "Bearer token response"
          }
        }
      }
    },
    "/mcp": {
      "post": {
        "tags": [
          "mcp"
        ],
        "summary": "Invoke the read-only MCP transport",
        "security": [
          {
            "oauth2ClientCredentials": [
              "mcp.read"
            ]
          }
        ],
        "responses": {
          "200": {
            "description": "JSON-RPC response"
          },
          "401": {
            "description": "Missing or invalid bearer token"
          }
        }
      }
    },
    "/a2a/v1": {
      "get": {
        "tags": [
          "a2a"
        ],
        "summary": "Fetch the discovery-only A2A service descriptor",
        "responses": {
          "200": {
            "description": "A2A descriptor"
          }
        }
      }
    },
    "/api/status.json": {
      "get": {
        "tags": [
          "discovery"
        ],
        "summary": "Fetch a lightweight status document",
        "responses": {
          "200": {
            "description": "Status response"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "oauth2ClientCredentials": {
        "type": "oauth2",
        "flows": {
          "clientCredentials": {
            "tokenUrl": "https://lawzava.com/oauth/token",
            "scopes": {
              "mcp.read": "Call the read-only MCP tools."
            }
          }
        }
      }
    }
  }
}
