{"openapi":"3.1.0","info":{"title":"Rehearsal API","version":"1.0.0","description":"Tradability passports and protected swaps for tokenized stocks on Solana. No key needed. The same functions are available as MCP tools at /api/mcp."},"servers":[{"url":"https://rehearsalhq.xyz"}],"paths":{"/api/v1/stocks":{"get":{"summary":"List covered tokenized stocks","parameters":[],"responses":{"200":{"description":"JSON"}}}},"/api/v1/passport":{"get":{"summary":"Tradability passport: structure, price evidence, exit capacity, fill vs fair, decision","parameters":[{"name":"symbol","in":"query","required":true,"description":"NVDAx, SPYx, OPENAI, ticker or mint","schema":{"type":"string"}},{"name":"usd","in":"query","required":false,"description":"Order size in USD","schema":{"type":"number","default":1000}},{"name":"side","in":"query","required":false,"description":"buy or sell","schema":{"type":"string","enum":["buy","sell"]}}],"responses":{"200":{"description":"JSON"}}}},"/api/v1/check":{"get":{"summary":"Fast price check and decision","parameters":[{"name":"symbol","in":"query","required":true,"description":"Token","schema":{"type":"string"}},{"name":"usd","in":"query","required":true,"description":"Order size in USD","schema":{"type":"number"}},{"name":"side","in":"query","required":false,"description":"buy or sell","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON"}}}},"/api/v1/swap":{"post":{"summary":"Build a protected swap (unsigned v0 transaction). Minimum output pinned to fair value ± maxGapBps; terms written to a memo.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["symbol","usd","wallet"],"properties":{"symbol":{"type":"string"},"usd":{"type":"number"},"side":{"type":"string","enum":["buy","sell"]},"wallet":{"type":"string"},"maxGapBps":{"type":"number"},"simulate":{"type":"boolean"}}}}}},"responses":{"200":{"description":"transaction (base64), lastValidBlockHeight, receipt"},"422":{"description":"Refused: halted, no trustworthy reference, or the market is already past your limit"}}}},"/api/v1/certificate":{"get":{"summary":"Verify a protected swap's receipt against the chain","parameters":[{"name":"sig","in":"query","required":true,"description":"Transaction signature","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON"}}}},"/api/v1/policy":{"get":{"summary":"Which price each trade is judged against, by market state","parameters":[],"responses":{"200":{"description":"JSON"}}}},"/api/v1/market":{"get":{"summary":"Sessions, halts, breakers, 24/7 perp prices, cross rules","parameters":[{"name":"symbol","in":"query","required":false,"description":"Optional xStock symbol or ticker","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON"}}}},"/api/v1/prestocks":{"get":{"summary":"PreStocks board: implied valuation, premium to mark, break-even listing value, float","parameters":[],"responses":{"200":{"description":"JSON"}}}},"/api/v1/report":{"get":{"summary":"Execution-quality report (bots excluded, ZK-proven)","parameters":[{"name":"symbol","in":"query","required":false,"description":"Optional token","schema":{"type":"string"}}],"responses":{"200":{"description":"JSON"}}}}}}