{
  "info": {
    "contact": {
      "email": "m.blode@gmail.com",
      "name": "Matthew Blode",
      "url": "https://blode.co"
    },
    "description": "blode.co is a public site. Agents should start with /llms.txt or /llms-full.txt for markdown, then use the MCP server at /mcp to search writing and fetch pages. This document describes those existing endpoints. There is no REST content API and no API key.",
    "license": {
      "name": "Content is public. Cite the source URL.",
      "url": "https://blode.co/developers"
    },
    "summary": "Machine-readable surfaces already on the site.",
    "title": "blode.co MCP and discovery",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/mcp": {
      "get": {
        "description": "Returns the MCP server name, protocol label, and the tool and resource names this site exposes. Use this to confirm the endpoint before sending JSON-RPC. No authentication.",
        "operationId": "getMcpInfo",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "protocol": {
                      "const": "mcp",
                      "type": "string"
                    },
                    "resources": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "tools": {
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "version": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "version",
                    "protocol",
                    "tools",
                    "resources"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Server info."
          }
        },
        "summary": "MCP server info",
        "tags": [
          "MCP"
        ]
      },
      "post": {
        "description": "JSON-RPC 2.0 endpoint for the Model Context Protocol. Initialize the session, list tools and resources, then call search_writing or get_page, or read a blode:// resource. Streamable HTTP. No authentication.",
        "operationId": "mcpJsonRpc",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "id": {
                    "description": "Request id echoed on the response. Null for notifications.",
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "null"
                      }
                    ]
                  },
                  "jsonrpc": {
                    "const": "2.0",
                    "type": "string"
                  },
                  "method": {
                    "description": "MCP method name. Use initialize, tools/list, tools/call, resources/list, or resources/read.",
                    "type": "string"
                  },
                  "params": {
                    "additionalProperties": true,
                    "description": "Method-specific arguments. Omit for methods that take none.",
                    "type": "object"
                  }
                },
                "required": [
                  "jsonrpc",
                  "id",
                  "method"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "oneOf": [
                    {
                      "additionalProperties": false,
                      "properties": {
                        "id": {
                          "oneOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "jsonrpc": {
                          "const": "2.0",
                          "type": "string"
                        },
                        "result": {
                          "additionalProperties": true,
                          "description": "Method-specific result from the MCP server.",
                          "type": "object"
                        }
                      },
                      "required": [
                        "jsonrpc",
                        "id",
                        "result"
                      ],
                      "type": "object"
                    },
                    {
                      "additionalProperties": false,
                      "properties": {
                        "error": {
                          "additionalProperties": false,
                          "properties": {
                            "code": {
                              "description": "JSON-RPC error code. Parse errors are -32700; invalid requests are -32600; unknown methods are -32601.",
                              "type": "integer"
                            },
                            "data": {
                              "description": "Optional extra detail from the MCP server."
                            },
                            "message": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "code",
                            "message"
                          ],
                          "type": "object"
                        },
                        "id": {
                          "oneOf": [
                            {
                              "type": "string"
                            },
                            {
                              "type": "number"
                            },
                            {
                              "type": "null"
                            }
                          ]
                        },
                        "jsonrpc": {
                          "const": "2.0",
                          "type": "string"
                        }
                      },
                      "required": [
                        "jsonrpc",
                        "id",
                        "error"
                      ],
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "description": "JSON-RPC success or error object."
          }
        },
        "summary": "MCP JSON-RPC",
        "tags": [
          "MCP"
        ]
      }
    },
    "/openapi.json": {
      "get": {
        "description": "Returns this OpenAPI 3.1 document as JSON. Use it to see the MCP methods and the discovery URLs on the site. No authentication.",
        "operationId": "getOpenApiSpec",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "properties": {
                    "info": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "openapi": {
                      "const": "3.1.0",
                      "type": "string"
                    },
                    "paths": {
                      "additionalProperties": true,
                      "type": "object"
                    }
                  },
                  "required": [
                    "openapi",
                    "info",
                    "paths"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "OpenAPI 3.1 document."
          }
        },
        "summary": "OpenAPI document",
        "tags": [
          "Discovery"
        ]
      }
    }
  },
  "servers": [
    {
      "description": "Production",
      "url": "https://blode.co"
    }
  ],
  "tags": [
    {
      "description": "Machine-readable indexes already on the site.",
      "name": "Discovery"
    },
    {
      "description": "Model Context Protocol server at /mcp.",
      "name": "MCP"
    }
  ]
}