{"server":"stackbroker-mcp","version":"0.1.0","transport":"streamable-http","protocol":"MCP Streamable HTTP via @modelcontextprotocol/sdk","tools":["join_consumer_pilot","discover_service","get_service","route_request","audit_route","submit_verification_result","get_megaboard","list_stacks","get_stack","quote_slots","place_standing_order","order_status","cancel_order","confirm_fill","publish_capacity"],"tool_descriptors":[{"name":"join_consumer_pilot","description":"Save private pilot interest for follow-up, with explicit contact consent. Not a booking, standing order or fee authorization. Do not include credentials, payment or health details.","inputSchema":{"type":"object","properties":{"role":{"type":"string","enum":["consumer","agent_builder","service_provider"]},"name":{"type":"string","minLength":1,"maxLength":100},"email":{"type":"string","format":"email","maxLength":160},"organization":{"type":"string","maxLength":120,"default":""},"metro":{"type":"string","enum":["bay_area","new_york","austin","seattle","los_angeles","boston","other"]},"category":{"type":"string","enum":["salon_barber","auto_care","dental","home_services","other"]},"note":{"type":"string","maxLength":350,"default":""},"contact_consent":{"type":"boolean","const":true}},"required":["role","name","email","metro","category","contact_consent"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"discover_service","description":"Search agent-callable services by capability, budget, payment rail, latency, policy flags, and minimum attestation tier.","inputSchema":{"type":"object","properties":{"capability":{"type":"string","minLength":1,"description":"Capability slug, for example web_retrieval."},"max_price_usdc":{"type":"number","minimum":0},"max_latency_ms":{"type":"integer","exclusiveMinimum":0},"payment_rail":{"type":"string","enum":["x402","api_key","oauth","stripe","circle","fireblocks","connector","free"]},"min_attestation_tier":{"type":"string","enum":["seed","probed","verified","attested"],"description":"Minimum evidence tier a candidate must meet (seed < probed < verified < attested)."},"exclude_policy_flags":{"type":"array","items":{"type":"string","enum":["browser_control","external_network","stores_data","pii_processing","code_execution","financial_action"]}},"limit":{"type":"integer","minimum":1,"maximum":50}},"required":["capability"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_service","description":"Return one normalized Stackbroker service card by service_id.","inputSchema":{"type":"object","properties":{"service_id":{"type":"string","minLength":1}},"required":["service_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"route_request","description":"Rank candidate services for a task, apply policy, and return a selected service plus audit_id.","inputSchema":{"type":"object","properties":{"task":{"type":"string","minLength":1},"capability":{"type":"string","minLength":1},"policy":{"type":"object","properties":{"max_price_usdc":{"type":"number","minimum":0},"max_latency_ms":{"type":"integer","exclusiveMinimum":0},"allowed_payment_rails":{"type":"array","items":{"type":"string","enum":["x402","api_key","oauth","stripe","circle","fireblocks","connector","free"]}},"blocked_policy_flags":{"type":"array","items":{"type":"string","enum":["browser_control","external_network","stores_data","pii_processing","code_execution","financial_action"]}},"require_attestation_tier":{"type":"string","enum":["seed","probed","verified","attested"]}},"additionalProperties":false},"agent_id":{"type":"string"}},"required":["task","capability"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"audit_route","description":"Retrieve the persisted audit event for a prior route_request audit_id.","inputSchema":{"type":"object","properties":{"audit_id":{"type":"string","minLength":1}},"required":["audit_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"submit_verification_result","description":"Submit structured outcome telemetry for a routed service call.","inputSchema":{"type":"object","properties":{"audit_id":{"type":"string","minLength":1},"agent_id":{"type":"string","minLength":1},"capability":{"type":"string","minLength":1},"service_id":{"type":"string","minLength":1},"quoted_price_usdc":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"default":null},"actual_price_usdc":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}],"default":null},"latency_ms":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null},"schema_conformance":{"type":"string","enum":["pass","fail","partial","unknown"],"default":"unknown"},"parse_repair_needed":{"type":"boolean","default":false},"retry_count":{"type":"integer","minimum":0,"default":0},"downstream_task_success":{"type":"string","enum":["yes","no","partial","unknown"],"default":"unknown"},"uniqueness_vs_free_sources":{"type":"string","enum":["high","medium","low","none","unknown"],"default":"unknown"},"outcome":{"type":"string","enum":["used","discarded","errored","unknown"],"default":"unknown"},"recommendation":{"type":"string","enum":["recommend","neutral","avoid"],"default":"neutral"},"operator_note":{"type":"string","maxLength":2000}},"required":["audit_id","agent_id","capability","service_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_megaboard","description":"Return the Stackbroker Megaboard: a neutral, evidence-labeled ranking of agent-callable services synthesized from multiple public catalogs. Filter by capability (e.g. x402) and limit.","inputSchema":{"type":"object","properties":{"capability":{"type":"string","description":"Capability filter, for example x402 or search."},"limit":{"type":"integer","minimum":1,"maximum":100}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"list_stacks","description":"List Stackbroker Stacks: curated, policy-bounded service bundles per agent persona (researcher, coder, designer, investor) an agent can run for low-latency pre-flight.","inputSchema":{"type":"object","properties":{},"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"get_stack","description":"Return one Stack with its policy profile and live resolved capabilities. Pass bundle=true for the cacheable bundle an agent runs locally.","inputSchema":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"description":"Stack slug, e.g. researcher."},"bundle":{"type":"boolean"}},"required":["slug"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"quote_slots","description":"Free quote of bookable appointment slots at a synthetic capacity provider (dental, salon, auto service) for a window and quantity, with lane (off_peak / standard / peak) and price delta. Spike under #107; fictional providers only.","inputSchema":{"type":"object","properties":{"provider_key":{"type":"string","minLength":1},"window":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"$ref":"#/properties/window/properties/start"}},"required":["date","start","end"],"additionalProperties":false},"quantity":{"type":"integer","minimum":1,"maximum":20}},"required":["window","quantity"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"place_standing_order","description":"Declare demand once instead of polling: windows, quantity, max peak premium, minimum off-peak discount, approved total, expiry. Matches immediately when capacity fits, otherwise waits for a provider publish. agent_id is an attribution label bound to your API key's organization; it requires an authenticated request and never authorizes anything on its own.","inputSchema":{"type":"object","properties":{"provider_key":{"type":"string","minLength":1},"category":{"type":"string","minLength":1},"windows":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"start":{"type":"string","pattern":"^\\d{2}:\\d{2}$"},"end":{"$ref":"#/properties/windows/items/properties/start"}},"required":["date","start","end"],"additionalProperties":false},"minItems":1,"maxItems":20},"quantity":{"type":"integer","minimum":1,"maximum":20},"max_premium_usdc":{"type":"number","minimum":0},"min_discount_pct":{"type":"number","minimum":0,"maximum":100,"default":0},"approved_total_usdc":{"type":"number","minimum":0},"expires_at":{"type":"string","format":"date-time"},"agent_id":{"type":"string","minLength":1},"idempotency_key":{"type":"string","minLength":1,"maxLength":128}},"required":["windows","quantity","max_premium_usdc","expires_at"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"order_status","description":"Return a standing order, its active hold, and its fill receipt (audit_id readable via audit_route). Authorized by the verified organization of your API key; any other principal gets not_found.","inputSchema":{"type":"object","properties":{"order_id":{"type":"string","minLength":1}},"required":["order_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"cancel_order","description":"Cancel a standing order and release its hold. A filled order cannot be cancelled in the spike. Authorized by the verified organization of your API key.","inputSchema":{"type":"object","properties":{"order_id":{"type":"string","minLength":1}},"required":["order_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"confirm_fill","description":"Confirm a held slot: the fill is booked with the provider and a receipt is written through the audit chain. Authorized by the verified organization of your API key; rate-limited per principal; replaying the same order+hold returns the original receipt, never a second fill. status 'pending' (reason commit_pending) is NOT terminal: a concurrent confirm of this hold is mid-write; retry the same order_id + hold_id. Provider confirmation: status 'filled' means the provider confirmed (receipt.fill_status confirmed; receipt.simulated = true only when the deployment runs the synthetic confirmer, never for paid fills by default). status 'rejected' with reason provider_rejected is terminal and carries the receipt: the provider refused; a settled fee is reversed (receipt.fee_settlement reversed_x402 with reversal.tx_hash) or owed back to you (reversal_pending: operator refund). status 'pending' with reason awaiting_provider is NOT terminal: the provider gave no answer (timeout / unreachable), no receipt exists, the booking may or may not exist, a settled fee is held, and nothing is auto-confirmed; retry the same order_id + hold_id to ask the provider again. Demand-side fee: in the default stub mode nothing is charged (fee_settlement = stub_not_charged). When the deployment runs DEMAND_FEE_MODE=x402, a fill costs the fee in USDC via x402: call without payment_signature to receive status 'rejected', reason 'payment_required' and a `challenge` (x402 PaymentRequired, same object as the HTTP 402 PAYMENT-REQUIRED header); pay it with your x402 client and call again with payment_signature = the PAYMENT-SIGNATURE value. Payment is verified before the fill commits and settled only after it; the receipt then carries fee_settlement = settled_x402 and settlement.tx_hash. Paid fills require an API key (anonymous callers get payment_requires_credential). reason settlement_failed / settlement_unavailable (status pending) mean the fill committed but the fee did not settle: retry the same order_id + hold_id with a payment_signature (the SAME one after settlement_unavailable).","inputSchema":{"type":"object","properties":{"order_id":{"type":"string","minLength":1},"hold_id":{"type":"string","minLength":1},"payment_signature":{"type":"string","minLength":1}},"required":["order_id","hold_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"publish_capacity","description":"Provider opt-in: upsert appointment slots (and optionally the price curve). This is the event that re-runs matching for open standing orders on the provider. provider_secret is the provider shared secret issued by Stackbroker; it is required whenever the deployment has one configured and always when fills are paid (DEMAND_FEE_MODE=x402).","inputSchema":{"type":"object","properties":{"provider_key":{"type":"string","minLength":1},"slots":{"type":"array","items":{"type":"object","properties":{"slot_id":{"type":"string","minLength":1},"starts_at":{"type":"string","format":"date-time"},"duration_minutes":{"type":"integer","exclusiveMinimum":0,"default":60},"capacity":{"type":"integer","minimum":0},"max_quantity":{"type":"integer","exclusiveMinimum":0}},"required":["slot_id","starts_at","capacity","max_quantity"],"additionalProperties":false},"maxItems":500},"price_curve":{"type":"object","properties":{"off_peak":{"type":"object","properties":{"hours":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23}},"discount_pct":{"type":"number","minimum":0,"maximum":100}},"additionalProperties":false},"peak":{"type":"object","properties":{"hours":{"type":"array","items":{"type":"integer","minimum":0,"maximum":23}},"premium_usdc_per_unit":{"type":"number","minimum":0},"premium_cap_usdc":{"type":"number","minimum":0}},"additionalProperties":false}},"additionalProperties":false},"provider_secret":{"type":"string","minLength":1}},"required":["provider_key","slots"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]}