GET
/
quantity-types
List quantity types
curl --request GET \
  --url http://healthkite.local:8080/quantity-types
{
  "types": [
    {
      "identifier": "HKQuantityTypeIdentifierStepCount",
      "category": "activity",
      "aggregationStyle": "cumulative",
      "preferredUnit": "count",
      "permissionStatus": "granted",
      "sampleCount": 66471,
      "firstSampleDate": "2020-01-09T03:04:54Z",
      "lastSampleDate": "2026-05-11T03:35:37Z"
    },
    {
      "identifier": "HKQuantityTypeIdentifierHeartRate",
      "category": "heart",
      "aggregationStyle": "discrete",
      "preferredUnit": "count/min",
      "permissionStatus": "granted",
      "sampleCount": 64643,
      "firstSampleDate": "2020-12-25T14:23:17Z",
      "lastSampleDate": "2026-05-11T04:06:10Z"
    }
  ]
}
Returns metadata for every quantity type HealthKite MCP knows about, regardless of whether the user has authorized read access to it.

Fields

FieldNotes
identifierFull HealthKit identifier — pass to /quantity/{type}
categoryOne of activity, heart, mobility, body, vitals
aggregationStylecumulative (steps, energy — sum-over-interval) or discrete (HR, weight — point measurement)
preferredUnitThe unit string the /quantity/{type} response will use
permissionStatusgranted / unknown. iOS hides denied vs. not-determined for privacy, so unknown covers both
sampleCountTotal samples the app can read for this type
firstSampleDate / lastSampleDateBrackets the range of readable data; null if no samples
Sorted by category then identifier. Deterministic.

MCP tool

list_quantity_types

Notes

  • Types with permissionStatus: "unknown" and sampleCount: 0 are types the user has never recorded — that’s normal for things like BloodGlucose if you don’t manage diabetes.
  • A type with sampleCount: 0 and permissionStatus: "granted" means you have read access but no samples exist yet.

Response

200 - application/json

Quantity type catalog