{
  "openapi": "3.1.0",
  "info": {
    "title": "wealthtech.dev API",
    "version": "1.0.0",
    "summary": "Read-only, sourced facts about how to connect to wealth technology products.",
    "description": "Static JSON files, regenerated on every publish. No key; CORS open. Every fact carries state, checked date, source URL and a verbatim evidence quote. Data as of 2026-10-22.",
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    },
    "contact": {
      "email": "corrections@wealthtech.dev"
    }
  },
  "servers": [
    {
      "url": "https://wealthtech.dev/api/v1"
    }
  ],
  "paths": {
    "/products.json": {
      "get": {
        "operationId": "listProducts",
        "summary": "All products, one row each",
        "description": "One summary row per listed product: access, sandbox, OpenAPI, webhooks, linked MCP server ids and the newest checked date.",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Product rows",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "products"
                  ],
                  "properties": {
                    "generated": {
                      "type": "string",
                      "format": "date"
                    },
                    "license": {
                      "type": "string",
                      "const": "CC BY 4.0"
                    },
                    "attribution": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "products": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "name",
                          "vendor",
                          "category",
                          "tier",
                          "url"
                        ],
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "vendor": {
                            "type": "string"
                          },
                          "category": {
                            "type": "string"
                          },
                          "tier": {
                            "enum": [
                              "core",
                              "adjacent"
                            ]
                          },
                          "access": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "description": "Access value, or the fact state when no value was found."
                          },
                          "sandbox": {
                            "type": "string"
                          },
                          "openapi": {
                            "type": "string"
                          },
                          "webhooks": {
                            "type": "string"
                          },
                          "mcp": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          },
                          "lastChecked": {
                            "type": [
                              "string",
                              "null"
                            ],
                            "format": "date"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/products/{id}.json": {
      "get": {
        "operationId": "getProduct",
        "summary": "One product with every fact",
        "description": "Every developer-surface fact for one product. Verified and third-party facts carry url, checked date and a verbatim evidence quote.",
        "tags": [
          "Products"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Product id (stable; never changes).",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The product",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "product"
                  ],
                  "properties": {
                    "generated": {
                      "type": "string",
                      "format": "date"
                    },
                    "license": {
                      "type": "string",
                      "const": "CC BY 4.0"
                    },
                    "attribution": {
                      "type": "string"
                    },
                    "product": {
                      "$ref": "../../schema/product.schema.json"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No record with that id."
          }
        }
      }
    },
    "/categories.json": {
      "get": {
        "operationId": "listCategories",
        "summary": "Categories in use, with product counts",
        "description": "The product categories that have at least one listed product.",
        "tags": [
          "Products"
        ],
        "responses": {
          "200": {
            "description": "Categories",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "generated": {
                      "type": "string",
                      "format": "date"
                    },
                    "license": {
                      "type": "string",
                      "const": "CC BY 4.0"
                    },
                    "attribution": {
                      "type": "string"
                    },
                    "categories": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "name",
                          "count"
                        ],
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "plural": {
                            "type": "string"
                          },
                          "tier": {
                            "type": "string"
                          },
                          "blurb": {
                            "type": "string"
                          },
                          "count": {
                            "type": "integer"
                          },
                          "url": {
                            "type": "string",
                            "format": "uri"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp.json": {
      "get": {
        "operationId": "listMcpServers",
        "summary": "All MCP servers and AI connectors",
        "description": "Every MCP server and vendor AI connector on record, live, beta or announced, with endpoint, auth, scope, enablement and price facts.",
        "tags": [
          "MCP"
        ],
        "responses": {
          "200": {
            "description": "Servers",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "generated": {
                      "type": "string",
                      "format": "date"
                    },
                    "license": {
                      "type": "string",
                      "const": "CC BY 4.0"
                    },
                    "attribution": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "servers": {
                      "type": "array",
                      "items": {
                        "$ref": "../../schema/mcp.schema.json"
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/mcp/{id}.json": {
      "get": {
        "operationId": "getMcpServer",
        "summary": "One MCP server or connector",
        "description": "One MCP server or connector with its facts, tools and listings.",
        "tags": [
          "MCP"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "MCP server id (stable; never changes).",
            "schema": {
              "type": "string",
              "pattern": "^[a-z0-9-]+$"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The server",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "server"
                  ],
                  "properties": {
                    "generated": {
                      "type": "string",
                      "format": "date"
                    },
                    "license": {
                      "type": "string",
                      "const": "CC BY 4.0"
                    },
                    "attribution": {
                      "type": "string"
                    },
                    "server": {
                      "$ref": "../../schema/mcp.schema.json"
                    }
                  }
                }
              }
            }
          },
          "404": {
            "description": "No record with that id."
          }
        }
      }
    },
    "/form-adv/columns.json": {
      "get": {
        "operationId": "getFormAdvColumns",
        "summary": "Column dictionary for the SEC monthly investment adviser file",
        "description": "Each column of the SEC monthly investment adviser file mapped to its Form ADV item, with the question text, type, values and gotchas.",
        "tags": [
          "Data"
        ],
        "responses": {
          "200": {
            "description": "Columns",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "generated": {
                      "type": "string",
                      "format": "date"
                    },
                    "license": {
                      "type": "string",
                      "const": "CC BY 4.0"
                    },
                    "attribution": {
                      "type": "string"
                    },
                    "source": {
                      "type": "object"
                    },
                    "form": {
                      "type": "object"
                    },
                    "columns": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "column",
                          "type"
                        ],
                        "properties": {
                          "column": {
                            "type": "string"
                          },
                          "normalized": {
                            "type": "string"
                          },
                          "formItem": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "question": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "type": {
                            "type": "string"
                          },
                          "values": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "gotchas": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "published": {
                            "type": "boolean"
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    },
    "/changes.json": {
      "get": {
        "operationId": "listChanges",
        "summary": "Changelog entries, newest first",
        "description": "Changes to the data, newest first.",
        "tags": [
          "Changes"
        ],
        "responses": {
          "200": {
            "description": "Changes",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "generated": {
                      "type": "string",
                      "format": "date"
                    },
                    "license": {
                      "type": "string",
                      "const": "CC BY 4.0"
                    },
                    "attribution": {
                      "type": "string"
                    },
                    "changes": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "id",
                          "date",
                          "title",
                          "items"
                        ],
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string",
                            "format": "date"
                          },
                          "title": {
                            "type": "string"
                          },
                          "items": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Products"
    },
    {
      "name": "MCP"
    },
    {
      "name": "Data"
    },
    {
      "name": "Changes"
    }
  ]
}