Entitlements tools
MCP tools for Entitlements: entitlements_check.
entitlements_check: Check one entitlement
entitlements_check
Check one entitlement. Operation entitlements.check · Brand level · permission customers:read · risk tier read · since M5
Returns one customer's value of one feature, from the customer's stored entitlements: a single read for the
checks your product makes on every request. enabled is true for true or a limit above 0; compare value
for limits and enum features.
The value is the same as in customers.entitlements.get (resolved from the sources while a recompute is
pending). Ownrecord doesn't enforce it: your product decides what to allow.
Annotations: readOnlyHint: true · destructiveHint: false · idempotentHint: true · openWorldHint: false
Arguments
| Argument | Type | Required | Description |
|---|---|---|---|
customer | ID (cus_…) | yes | The customer (cus_…). |
feature | string | yes | The feature key, e.g. seats.max. (at most 100 characters) |
entity_id | ID (ent_…) | no | Optional: the brand's legal entity (ent_…); brand_id alone is enough. |
brand_id | ID (brd_…) | no | The brand to act on (brd_…), inside your API key's reach. Needed with an organization or entity key; a brand key acts on its own brand. |
- Brand: pass
brand_idwith an organization or entity key; a brand key acts on its own brand. - Read-only: changes nothing;
idempotency_keyis ignored.
Errors
validation_failed:customerisn't a customer ID, orfeatureisn't a feature key (e.g.seats.max).resource_not_found: This brand has no such customer in this mode (customers belong to one brand and one mode).entitlement_feature_not_found: The brand has no feature with this key in this mode.scope_required: The request names no brand (an org or entity key withoutOwnrecord-Brand).livemode_not_allowed: You have no live-mode access, so you can't act on live customers.permission_denied: You can't read this brand's customers (customers:read).
Examples
A seat limit
Arguments:
{
"customer": "cus_01m4ty3c2b5qx7mhd9k8w6s0aa",
"feature": "seats.max",
"brand_id": "brd_01jbx4m3v8e9t0s6k2c5n7q1wz"
}
Result output:
{
"object": "entitlement_check",
"customerId": "cus_01m4ty3c2b5qx7mhd9k8w6s0aa",
"featureKey": "seats.max",
"value": 20,
"enabled": true,
"computedAt": "2026-10-14T10:00:05.000Z"
}
A boolean feature
Arguments:
{
"customer": "cus_01m4ty3c2b5qx7mhd9k8w6s0aa",
"feature": "feature.export",
"brand_id": "brd_01jbx4m3v8e9t0s6k2c5n7q1wz"
}
Result output:
{
"object": "entitlement_check",
"customerId": "cus_01m4ty3c2b5qx7mhd9k8w6s0aa",
"featureKey": "feature.export",
"value": true,
"enabled": true,
"computedAt": "2026-10-14T10:00:05.000Z"
}