Live sandbox · /api/mcp
Don’t watch a demo. Operate the engine.
Lead keyless: agentic.readiness_probe finishes without a key and carries a Store Guard $149 CTA — not an attested grade. Then dispatch.estimate. dispatch.quote stays keyed: mint at POST /api/mcp/oauth/register or write [email protected]. The live panel below fires the same tools against production. No order is committed.
Keyless loop · HVAC · TX · routine
Public estimate: $147.00
dispatch.estimate publishes this billed figure. The $29.00/hr BLS wage is the input, not the price. This is a rate-card baseline — not a contractor match and not a bindable quote. Observed auction rate: not published yet — the labor rate index is empty or below the sample floor.
- Start keyless with
agentic.readiness_probe— finishes, Store Guard $149 CTA, not an attested grade. - Estimate is keyless. Same billed total on MCP for this fixture.
dispatch.quotestays keyed. Without a credential the engine returns HTTP 401 plusWWW-Authenticate— that is the live contract.- Mint a machine credential at
POST /api/mcp/oauth/registerhttps://steadywrk.app/api/mcp/oauth/register, thenPOST /api/mcp/oauth/token. [email protected] still works for humans.
next: POST /api/dispatch/v1/quote with x-api-key for a live contractor match
Honest path only: agentic.readiness_probe (keyless, $149 CTA) + dispatch.evals + dispatch.estimate (keyless billed rate-card, estimated:true). Quote and order stay keyed — POST /api/mcp/oauth/register or [email protected]. No order is committed. Recompute the scorecard at /evals. Same endpoint from your own agent: https://steadywrk.app/api/mcp. Synthetic friction fixtures (401 challenge, rate-limit, estimate vs quote, EN/AR) live at /sandbox and /api/public/friction— generated, no people, not a live census.