{
  "openapi": "3.1.0",
  "info": {
    "title": "Cadence Public Data API",
    "version": "1.0.0",
    "summary": "Public, CC BY 4.0 data on AI voice, ambient scribe and contact-centre deployments in ANZ healthcare.",
    "description": "Cadence maintains the ANZ Health Voice & AI Register and the quarterly Cadence Healthcare AI Procurement Index. This API exposes read-only, CORS-open access to both datasets plus a curated set of citable facts. All responses are released under CC BY 4.0; attribution to 'Cadence — gocadence.ai' is required. No authentication is required. Do not scrape at high rates — a small polite interval (e.g. 1 request/second) is expected. There is no write access on this API.",
    "contact": {
      "name": "Cadence",
      "email": "hello@gocadence.ai",
      "url": "https://gocadence.ai"
    },
    "license": {
      "name": "CC BY 4.0",
      "url": "https://creativecommons.org/licenses/by/4.0/"
    },
    "termsOfService": "https://gocadence.ai/api"
  },
  "servers": [
    {
      "url": "https://gocadence.ai",
      "description": "Production"
    }
  ],
  "paths": {
    "/api/public/register": {
      "get": {
        "summary": "Search the ANZ Health Voice & AI Register",
        "description": "Returns register entries filtered by view, capability, segment, country, status, vendor and free text. Every entry has an evidence_url and evidence_publisher pointing at the primary public source. Rows without an evidence URL are excluded.",
        "operationId": "searchRegister",
        "parameters": [
          {
            "name": "view",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "all",
                "live",
                "procuring",
                "renewals"
              ]
            },
            "description": "Convenience view. `renewals` limits to rows with a contract_end date."
          },
          {
            "name": "cap",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated capabilities: voice_agent, ambient_scribe, contact_centre, telephony, triage, patient_access."
          },
          {
            "name": "seg",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated segments: aged_care, gp, hospital, public_health, imaging, pathology, telehealth, dental, vet, insurer, other."
          },
          {
            "name": "country",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated: AU, NZ."
          },
          {
            "name": "status",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Comma-separated: live, pilot, procuring, announced, awarded."
          },
          {
            "name": "vendor",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 80
            },
            "description": "Case-insensitive substring match on platform_vendor."
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 120
            },
            "description": "Free-text substring across organisation, vendor, notes and scale_note."
          },
          {
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "newest",
                "event_date_desc",
                "renewal_asc",
                "org_asc"
              ]
            }
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 200,
              "default": 50
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Register entries.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RegisterResponse"
                },
                "example": {
                  "source": "Cadence — ANZ Health Voice & AI Register",
                  "source_url": "https://gocadence.ai/register",
                  "license": "CC BY 4.0",
                  "attribution": "Source: Cadence — gocadence.ai/register, CC BY 4.0",
                  "count": 1,
                  "total": 1,
                  "results": [
                    {
                      "slug": "uniting-nsw-act-jeanie",
                      "organisation": "Uniting NSW.ACT",
                      "segment": "aged_care",
                      "country": "AU",
                      "capability": "voice_agent",
                      "status": "live",
                      "platform_vendor": "Cisco Webex Contact Center (partner: Optus)",
                      "scale_note": "'Jeanie' AI voice agent. >40% of inbound calls fully handled.",
                      "evidence_url": "https://blog.webex.com/customer-experience/uniting-nsw-act-webex-providing-exceptional-customer-experiences-launch-jeanie-ai-agent/",
                      "evidence_publisher": "Cisco / Webex"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "/register/data.csv": {
      "get": {
        "summary": "Register as CSV",
        "description": "The same register data as a downloadable CSV. UTF-8, RFC 4180 quoting.",
        "operationId": "registerCsv",
        "responses": {
          "200": {
            "description": "CSV file.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/procurement-index/data.json": {
      "get": {
        "summary": "Cadence Healthcare AI Procurement Index — current edition",
        "description": "Headline figures and findings from the current edition of the Cadence Healthcare AI Procurement Index: universe size, geography split, in-market rate, signal-class counts, aged-care leadership indicators, and the headline finding.",
        "operationId": "getProcurementIndex",
        "responses": {
          "200": {
            "description": "Index snapshot.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProcurementIndex"
                }
              }
            }
          }
        }
      }
    },
    "/procurement-index/data.csv": {
      "get": {
        "summary": "Procurement Index as CSV",
        "operationId": "procurementIndexCsv",
        "responses": {
          "200": {
            "description": "CSV file.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/public/vendor-trust": {
      "get": {
        "summary": "Search the ANZ Health AI Vendor Trust Tracker",
        "description": "Returns rows of what AI voice and ambient-scribe vendors serving ANZ healthcare have published on their own public pages about data residency, model provenance, subprocessors, certifications and regulatory status. Every row includes source_url, source_quote (verbatim from the vendor's page) and checked_on. Multiple rows may exist for the same vendor+fact_key with different source_urls when the vendor has published different statements on different pages — all are preserved; the API does not deduplicate. This is a record of disclosures, not an assessment, audit, certification or endorsement.",
        "operationId": "searchVendorTrust",
        "parameters": [
          {
            "name": "vendor",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 120
            },
            "description": "Restrict to one vendor by slug."
          },
          {
            "name": "category",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "voice_agent",
                "ambient_scribe",
                "ccaas",
                "platform"
              ]
            }
          },
          {
            "name": "fact_key",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 80
            },
            "description": "E.g. data_storage_region, data_processing_region, model_provenance, subprocessors, certifications, tga_status, pms_integrations, anz_entity, support_hours."
          },
          {
            "name": "hq_country",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "description": "Vendor HQ country code (e.g. US, AU, NZ, UK)."
          },
          {
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string",
              "maxLength": 120
            },
            "description": "Free-text substring across vendor_name, fact_value and source_quote."
          },
          {
            "name": "limit",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 1,
              "maximum": 500,
              "default": 200
            }
          },
          {
            "name": "offset",
            "in": "query",
            "schema": {
              "type": "integer",
              "minimum": 0,
              "default": 0
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Vendor trust facts.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VendorTrustResponse"
                }
              }
            }
          }
        }
      }
    },
    "/vendor-trust/data.csv": {
      "get": {
        "summary": "Vendor Trust Tracker as CSV",
        "description": "The same vendor trust data as a downloadable CSV. UTF-8, RFC 4180 quoting.",
        "operationId": "vendorTrustCsv",
        "responses": {
          "200": {
            "description": "CSV file.",
            "content": {
              "text/csv": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/facts.json": {
      "get": {
        "summary": "Curated citable facts",
        "description": "A curated, stable set of citable claims about ANZ healthcare AI. Every fact carries an evidence_url and evidence_publisher. Counts derived from the register update automatically.",
        "operationId": "getFacts",
        "responses": {
          "200": {
            "description": "Facts payload.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FactsResponse"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "RegisterEntry": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Stable URL-safe identifier; detail page at /register/{slug}."
          },
          "organisation": {
            "type": "string",
            "description": "The healthcare organisation running or procuring the AI system."
          },
          "segment": {
            "type": "string",
            "description": "Healthcare segment (e.g. aged_care, gp, hospital)."
          },
          "country": {
            "type": "string",
            "enum": [
              "AU",
              "NZ"
            ]
          },
          "state": {
            "type": [
              "string",
              "null"
            ],
            "description": "Australian state or NZ region where applicable."
          },
          "entry_type": {
            "type": "string",
            "enum": [
              "deployment",
              "procurement",
              "award",
              "programme"
            ]
          },
          "platform_vendor": {
            "type": [
              "string",
              "null"
            ],
            "description": "Named platform vendor, when publicly disclosed."
          },
          "capability": {
            "type": "string",
            "description": "voice_agent | ambient_scribe | contact_centre | telephony | triage | patient_access."
          },
          "status": {
            "type": "string",
            "enum": [
              "live",
              "pilot",
              "procuring",
              "announced",
              "awarded"
            ]
          },
          "scale_note": {
            "type": [
              "string",
              "null"
            ],
            "description": "Scale, results or context published in the primary source."
          },
          "value_aud": {
            "type": [
              "number",
              "null"
            ]
          },
          "contract_start": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "contract_end": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "evidence_url": {
            "type": "string",
            "format": "uri",
            "description": "Primary public source. Required for every row."
          },
          "evidence_publisher": {
            "type": [
              "string",
              "null"
            ],
            "description": "Publisher of the evidence URL (e.g. Pulse+IT, HiNZ)."
          },
          "event_date": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "verified_on": {
            "type": [
              "string",
              "null"
            ],
            "format": "date"
          },
          "notes": {
            "type": [
              "string",
              "null"
            ]
          }
        }
      },
      "RegisterResponse": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "license": {
            "type": "string"
          },
          "attribution": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RegisterEntry"
            }
          }
        },
        "required": [
          "license",
          "attribution",
          "results"
        ]
      },
      "ProcurementIndex": {
        "type": "object",
        "description": "Headline figures for the current edition. Structure is stable across editions.",
        "properties": {
          "edition": {
            "type": "object"
          },
          "universe": {
            "type": "object",
            "description": "Total tracked organisations and sites."
          },
          "geography": {
            "type": "object"
          },
          "in_market": {
            "type": "object",
            "description": "Rate of organisations in an identifiable AI-voice/scribe buying window."
          },
          "signals": {
            "type": "object"
          },
          "aged_care_leadership": {
            "type": "object"
          },
          "headline_finding": {
            "type": "object"
          }
        }
      },
      "Fact": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "claim": {
            "type": "string"
          },
          "value": {
            "type": [
              "string",
              "number",
              "null"
            ]
          },
          "unit": {
            "type": [
              "string",
              "null"
            ]
          },
          "as_of": {
            "type": "string",
            "format": "date"
          },
          "evidence_url": {
            "type": "string",
            "format": "uri"
          },
          "evidence_publisher": {
            "type": "string"
          },
          "context": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "claim",
          "as_of",
          "evidence_url",
          "evidence_publisher"
        ]
      },
      "FactsResponse": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "license": {
            "type": "string"
          },
          "license_url": {
            "type": "string"
          },
          "attribution": {
            "type": "string"
          },
          "updated": {
            "type": "string",
            "format": "date-time"
          },
          "facts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Fact"
            }
          }
        },
        "required": [
          "license",
          "attribution",
          "facts"
        ]
      },
      "VendorTrustFact": {
        "type": "object",
        "description": "A single published disclosure from a named vendor. Multiple rows for the same (vendor_slug, fact_key) with different source_urls are expected and preserved when a vendor publishes different statements on different pages.",
        "properties": {
          "vendor_slug": {
            "type": "string"
          },
          "vendor_name": {
            "type": "string"
          },
          "category": {
            "type": "string",
            "enum": [
              "voice_agent",
              "ambient_scribe",
              "ccaas",
              "platform"
            ]
          },
          "hq_country": {
            "type": [
              "string",
              "null"
            ]
          },
          "website": {
            "type": [
              "string",
              "null"
            ],
            "format": "uri"
          },
          "fact_key": {
            "type": "string",
            "description": "Snake-case fact key, e.g. data_processing_region."
          },
          "fact_value": {
            "type": "string",
            "description": "The value as published, or the sentinel 'not_disclosed_or_not_found' when the fact could not be located on the vendor's public pages as at checked_on."
          },
          "source_url": {
            "type": "string",
            "format": "uri"
          },
          "source_quote": {
            "type": "string",
            "description": "Verbatim quote from the source page."
          },
          "checked_on": {
            "type": "string",
            "format": "date"
          }
        },
        "required": [
          "vendor_slug",
          "vendor_name",
          "fact_key",
          "fact_value",
          "source_url",
          "source_quote",
          "checked_on"
        ]
      },
      "VendorTrustResponse": {
        "type": "object",
        "properties": {
          "source": {
            "type": "string"
          },
          "source_url": {
            "type": "string"
          },
          "license": {
            "type": "string"
          },
          "attribution": {
            "type": "string"
          },
          "disclaimer": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "total": {
            "type": "integer"
          },
          "results": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VendorTrustFact"
            }
          }
        },
        "required": [
          "license",
          "attribution",
          "disclaimer",
          "results"
        ]
      }
    }
  },
  "x-mcp-server": {
    "url": "https://gocadence.ai/mcp",
    "transport": "streamable-http",
    "description": "Model Context Protocol server exposing search_register, get_registry_stats, get_procurement_index, search_vendor_trust and get_market_facts as read-only tools. Public, no auth, CC BY 4.0."
  }
}