Available MCP tools
The full set of tools Claude can call on your behalf via the Zillo MCP server. Each tool requires a specific scope — if your install didn't grant the scope, the tool is hidden from Claude's tool list.
list_products
products:readList products in the merchant's catalog.
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"draft",
"published",
"archived"
]
},
"type": {
"type": "string",
"enum": [
"gift_card",
"experience",
"ticket",
"membership",
"voucher"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}get_product
products:readFetch a single product by id.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}list_recent_orders
orders:readList the merchant's most recent orders.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 10
},
"status": {
"type": "string",
"enum": [
"pending",
"paid",
"fulfilled",
"partially_refunded",
"refunded",
"cancelled"
]
}
}
}get_order
orders:readFetch a single order by id with its line items.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}list_customers
customers:readList customers. Pass `q` to search by email or name.
{
"type": "object",
"properties": {
"q": {
"type": "string",
"maxLength": 120
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}get_customer
customers:readFetch a single customer by id.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}list_gift_cards
gift_cards:readList issued gift cards. Filter by status: active | redeemed | voided | expired.
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"active",
"redeemed",
"voided",
"expired"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}lookup_gift_card
gift_cards:readFetch a single gift card by id.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}redeem_gift_card
gift_cards:redeemRedeem (decrement) a gift card by an amount in cents. Returns the updated balance.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"amount_cents": {
"type": "integer",
"minimum": 1,
"maximum": 100000000
},
"note": {
"type": "string",
"maxLength": 280
}
},
"required": [
"id",
"amount_cents"
]
}list_tickets
tickets:readList issued tickets. Filter by `status` (active | redeemed | voided) and/or `event_id`.
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"active",
"redeemed",
"voided"
]
},
"event_id": {
"type": "string",
"format": "uuid"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}get_ticket
tickets:readFetch a single ticket by id.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}redeem_ticket
tickets:redeemRecord one scan against a ticket. Single-entry tickets flip `redeemed_at`; multi-entry passes (max_uses > 1) append one row to the redemption log per call. Throws if exhausted, voided, or cross-tenant. Response includes `uses_after` / `remaining` so multi-entry callers can show live state.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}list_bookings
bookings:readList experience bookings. Filter by `status` (active | redeemed | voided) and/or `slot_id`.
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"active",
"redeemed",
"voided"
]
},
"slot_id": {
"type": "string",
"format": "uuid"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}get_booking
bookings:readFetch a single booking by id.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}redeem_booking
bookings:redeemRecord one scan against a booking. Single-use bookings flip `redeemed_at` and admit the party; multi-pass walk-in bookings (max_uses > 1) append one row to the redemption log per call. Throws if exhausted, voided, or cross-tenant. Response includes `uses_after` / `remaining` so multi-pass callers can show live state.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}list_vouchers
vouchers:readList issued vouchers. Filter by `status` (active | redeemed | voided | expired) and/or `product_id`. Each result includes `max_uses`, `uses_after`, and `remaining` so multi-use packs (e.g. 5-class yoga pass) show their live usage without a follow-up call.
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"active",
"redeemed",
"voided",
"expired"
]
},
"product_id": {
"type": "string",
"format": "uuid"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}get_voucher
vouchers:readFetch a single voucher by id. Returns `max_uses`, `uses_after`, and `remaining` so the caller can render multi-use state.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}list_voucher_redemptions
vouchers:readList the redemption history for one voucher, newest first. Useful for auditing multi-use packs (5-class yoga pass, 10 coffees) where each scan appends a row. Single-use vouchers will have at most one entry.
{
"type": "object",
"properties": {
"voucher_id": {
"type": "string",
"format": "uuid"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
},
"required": [
"voucher_id"
]
}redeem_voucher
vouchers:redeemRecord one redemption against a voucher. Single-use passes accept exactly one scan; multi-use packs accept up to `max_uses`. Throws on `voided`, `expired`, or `exhausted` (max_uses reached). Returns the updated voucher plus the redemption event row and `was_first` (true on the first scan of a multi-use pack).
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}list_memberships
memberships:readList the merchant's memberships. Filter by `status`.
{
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"active",
"trialing",
"past_due",
"canceled",
"incomplete"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}get_membership
memberships:readFetch a single membership by id. Includes a `usage` block when the plan sets a per-period check-in cap (e.g. '5 classes a month'); omitted for unlimited plans.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
}
},
"required": [
"id"
]
}checkin_membership
memberships:checkinRecord a membership check-in (gym visit, studio drop-in). For plans with a per-period cap (e.g. '5 classes a month'), throws `exhausted` when the allowance is spent — refills automatically when Stripe advances the billing period on renewal. Returns the check-in row plus a live `usage` block on capped plans.
{
"type": "object",
"properties": {
"id": {
"type": "string",
"format": "uuid"
},
"note": {
"type": "string",
"maxLength": 280
}
},
"required": [
"id"
]
}lookup_redemption_token
gift_cards:readResolve a redemption token across artifact types. Pass a gift card code (XXXX-XXXX-XXXX) or a prefixed QR token (T-… ticket, B-… booking, V-… voucher, M-… membership). Returns the artifact under an `object` field naming its kind.
{
"type": "object",
"properties": {
"token": {
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"token"
]
}list_webhook_endpoints
webhooks:readList the merchant's registered webhook endpoints.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
}
}
}