{
  "openapi": "3.1.0",
  "info": {
    "title": "Standards API",
    "version": "1.0.0",
    "summary": "Which cloud, data, AI and developer-tool vendors support which open standards, from the specification projects' own lists, the official MCP Registry and vendor documentation, each with its evidence link and the date it was first seen, plus a dated history of support added and dropped. Grows every week: new companies from the fru.dev registry, new lists found by probing, new standards added as rows",
    "description": "Which cloud, data, AI and developer-tool vendors support which open standards, from the specification projects' own lists, the official MCP Registry and vendor documentation, each with its evidence link and the date it was first seen, plus a dated history of support added and dropped. Grows every week: new companies from the fru.dev registry, new lists found by probing, new standards added as rows. Grows and re-checks every Thursday at 11:30 UTC. Free to read; please cite \"Standards (standards.fru.dev)\" with a link. Responses are cached at the edge; keep to about 60 requests a minute. Guide: https://standards.fru.dev/agents",
    "contact": {
      "name": "fru.dev",
      "url": "https://fru.dev",
      "email": "fru.dev3@gmail.com"
    }
  },
  "externalDocs": {
    "description": "For AI agents",
    "url": "https://standards.fru.dev/agents"
  },
  "servers": [
    {
      "url": "https://standards.fru.dev"
    }
  ],
  "paths": {
    "/api/supporting": {
      "get": {
        "operationId": "vendors_supporting",
        "summary": "Vendors that support every listed standard, optionally at a minimum role",
        "description": "Vendors that support every listed standard, optionally at a minimum role. Returns vendors with their supported count and, for each listed standard, the state, role, sources and whether it is unverified.",
        "parameters": [
          {
            "name": "has",
            "in": "query",
            "required": true,
            "description": "One to five standard ids, comma separated; add :role for a minimum role (ids and roles at /api/standards)",
            "schema": {
              "type": "string"
            },
            "example": "mcp:server,a2a"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "vendors with their supported count and, for each listed standard, the state, role, sources and whether it is unverified",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "has": [
                    {
                      "standard": "mcp",
                      "name": "Model Context Protocol",
                      "min_role": "Server"
                    }
                  ],
                  "items": [
                    {
                      "slug": "aws",
                      "name": "AWS",
                      "domain": "aws.amazon.com",
                      "category": "Cloud",
                      "supported": 6,
                      "url": "https://standards.fru.dev/vendors/aws",
                      "registry": "https://companies.fru.dev/companies/aws",
                      "evidence": [
                        {
                          "standard": "mcp",
                          "name": "Model Context Protocol",
                          "state": "active",
                          "level": "Server",
                          "sources": [
                            "Vendor documentation"
                          ],
                          "adopter_list": false,
                          "unverified": false,
                          "since": "2026-09-24"
                        }
                      ]
                    },
                    {
                      "slug": "google-cloud",
                      "name": "Google Cloud",
                      "domain": "cloud.google.com",
                      "category": "Cloud",
                      "supported": 6,
                      "url": "https://standards.fru.dev/vendors/google-cloud",
                      "registry": "https://companies.fru.dev/companies/google-cloud",
                      "evidence": [
                        {
                          "standard": "mcp",
                          "name": "Model Context Protocol",
                          "state": "active",
                          "level": "Server",
                          "sources": [
                            "Vendor documentation"
                          ],
                          "adopter_list": false,
                          "unverified": false,
                          "since": "2026-09-24"
                        }
                      ]
                    }
                  ],
                  "total": 17,
                  "limit": 3,
                  "offset": 0,
                  "next": "/api/supporting?has=mcp%3Aserver&limit=3&offset=3",
                  "updated": "2026-09-24 23:01:01"
                }
              }
            }
          }
        }
      }
    },
    "/api/vendors": {
      "get": {
        "operationId": "list_vendors",
        "summary": "Every tracked vendor, most standards first",
        "description": "Every tracked vendor, most standards first. Returns vendors with slug, name, domain, category, supported count and companies.fru.dev registry link.",
        "parameters": [
          {
            "name": "category",
            "in": "query",
            "required": false,
            "description": "Only one category",
            "schema": {
              "type": "string",
              "enum": [
                "cloud",
                "data",
                "ai",
                "observability",
                "devtools",
                "saas"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "vendors with slug, name, domain, category, supported count and companies.fru.dev registry link",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "items": [
                    {
                      "slug": "clickhouse",
                      "name": "ClickHouse",
                      "domain": "clickhouse.com",
                      "category": "Data platforms",
                      "supported": 4,
                      "url": "https://standards.fru.dev/vendors/clickhouse",
                      "registry": "https://companies.fru.dev/companies/clickhouse"
                    },
                    {
                      "slug": "databricks",
                      "name": "Databricks",
                      "domain": "databricks.com",
                      "category": "Data platforms",
                      "supported": 4,
                      "url": "https://standards.fru.dev/vendors/databricks",
                      "registry": "https://companies.fru.dev/companies/databricks"
                    }
                  ],
                  "total": 21,
                  "limit": 3,
                  "offset": 0,
                  "next": "/api/vendors?category=data&limit=3&offset=3",
                  "updated": "2026-09-24 23:01:01"
                }
              }
            }
          }
        }
      }
    },
    "/api/vendors/{slug}": {
      "get": {
        "operationId": "get_vendor",
        "summary": "One vendor and every standard it shows evidence for",
        "description": "One vendor and every standard it shows evidence for. Returns the vendor and its standards with state, role, sources, unverified and the date first seen.",
        "parameters": [
          {
            "name": "slug",
            "in": "path",
            "required": true,
            "description": "Vendor slug from /api/vendors",
            "schema": {
              "type": "string"
            },
            "example": "snowflake"
          }
        ],
        "responses": {
          "200": {
            "description": "the vendor and its standards with state, role, sources, unverified and the date first seen",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "slug": "snowflake",
                  "name": "Snowflake",
                  "domain": "snowflake.com",
                  "category": "Data platforms",
                  "supported": 2,
                  "url": "https://standards.fru.dev/vendors/snowflake",
                  "registry": "https://companies.fru.dev/companies/snowflake",
                  "standards": [
                    {
                      "standard": "mcp",
                      "name": "Model Context Protocol",
                      "state": "active",
                      "level": "Server",
                      "sources": [
                        "Vendor documentation"
                      ],
                      "adopter_list": false,
                      "unverified": false,
                      "since": "2026-09-24"
                    },
                    {
                      "standard": "iceberg",
                      "name": "Apache Iceberg",
                      "state": "active",
                      "level": "REST catalog",
                      "sources": [
                        "Apache Iceberg vendors page",
                        "Vendor documentation"
                      ],
                      "adopter_list": true,
                      "unverified": false,
                      "since": "2026-09-24"
                    }
                  ],
                  "updated": "2026-09-24 23:01:01"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/standards": {
      "get": {
        "operationId": "list_standards",
        "summary": "Every tracked standard with what it means and how many vendors support it",
        "description": "Every tracked standard with what it means and how many vendors support it. Returns standards with id, name, family, meaning, role ids, vendor count, specification and adopter list.",
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "standards with id, name, family, meaning, role ids, vendor count, specification and adopter list",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "items": [
                    {
                      "id": "mcp",
                      "name": "Model Context Protocol",
                      "family": "AI agents",
                      "what": "Connects AI assistants to tools and data: a server exposes tools, a client (an assistant or agent) calls them.",
                      "roles": [
                        "client",
                        "server"
                      ],
                      "vendors_supporting": 19,
                      "adopter_list": "https://registry.modelcontextprotocol.io",
                      "spec": "https://modelcontextprotocol.io/specification",
                      "url": "https://standards.fru.dev/standards/mcp"
                    },
                    {
                      "id": "a2a",
                      "name": "Agent2Agent",
                      "family": "AI agents",
                      "what": "Lets agents from different vendors discover each other and hand work back and forth.",
                      "roles": [
                        "partner",
                        "supported"
                      ],
                      "vendors_supporting": 25,
                      "adopter_list": "https://a2a-protocol.org/latest/partners/",
                      "spec": "https://a2a-protocol.org/latest/specification/",
                      "url": "https://standards.fru.dev/standards/a2a"
                    }
                  ],
                  "total": 9,
                  "limit": 3,
                  "offset": 0,
                  "next": "/api/standards?limit=3&offset=3",
                  "updated": "2026-09-24 23:01:01"
                }
              }
            }
          }
        }
      }
    },
    "/api/standards/{id}": {
      "get": {
        "operationId": "get_standard",
        "summary": "One standard and every vendor with evidence for it (who serves MCP, who speaks Iceberg)",
        "description": "One standard and every vendor with evidence for it (who serves MCP, who speaks Iceberg). Returns the standard and vendors with state, role, sources and unverified.",
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Standard id from /api/standards",
            "schema": {
              "type": "string"
            },
            "example": "iceberg"
          }
        ],
        "responses": {
          "200": {
            "description": "the standard and vendors with state, role, sources and unverified",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "id": "iceberg",
                  "name": "Apache Iceberg",
                  "what": "The open table format for large analytic tables on object storage, with a REST catalog protocol.",
                  "detail": "Read, Read and write: the vendor's listing says it reads, or also writes, Iceberg tables. REST catalog: it serves the Iceberg REST catalo...",
                  "maintainer": "Apache Software Foundation",
                  "spec": "https://iceberg.apache.org/spec/",
                  "adopter_list": "https://iceberg.apache.org/vendors/",
                  "vendors_supporting": 21,
                  "vendors": [
                    {
                      "vendor": "google-cloud",
                      "vendor_name": "Google Cloud",
                      "state": "active",
                      "level": "REST catalog",
                      "sources": [
                        "Apache Iceberg vendors page"
                      ],
                      "adopter_list": true,
                      "unverified": false,
                      "since": "2026-09-24"
                    },
                    {
                      "vendor": "microsoft",
                      "vendor_name": "Microsoft",
                      "state": "active",
                      "level": "REST catalog",
                      "sources": [
                        "Apache Iceberg vendors page"
                      ],
                      "adopter_list": true,
                      "unverified": false,
                      "since": "2026-09-24"
                    }
                  ],
                  "updated": "2026-09-24 23:01:01"
                }
              }
            }
          },
          "404": {
            "description": "Not found"
          }
        }
      }
    },
    "/api/evidence": {
      "get": {
        "operationId": "get_evidence",
        "summary": "The evidence for one vendor and standard: each source, what it says, when it was read",
        "description": "The evidence for one vendor and standard: each source, what it says, when it was read. Returns claims with source link, scope, the sentence or listing note, capture date and reviewed flag.",
        "parameters": [
          {
            "name": "vendor",
            "in": "query",
            "required": true,
            "description": "Vendor slug",
            "schema": {
              "type": "string"
            },
            "example": "snowflake"
          },
          {
            "name": "standard",
            "in": "query",
            "required": true,
            "description": "Standard id",
            "schema": {
              "type": "string"
            },
            "example": "iceberg"
          }
        ],
        "responses": {
          "200": {
            "description": "claims with source link, scope, the sentence or listing note, capture date and reviewed flag",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "claims": [
                    {
                      "id": 109,
                      "vendor": "snowflake",
                      "cert": "iceberg",
                      "level": "rest-catalog",
                      "state": "active",
                      "scope": "Snowflake Open Catalog (Apache Polaris), Iceberg REST",
                      "sourceKind": "docs",
                      "sourceUrl": "https://docs.snowflake.com/en/user-guide/tables-iceberg-open-catalog",
                      "note": "Use Apache Iceberg™ tables with Snowflake Open Catalog in Snowflake | Snowflake Documentation DOCUMENTATION / EN Language English Françai...",
                      "validFrom": "",
                      "validUntil": "",
                      "firstSeen": "2026-09-24",
                      "capturedAt": "2026-09-24",
                      "reviewed": true
                    },
                    {
                      "id": 18,
                      "vendor": "snowflake",
                      "cert": "iceberg",
                      "level": "write",
                      "state": "active",
                      "scope": "",
                      "sourceKind": "iceberg",
                      "sourceUrl": "https://iceberg.apache.org/vendors/#snowflake",
                      "note": "Snowflake Horizon Catalog is the universal catalog built into every Snowflake account, providing governance, metadata, and interoperabili...",
                      "validFrom": "",
                      "validUntil": "",
                      "firstSeen": "2026-09-24",
                      "capturedAt": "2026-09-24",
                      "reviewed": true
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/api/changes": {
      "get": {
        "operationId": "recent_changes",
        "summary": "Dated changes, newest first: support added, roles added, support dropped",
        "description": "Dated changes, newest first: support added, roles added, support dropped. Returns changes with date, vendor, standard, kind, role, how it was dated and the source (a commit or page).",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "ISO date (YYYY-MM-DD) or datetime: only changes dated or recorded since then",
            "schema": {
              "type": "string"
            },
            "example": "2025-01-01"
          },
          {
            "name": "vendor",
            "in": "query",
            "required": false,
            "description": "Only one vendor (slug)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "standard",
            "in": "query",
            "required": false,
            "description": "Only one standard (id)",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Changes per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Changes to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "changes with date, vendor, standard, kind, role, how it was dated and the source (a commit or page)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "items": [
                    {
                      "date": "2026-08-24",
                      "vendor": "minio",
                      "standard": "iceberg",
                      "standard_name": "Apache Iceberg",
                      "kind": "added",
                      "role": "",
                      "from_role": "",
                      "dated_by": "source",
                      "source": "https://github.com/apache/iceberg/commit/0650d9c9cbd7283d4b993c9b357a72c12ea05d72",
                      "url": "https://standards.fru.dev/vendors/minio"
                    },
                    {
                      "date": "2026-07-27",
                      "vendor": "teradata",
                      "standard": "iceberg",
                      "standard_name": "Apache Iceberg",
                      "kind": "added",
                      "role": "",
                      "from_role": "",
                      "dated_by": "source",
                      "source": "https://github.com/apache/iceberg/commit/bb27abf2b0ec38f40f42453d49cdf9a29edfc207",
                      "url": "https://standards.fru.dev/vendors/teradata"
                    }
                  ],
                  "limit": 3,
                  "offset": 0,
                  "next": "/api/changes?since=2026-01-01&limit=3&offset=3"
                }
              }
            }
          }
        }
      }
    },
    "/api/companies": {
      "get": {
        "operationId": "list_companies",
        "summary": "The companies.fru.dev registry feed: with since, the vendors with support changes since then, each with its dated changes",
        "description": "The companies.fru.dev registry feed: with since, the vendors with support changes since then, each with its dated changes. Returns without since: vendors with slug, name, domain, supported count and page; with since: slug (the companies.fru.dev slug), name, domain, url (the page here), changes, updated_at and items (date, standard, kind, role, source).",
        "parameters": [
          {
            "name": "since",
            "in": "query",
            "required": false,
            "description": "ISO date (YYYY-MM-DD) or datetime: only vendors with changes dated or recorded since then",
            "schema": {
              "type": "string"
            },
            "example": "2026-01-01"
          },
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "description": "Items per page, 1 to 200",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "required": false,
            "description": "Items to skip, for the next page",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "without since: vendors with slug, name, domain, supported count and page; with since: slug (the companies.fru.dev slug), name, domain, url (the page here), changes, updated_at and items (date, standard, kind, role, source)",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                },
                "example": {
                  "since": "2026-01-01",
                  "count": 24,
                  "companies": [
                    {
                      "slug": "minio",
                      "name": "MinIO",
                      "domain": "min.io",
                      "url": "https://standards.fru.dev/vendors/minio",
                      "changes": 1,
                      "updated_at": "2026-09-24T22:50:04Z",
                      "items": [
                        {
                          "date": "2026-08-24",
                          "vendor": "minio",
                          "standard": "iceberg",
                          "standard_name": "Apache Iceberg",
                          "kind": "added",
                          "role": "",
                          "from_role": "",
                          "dated_by": "source",
                          "source": "https://github.com/apache/iceberg/commit/0650d9c9cbd7283d4b993c9b357a72c12ea05d72",
                          "url": "https://standards.fru.dev/vendors/minio"
                        }
                      ]
                    },
                    {
                      "slug": "teradata",
                      "name": "Teradata",
                      "domain": "teradata.com",
                      "url": "https://standards.fru.dev/vendors/teradata",
                      "changes": 1,
                      "updated_at": "2026-09-24T22:50:04Z",
                      "items": [
                        {
                          "date": "2026-07-27",
                          "vendor": "teradata",
                          "standard": "iceberg",
                          "standard_name": "Apache Iceberg",
                          "kind": "added",
                          "role": "",
                          "from_role": "",
                          "dated_by": "source",
                          "source": "https://github.com/apache/iceberg/commit/bb27abf2b0ec38f40f42453d49cdf9a29edfc207",
                          "url": "https://standards.fru.dev/vendors/teradata"
                        }
                      ]
                    }
                  ],
                  "generated_at": "2026-09-24T23:04:11.805Z"
                }
              }
            }
          }
        }
      }
    }
  }
}