{"openapi":"3.1.0","info":{"title":"STEADYWRK Dispatch API","version":"1.0.0","summary":"STEADYWRK is a foundry and Studio in Aqaba, Jordan: one operating system, multiple ventures. Dispatch is a capability of the foundry, not the identity.","description":"The public dispatch capability of STEADYWRK. The evals and trade-index reads are public and require no key. Quote accepts a provisioned key through x-api-key or a scoped OAuth token through Authorization: Bearer. Direct REST order creation requires the provisioned key in x-api-key; self-serve OAuth tokens receive HTTP 402. MCP tools are available at POST /api/mcp. Read the evaluation document's per-field provenance and methodology; it is self-reported, not an independent audit or SLA. Also exposes POST /api/agentic-commerce/probe (free readiness snapshot → Store Guard).","contact":{"name":"STEADYWRK","url":"https://steadywrk.app/build"}},"servers":[{"url":"https://steadywrk.app","description":"Production"}],"externalDocs":{"description":"What STEADYWRK is, and the registry listing for this server","url":"https://steadywrk.app/what-is-steadywrk"},"tags":[{"name":"dispatch-public","description":"Public, no-auth reads. Safe to call with zero setup."},{"name":"dispatch-write","description":"Key-gated dispatch writes (ApiKeyAuth via x-api-key)."},{"name":"agentic-commerce","description":"Free readiness probe snapshots. Attested bilingual grades are the Store Guard SKU."}],"paths":{"/api/agentic-commerce/probe":{"post":{"operationId":"agenticCommerceProbe","summary":"Free agentic commerce readiness probe","description":"Multi-surface snapshot (UCP/ACP discovery, product schema, robots, answer-engine maps). Not an attested Store Guard grade and not a merchant UCP endpoint. Rate-limited; no API key.","tags":["agentic-commerce"],"security":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"Public storefront URL or domain","maxLength":255}}}}}},"responses":{"200":{"description":"Probe report with grade, score, and checks.","content":{"application/json":{"schema":{"type":"object"}}}},"400":{"description":"Invalid URL."},"429":{"description":"Rate limit exceeded."}}}},"/api/dispatch/v1/quote":{"post":{"operationId":"dispatchQuote","summary":"Dispatch quote","description":"Request a field-service quote by trade, location, and urgency. Returns availability and quote details when available. Accepts a provisioned integration key through x-api-key or a scoped self-serve OAuth token through Authorization: Bearer. MCP also accepts the provisioned key through Authorization: Bearer. Obtain a self-serve token through POST /api/mcp/oauth/register, then POST /api/mcp/oauth/token with grant_type=client_credentials. Anonymous callers receive HTTP 401 with WWW-Authenticate. Public modeled pricing is available through dispatch.estimate.","tags":["dispatch-write"],"security":[{"ApiKeyAuth":[]},{"BearerAuth":[]}],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key."},"422":{"description":"Validation failed."},"429":{"description":"Rate limit exceeded."},"503":{"description":"Dispatch API not configured on the server."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["trade","location"],"properties":{"trade":{"type":"string","description":"Trade code (plumbing, electrical, HVAC, etc.)"},"location":{"type":"object","required":["state"],"properties":{"state":{"type":"string","minLength":2,"maxLength":2},"zip":{"type":"string","maxLength":10},"city":{"type":"string","maxLength":255}}},"urgency":{"type":"string","enum":["emergency","urgent","routine","scheduled"],"default":"routine"},"nte_cents":{"type":"integer","minimum":1},"description":{"type":"string","maxLength":2000}}}}}}}},"/api/dispatch/v1/estimate":{"post":{"operationId":"dispatchEstimate","summary":"Dispatch estimate (public rate card)","description":"Public modeled field-service price estimate using cited BLS wage data and disclosed model assumptions. Returns wage_basis and billed_estimate so callers can inspect the calculation and geographic basis. The response identifies estimates based on a national baseline and distinguishes model assumptions from observed prices. Use dispatch.quote with an accepted credential to request a quote. No API key required.","tags":["dispatch-public"],"security":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["trade","location"],"properties":{"trade":{"type":"string","description":"Trade code (plumbing, electrical, HVAC, etc.)"},"location":{"type":"object","required":["state"],"properties":{"state":{"type":"string","minLength":2,"maxLength":2},"zip":{"type":"string","maxLength":10},"city":{"type":"string","maxLength":255}}},"urgency":{"type":"string","enum":["emergency","urgent","routine","scheduled"],"default":"routine"}}}}}}}},"/api/dispatch/v1/order":{"post":{"operationId":"dispatchOrder","summary":"Dispatch order","description":"Create a field-service order and return its status URL. HTTP 201 returns a created order; HTTP 202 returns an order accepted_pending_fulfilment with fulfilled=false. Order creation requires a provisioned integration key through x-api-key. MCP also accepts that key through Authorization: Bearer; direct REST order creation requires x-api-key. A self-serve OAuth token authenticates but is not entitled to create orders: HTTP 402 payment_required (JSON-RPC -32002 over MCP). Anonymous callers receive HTTP 401 with WWW-Authenticate. Provisioning contact: hello@steadywrk.app.","tags":["dispatch-write"],"security":[{"ApiKeyAuth":[]}],"responses":{"201":{"description":"Order created. Read its returned status and tracking URL.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OrderResponse"},{"properties":{"fulfilled":{"const":true}}}]}}}},"202":{"description":"Order accepted; fulfilment is pending.","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/OrderResponse"},{"required":["fulfilment"],"properties":{"fulfilled":{"const":false},"order":{"properties":{"status":{"const":"accepted_pending_fulfilment"}}},"fulfilment":{"properties":{"assigned":{"const":false}}}}}]}}}},"401":{"description":"Missing or invalid API key."},"402":{"description":"Credential authenticated but is not provisioned for order creation.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderEntitlementError"}}}},"422":{"description":"Validation failed."},"429":{"description":"Rate limit exceeded."},"503":{"description":"Dispatch API not configured on the server."}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["trade","location","description"],"properties":{"trade":{"type":"string"},"location":{"type":"object","required":["state"],"properties":{"state":{"type":"string","minLength":2,"maxLength":2},"zip":{"type":"string","maxLength":10},"city":{"type":"string","maxLength":255},"address":{"type":"string","maxLength":1000},"name":{"type":"string","maxLength":500}}},"urgency":{"type":"string","enum":["emergency","urgent","routine","scheduled"],"default":"routine"},"nte_cents":{"type":"integer","minimum":1},"description":{"type":"string","minLength":1,"maxLength":5000},"callback_url":{"type":"string","format":"uri"},"reference_id":{"type":"string","maxLength":255}}}}}}}},"/api/dispatch/analytics/evals":{"get":{"operationId":"dispatchEvals","summary":"Dispatch evals (public)","description":"Return the public evaluation document for a selected rolling window. Consult its per-field provenance and methodology to distinguish self-reported estimates, measurements, and unavailable fields. It is not an independent audit or a service-level guarantee. No API key required.","tags":["dispatch-public"],"security":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}},"parameters":[{"name":"period","in":"query","required":false,"schema":{"type":"string","enum":["rolling_7d","rolling_30d","rolling_90d"],"default":"rolling_30d"}}]}},"/api/dispatch/index":{"get":{"operationId":"dispatchIndex","summary":"Dispatch trade index (public)","description":"Return the catalog of 8 dispatch trade verticals. Per trade: the BLS OES hourly WAGE (medianRateDollars/p25/p75 — what a technician earns, NOT a price) alongside billedHourlyRateRoutineDollars, what a buyer pays hourly at routine urgency, derived by the same wage→billed transform dispatch.estimate uses. See the wage_vs_billed block. No API key required.","tags":["dispatch-public"],"security":[],"responses":{"200":{"description":"Success.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Provisioned integration key. Required for direct REST order creation; also accepted for quoting."},"BearerAuth":{"type":"http","scheme":"bearer","description":"Scoped self-serve OAuth token for quoting. These tokens receive HTTP 402 on order creation."}},"schemas":{"OrderResponse":{"type":"object","required":["created","accepted","fulfilled","order","tracking"],"properties":{"created":{"type":"boolean","const":true},"accepted":{"type":"boolean","const":true},"fulfilled":{"type":"boolean"},"order":{"type":"object","required":["id","status","trade","location","urgency","quoted_cost_cents","assigned_contractor_ref","estimated_response_minutes","created_at"],"properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending_dispatch","accepted_pending_fulfilment"]},"trade":{"type":"string"},"location":{"type":"object","required":["state"],"properties":{"state":{"type":"string"}}},"urgency":{"type":"string","enum":["emergency","urgent","routine","scheduled"]},"quoted_cost_cents":{"type":["integer","null"]},"quoted_cost_usd":{"type":["string","null"]},"assigned_contractor_ref":{"type":["string","null"]},"estimated_response_minutes":{"type":["integer","null"]},"created_at":{"type":"string","format":"date-time"}}},"fulfilment":{"type":"object","required":["assigned","reason","detail","escalation_contact"],"properties":{"assigned":{"type":"boolean","const":false},"reason":{"type":"string"},"detail":{"type":"string"},"escalation_contact":{"type":"string"}}},"tracking":{"type":"object","required":["status_url"],"properties":{"status_url":{"type":"string","format":"uri"},"auth":{"type":"string"}}}}},"OrderEntitlementError":{"type":"object","required":["error","message","entitled_credential","provisioning_contact","free_alternatives"],"properties":{"error":{"type":"string","const":"payment_required"},"message":{"type":"string"},"entitled_credential":{"type":"string"},"provisioning_contact":{"type":"string"},"free_alternatives":{"type":"array","items":{"type":"string"}}}}}}}