A valid request URL is required to generate request examples{
"skus": [
{
"sku": "emulator",
"billing": "subscription",
"price": {
"kind": "flat",
"amountMinor": 123,
"currency": "<string>",
"period": {
"interval": "day",
"count": 2
}
},
"shipsNow": true,
"stock": "in_stock",
"maxQuantity": 2,
"models": [
{
"id": "<string>",
"name": "<string>",
"kind": "standard",
"shipsNow": true,
"androidVersion": "<string>",
"spec": "<string>",
"popular": true,
"brand": "<string>",
"price": {
"kind": "flat",
"amountMinor": 123,
"currency": "<string>",
"period": {
"interval": "day",
"count": 2
}
},
"quoteId": "<string>",
"defaultShipsNow": true,
"backorderable": true,
"regions": [
{
"code": "<string>",
"shipsNow": true
}
]
}
],
"available": 1,
"delivery": "now"
}
]
}{
"error": {
"code": "unauthorized",
"reason": "missing_credentials",
"hint": "<string>"
}
}{
"error": {
"code": "rate_limited",
"message": "<string>"
}
}{
"error": {
"code": "admission_unavailable",
"message": "<string>"
}
}List what can be bought and what it costs
The price list, one entry per pair of sku and billing mode, so that a caller drawing a purchase screen has a number to show before the customer commits. Prices are PRE TAX and come from the payment provider’s own price objects; this service reports them and never computes one.
Any signed in principal in the organisation may read it, of either role, because a member who is allowed to buy has to be allowed to see what things cost. The admin rule lives on the purchase itself.
A pair this deployment holds no price for is ABSENT from the list rather than present without a price, so the list is exactly what can be bought here today. Buying a pair that is not in it answers 503.
Each entry says whether it ships today as stock, a verdict and never a count. The shelf is read once per request for the whole list, and a shelf that cannot be read makes every entry unknown rather than failing the list: prices that were read are still shown.
Nothing in the answer is specific to your organisation.
Hosted deployments only. A local checkout does not mount this route, so calling it there is a 404.
A valid request URL is required to generate request examples{
"skus": [
{
"sku": "emulator",
"billing": "subscription",
"price": {
"kind": "flat",
"amountMinor": 123,
"currency": "<string>",
"period": {
"interval": "day",
"count": 2
}
},
"shipsNow": true,
"stock": "in_stock",
"maxQuantity": 2,
"models": [
{
"id": "<string>",
"name": "<string>",
"kind": "standard",
"shipsNow": true,
"androidVersion": "<string>",
"spec": "<string>",
"popular": true,
"brand": "<string>",
"price": {
"kind": "flat",
"amountMinor": 123,
"currency": "<string>",
"period": {
"interval": "day",
"count": 2
}
},
"quoteId": "<string>",
"defaultShipsNow": true,
"backorderable": true,
"regions": [
{
"code": "<string>",
"shipsNow": true
}
]
}
],
"available": 1,
"delivery": "now"
}
]
}{
"error": {
"code": "unauthorized",
"reason": "missing_credentials",
"hint": "<string>"
}
}{
"error": {
"code": "rate_limited",
"message": "<string>"
}
}{
"error": {
"code": "admission_unavailable",
"message": "<string>"
}
}Authorizations
The control surface credential. Send Authorization: Bearer <token>.
Two kinds of token are accepted and they are told apart by shape, not by a separate header. A token beginning pbk_ is an org scoped API key, whose public half and secret half are generated together and of which only a hash of the secret is ever stored; anything else is treated as an OAuth 2.1 access token and verified against the authorization server's keys.
Both resolve to the same context: an org, a principal and a set of scopes. Nothing downstream branches on which channel you used, with one deliberate exception, key management, which requires a signed-in person so that a key can never mint another key.
Scopes are enforced when MCP tools are REGISTERED rather than when they are called, so a tool your credential cannot use is absent from tools/list rather than refused mid gesture.
Response
What this deployment sells.
One entry per purchasable pair of sku and billing mode. A pair this deployment holds no price for is absent rather than present without a price: a card a caller cannot put a number on is one it cannot honestly offer. The robot arm skus are never listed with payg: that rate stays on the published rate card and is not on sale yet.
Show child attributes
Show child attributes