Skip to main content
Every wire failure comes back as the error result kind; run() never throws for them. On the blocking route the SDK retries a retryable failure once before resolving; streamed turns resolve without a retry. Schedule any second attempt for later and honour retryAfterMs when it is set.

Lifetimes

status() reports health: "expiring_soon" from 14 days out on either 90-day clock.

Rate limits

The budgets are deploy configuration, so no figures here. The keying is the contract: Per grant is the one to pace: each customer budgets separately, so the traffic that hits it is yours, and one customer can never starve another. A 429 surfaces as rate_limited.

Error codes

result.code is a closed set. deployment_paused and deployment_incomplete never succeed on retry. Alert yourself rather than asking the customer to fix them mid-conversation.

The served contract

HTTP statuses and wire result names live in the HTTP API. The spec itself is served on the API origin and parity-tested against the router on every build, so a route it does not describe does not exist:
The tool definition is served the same way, versioned by date: