{
  "$type": "com.atproto.lexicon.schema",
  "createdAt": "2026-08-14T06:36:46.983002Z",
  "defs": {
    "envVar": {
      "description": "One environment variable the server reads.",
      "properties": {
        "description": {
          "description": "What the variable configures and where to get a value.",
          "maxGraphemes": 300,
          "maxLength": 3000,
          "type": "string"
        },
        "name": {
          "description": "Variable name, e.g. EBAY_CLIENT_ID.",
          "maxGraphemes": 64,
          "maxLength": 640,
          "type": "string"
        },
        "required": {
          "description": "Whether the server refuses to work without this. Defaults to false (optional).",
          "type": "boolean"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "main": {
      "description": "A self-published declaration that this identity maintains an MCP (Model Context Protocol) server. One record per server, on the publisher's own PDS; the record key is conventionally a slug of the server name so redeploys update in place. Directories (e.g. mcp.waow.tech) are projections over these records.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "description": "Client-declared timestamp when this record was created.",
            "format": "datetime",
            "type": "string"
          },
          "description": {
            "description": "What the server does, one paragraph.",
            "maxGraphemes": 500,
            "maxLength": 5000,
            "type": "string"
          },
          "environment": {
            "description": "Environment variables the server reads, so clients know what to configure before running or connecting.",
            "items": {
              "ref": "#envVar",
              "type": "ref"
            },
            "maxLength": 32,
            "type": "array"
          },
          "framework": {
            "description": "Authoring framework. Informational.",
            "knownValues": [
              "fastmcp",
              "mcp-sdk"
            ],
            "maxGraphemes": 32,
            "maxLength": 320,
            "type": "string"
          },
          "language": {
            "description": "Implementation language. Informational — clients never need it to run or connect.",
            "knownValues": [
              "python",
              "typescript",
              "javascript",
              "go",
              "rust",
              "zig"
            ],
            "maxGraphemes": 32,
            "maxLength": 320,
            "type": "string"
          },
          "manifest": {
            "description": "URL of a machine-readable manifest (e.g. a raw fastmcp.json) describing how to run the server from source.",
            "format": "uri",
            "type": "string"
          },
          "name": {
            "description": "Short name of the server (e.g. 'partscout').",
            "maxGraphemes": 64,
            "maxLength": 640,
            "type": "string"
          },
          "packages": {
            "description": "Where the server is distributed, one entry per registry. Ecosystems are values, not structure — no language is privileged.",
            "items": {
              "ref": "#package",
              "type": "ref"
            },
            "maxLength": 8,
            "type": "array"
          },
          "repo": {
            "description": "Source repository URL.",
            "format": "uri",
            "type": "string"
          },
          "tools": {
            "description": "Tools the server exposes. Advisory; crawlers may verify by connecting.",
            "items": {
              "ref": "#tool",
              "type": "ref"
            },
            "maxLength": 128,
            "type": "array"
          },
          "transport": {
            "description": "How clients connect. 'http' servers are hosted at `url`; 'stdio' servers are run locally from `repo`.",
            "knownValues": [
              "http",
              "stdio"
            ],
            "type": "string"
          },
          "url": {
            "description": "Remote endpoint for hosted servers (streamable HTTP). Omit for local-only servers.",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "name",
          "description",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "package": {
      "description": "One distribution of the server in a package registry.",
      "properties": {
        "identifier": {
          "description": "Package name within the registry, e.g. 'tangled-mcp' on pypi.",
          "maxGraphemes": 128,
          "maxLength": 1280,
          "type": "string"
        },
        "registry": {
          "description": "Package ecosystem this entry refers to.",
          "knownValues": [
            "pypi",
            "npm",
            "oci",
            "nuget",
            "gem",
            "crates"
          ],
          "maxGraphemes": 32,
          "maxLength": 320,
          "type": "string"
        },
        "version": {
          "description": "Version this record describes. Omit to mean latest.",
          "maxGraphemes": 64,
          "maxLength": 640,
          "type": "string"
        }
      },
      "required": [
        "registry",
        "identifier"
      ],
      "type": "object"
    },
    "tool": {
      "description": "One tool the server exposes.",
      "properties": {
        "description": {
          "description": "What the tool does, one line.",
          "maxGraphemes": 300,
          "maxLength": 3000,
          "type": "string"
        },
        "name": {
          "description": "Tool name as served over MCP.",
          "maxGraphemes": 128,
          "maxLength": 1280,
          "type": "string"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    }
  },
  "id": "tech.waow.mcp.server",
  "lexicon": 1
}
