Skip to content

check_availability: skill contract

check_availability returns real-time stock for one SKU. Only sku and in_stock are required in the response; every other field is optional.

Machine-readable: /skills/v1/check_availability.request.schema.json

FieldTypeRequiredNotes
skustringyesYour SKU. 1–256 chars.
{
"additionalProperties": false,
"properties": {
"sku": {
"maxLength": 256,
"minLength": 1,
"type": "string"
}
},
"required": ["sku"],
"type": "object"
}
{
"skill_id": "check_availability",
"site_id": "01EXAMPLE00000000000000000",
"arguments": {
"sku": "beans_medium_12oz"
},
"observed_at": "2026-07-05T18:22:15.140Z",
"nonce": "01K1EXAMPLE0000000000000000"
}

Machine-readable: /skills/v1/check_availability.response.schema.json

FieldTypeRequiredNotes
skustringyesEcho the requested SKU.
in_stockbooleanyestrue when at least one unit is available.
quantity_on_handintegernoNon-negative. Omit if you do not want to expose a precise count.
estimated_ship_daysintegernoNon-negative. Business days until dispatch.
fulfillment_locationstringno1–256 chars. Merchant-defined identifier (warehouse code, city, region).

If the SKU is not in your catalog, return { "sku": "<requested>", "in_stock": false }, or 404 with an empty body. Do not return any other error status: it counts as a failed call, and 3 failures in a row mark the skill UNREACHABLE.

{
"additionalProperties": false,
"properties": {
"estimated_ship_days": { "minimum": 0, "type": "integer" },
"fulfillment_location": { "maxLength": 256, "minLength": 1, "type": "string" },
"in_stock": { "type": "boolean" },
"quantity_on_hand": { "minimum": 0, "type": "integer" },
"sku": { "maxLength": 256, "minLength": 1, "type": "string" }
},
"required": ["sku", "in_stock"],
"type": "object"
}
{
"sku": "beans_medium_12oz",
"in_stock": true,
"quantity_on_hand": 42,
"estimated_ship_days": 1,
"fulfillment_location": "US-EAST-WAREHOUSE"
}

A response that does not match the schema is not passed to the agent and counts as a failed call; 3 failures in a row mark the skill UNREACHABLE. Common causes:

  • An extra field, such as per-variant data or an internal bin location.
  • A number sent as a string, such as "quantity_on_hand": "42".

Check the X-Sill-Signature header on every request before answering. The scheme is the same for every skill; see Verify the signature for tested TypeScript, Python and Go code.